Technology

Game development taken seriously!!!
Desenvolvimento de Jogos levado a sério!!!

05 Novembro 2009

O que é um NPC?


Olá pessoal hoje venho falar para vocês um pouco sobre um dos mais importantes componentes de um jogo que é o NPC. Este é o maior foco dos meus estudos em jogos, desta forma vou explicar um pouco mais sobre este componente.

Os NPCs (NPC – Non-player Character) são fundamentais em um jogo. Eles representam os personagens que vão auxiliar e serem combatidos pelo jogador. Neste contexto temos como NPCs vendedores e monstros que estão presentes no jogo e todos os outros personagens controlados pelo computador.

O grande desafio dos desenvolvedores de jogos é criar um NPC o mais real possível. Este deve ter comportamento o mais próximo possível do comportamento humano, sendo capaz de interagir com os jogadores sem que estes percebam que estão conversando com um robô.

06 Outubro 2009

Continuação do blog

Olá galera estou há um bom tempo sem postar nada aqui no blog. Mudança de emprego e monografia consomem muito tempo.

Porem sempre que possível estarei postando aqui para vocês.

Atualmente estou envolvido na criação de um site para a minha banda kalambal.com estou bolando algumas coisas legais para postar aqui, sobre arquitetura de softwares, desenvolvimento Web, desenvolvimento de jogos padrões de projetos e outros assuntos que estão envolvidos a desenvolvimento de sistemas.

Esta semana estarei participando do SBGames 2009, postarei novidades aqui.

Então aguardem novidades.

07 Julho 2009

Agentes Inteligentes com Capacidade de Aprendizado

Ola pessoal, hoje trago para vocês a apresentação que fiz para a banca intermediaria do meu Trabalho de Diplomação, espero que vocês gostem.

O tema é muito abrangente e esta bem simplificado, nos próximos posts eu vou explicando mais detalhadamente o conteúdo contido.

Já estou testando o XNA 3.1 em breve vou começar a usar a nova IDE do Visual Studio 2010, espero poder postar mais novidades para vocês em breve.

Baixe aqui

15 Junho 2009

Game Fureies

Ola pessoal volto ao blog depois de uma longa temporada sem postar nada aqui para vocês. Nos últimos tempos estive dedicado em alguns projetos, entre eles o desenvolvimento da minha monografia e de um game utilizando as tecnologias que citei no post anterior.

Então hoje trago-lhes alguns detalhes sobre este game que estou desenvolvendo. Este é um jogo simples para XBOX 360 seu nome é Furies, basicamente é um jogo 2D puzzle, abaixo segue um vídeo de como o jogo ficara ao seu termino.




16 Abril 2009

XNA Game Studio

Ola pessoal hoje venho apresentar ha vocês uma das ferramentas que estou utilizando para o desenvolvimento de jogos. Atualmente estou utilizando o Visual Studio 2008 juntamente com o XNA Game Studio 3.0.

O Visual Studio é uma poderosa ferramenta para desenvolvimento fornecida pela Microsoft. A versão Express desta ferramenta pode ser baixada em Visual Studio 2008.

O XNA Game Studio 3.0 também é uma ferramenta fornecida pela Microsoft gratuitamente em XNA Game Studio.

O XNA é um Framework de desenvolvimento de jogos para PC e XBOX 360. Então com esta ferramenta podemos desenvolver jogos tanto para PC quanto para o XBOX 360, inclusive podemos controlar a manete no PC também.

A Programação no XNA é feita com a linguagem C# que possui a sintaxe similar ao C. Os jogos feitos com XNA para PC podem ser comercializados livremente, porem para comercializar jogos no XBOX 360 é um pouco mais burocrático.

Então como já programo em C# e conheço bem o ambiente do Visual Studio escolhi o XNA para iniciar meus estudos, em breve venho postar mais sobre outras ferramentas que estou utilizando.

23 Março 2009

Projeções para o blog

Ola pessoal, entrando cada vez mais dentro do tema foco da minha pesquisa, venho até vocês trazer uma breve projeção para o blog.

A monografia esta consumindo um tempo grande do meu tempo, então atrasei um pouco com o novo layout para o blog, porem espero publicá-lo logo após a semana santa.

O blog vai passar a ter quatro focos: meus projetos, desenvolvimento de jogos, desenvolvimento web, e assuntos variados relacionados a desenvolvimento.

Meus Projetos: Esta trilha será o foco principal deste blog, inicialmente vou postar sobre o desenvolvimento e evolução da minha monografia e meus projetos de jogos.

Desenvolvimento de Jogos: pretendo colocar novidades sobre a área de desenvolvimento de jogos, mercado e tecnologias relacionadas.

Desenvolvimento WEB: Pretendo falar sobre algumas técnicas e boas praticas para o desenvolvimento de sistemas via Web.

Assuntos Variados: Este tópico deixarei aberto para escrever sobre duvidas dos leitores e amigos, então caso queira que eu escreva sobre algum assunto relacionado a desenvolvimento de softwares pode enviar sugestões.

Atualmente estou estudando sobre XNA e Blender então logo terei novidades sobre estes temas.

05 Março 2009

Polimorfismo (POO)

Ola pessoal, trago para vocês uma breve descrição sobre polimorfismo e suas variações.

Inicialmente vamos entender o que é o polimorfismo, esta palavra veio do latim e significa varias formas. Em POO podemos considerar como a capacidade de um operador desempenhar uma tarefa de acordo com o tipo do operando.

O Polimorfismo é dividido em vários tipos conforme exemplificado na imagem abaixo:

Polimorfismo



  • Ad-Hoc: Funcionam em um conjunto finito de tipos, e deve ter o comportamento de acordo com cada tipo.

    • Sobrecarga: Consistem em utilizar o mesmo nome de um método com assinaturas diferentes.
      public void Sum(int A, int B);
      {
      ...
      }
      public void Sum(decimal A, decimal B);
      {
      ...
      }


    • Coerção: Ocorre quando se converte um elemento de um tipo, no tipo apropriado para o método.
      decimalValue = (decimal)IntValue;


  • Universal: É caracterizado por métodos que executam o mesmo código para argumentos de tipos diferentes.

    • Inclusão: Ocorre em linguagens que permitem subtipo e herança. Uma instância de uma subclasse pode ser manipulada pelas mesmas funções que manipulam instâncias da superclasse.

    • Paramétrico: São as funções genéricas onde um tipo implícito ou explicito determina os argumentos para cada aplicação do método.

Bom pessoal espero que tenham gostado dos posts sobre POO, caso alguém tenha alguma duvida ou queira algum exemplo mais detalhado pode deixar um comentário aqui ou me enviar por e-mail. Estou trabalhando em uma reformulação da estrutura do site, em breve estarei publicando ela. Nos próximos tópicos vou focar um pouco mais em IA e modelagem 3D e GameDev, um abraço a todos e até breve.

03 Março 2009

MinuTade

Ola pessoal, estou um pouco afastado do blog esses dias, porem não me esqueci de vocês. Nos últimos meses venho trabalhando em um projeto denominado MinuTrade, nestes últimos dias estamos em uma fase de lançamento da plataforma.

Saindo um pouco do planejado vou falar um pouco sobre a MinuTrade e os serviços prestados por ela.

A MinuTrade é uma plataforma de micro recompensas em benefícios para telefonia móvel como premiação em programas de incentivo e recompensas. Sua finalidade é converter uma determinada moeda em prêmios.

Um exemplo de uma campanha de fidelidade é a que esta sendo ofertada pelo posto de combustíveis Ale, no qual esta lançando seu cartão de credito tendo como beneficio créditos em seu celular Claro.

Para ganhar os créditos basta adquirir o cartão de créditos da Ale e efetuar suas compras normalmente, após o pagamento de sua fatura seus pontos serão contabilizados e um prêmio em minutos será creditado em seu celular Claro.

A MinuTrade é uma empresa pioneira e esta inovando o mundo móvel. Para saber maiores detalhes sobre a MinuTrade acesse o site minutrade.com.br.

Bom pessoal no próximo post vou falar um pouco sobre polimorfismo, depois darei mais alguns exemplos para vocês, espero que estejam gostando do blog.


13 Janeiro 2009

Interface (POO)

Ola pessoal, em ritmo de CES, venho trazer para você mais um post sobre POO desta vez para falar sobre Interface.

Como vimos no tópico anterior utilizamos interfaces juntamente com herança para podermos desenvolver nossos sistemas. As interfaces são parecidas com as classes que já vimos anteriormente, porem existe uma diferença básica. Em uma classe eu declaro e implemento um método. Caso esta classe seja abstrata eu tenho métodos implementados e métodos não implementados. Em uma interface não implementamos nenhum método, isto significa que temos somente o contrato do método.

O contrato de um método no C# é composto pela visibilidade, variável de retorno, nome e parâmetros como no exemplo abaixo:

public void Name(atributeType atributeName, atributeType atributeName);

Em um próximo post falarei sobre contrato mais detalhadamente.
Desta forma em uma interface temos vários contratos de métodos como no exemplo abaixo onde represento uma interface contendo habilidades básicas como em um jogo de MMORPG

interface IBasicSkills
{
public void Attack();

public void Defend();

public void Relax();

public void Talk();
}


Nesta interface temos 4 métodos que são as habilidades básicas de um personagem. Todos os personagens terão estas habilidades, porem a forma como eles a executaram não necessariamente será a mesma para todos. Para exemplificar podemos usar o método Attack, onde um personagem pode atacar outro dependendo de sua espécie ou classe. Um lobo efetua um ataque com mordidas e paradas. Um cavaleiro pode utilizar uma espada ou uma lança. Um arqueiro utiliza uma arco e flechas, sendo que o ataque com estas armas é diferente, para atirar com o arco é necessário ter flechas por exemplo.

Então utilizaremos uma interface para determinar uma classe. A classe que implementa esta interface devera implementar todos os seus métodos.

public class Lobo: IBasicSkills
{
public void Attack()
{
...
}

public void Defend()
{
...
}

public void Relax()
{
...
}

public void Talk()
{
...
}
}

Todos estes recursos utilizados na POO nos possibilitam desenvolver qualquer sistema, aplicados a jogos ou a sistemas corporativos, é importante conhecer todos os conceitos e sempre praticar. Nos próximos posts vou publicar exemplos mais elaborados sobre o uso dos conceitos que já expliquei.

23 Dezembro 2008

Herança (POO)

Ola pessoal, desculpe o tempo em que fiquei sem atualizar o blog, mas estou postando agora um novo artigo desta vez sobre Herança, espero que gostem.

Segundo o conceito genético da palavra, a herança ocorre quando um organismo adquire características e propriedades daquele que lhe deu origem, através de sua codificação (Código Genético). Bom a partir desta definição podemos definir o que é a herança no mundo da programação orientada a objetos, sendo que este conceito é basicamente o mesmo.

Desta forma uma classe herda as características de sua classe "mãe" sendo assim estas características ficam implícitas em seu contexto.

Em linhas gerais isto nos possibilita fazer códigos mais limpos e eficientes. Os métodos herdados não precisam ser reescritos, evitando redundância de código e aumentando a confiabilidade do mesmo. A implementação da herança depende da linguagem utilizada, vou exemplificar utilizando o C#.

Inicialmente temos uma classe mãe que define algumas propriedades.

public class Animal
{
private int _vitalidade;
private int _agressividade;

public int Vitalidade
{
get { return _vitalidade; }
set { _vitalidade = value; }
}

public int Agressividade
{
get { return _agressividade; }
set { _agressividade = value; }
}
}

Tendo a Classe Animal podemos observar que duas características são bem definidas Vitalidade e Agressividade. Todos os animais de nosso mundo fictício vão ter estas características. Agora podemos definir mais duas classe Carnivoro e Herbivoro, que vão herdar da classe Animal, assim estas duas classes vão receber as caracteristicas de sua classe mãe.

public class Carnivoro : Animal
{
private int _forçaAtaque;

public int ForçaAtaque
{
get { return _forçaAtaque; }
set { _forçaAtaque = value; }
}

public string Alimentação()
{
return "Carne";
}
}

public class Herbivoro : Animal
{
private int _velocidadeEsquiva;

public int velocidadeEsquiva
{
get { return _velocidadeEsquiva; }
set { _velocidadeEsquiva = value; }
}

public string Alimentação()
{
return "Vegetais";
}
}

Estas duas especializações de Animal nos possibilitam identificar melhor um animal. Agora sabemos que em nosso mundo Animais Carnívoros possuem força de ataque, Animais Herbívoros possuem velocidade de esquiva e a alimentação é diferente entre eles. Vamos nos aprofundar mais neste mundo e criar mais duas especificações, o Lobo e a Ovelha.


public class Lobo : Carnivoro
{
public Lobo()
{
Vitalidade = 100;
Agressividade = 75;
ForçaAtaque = 45;
}

public string Alimento()
{
return "Ovelha";
}
}

public class Ovelha :Herbivoro
{
public Ovelha()
{
Vitalidade = 100;
Agressividade = 5;
VelocidadeEsquiva = 35;
}

public string Alimento()
{
return "Grama";
}
}

Agora temos estas duas classes mais especializada e podemos utilizar qualquer uma das propriedades de sua classe mãe assim também como todas as propriedades das outras classes em sua cadeia hierárquica.

O C# como também o JAVA, não possuem herança múltipla, sendo assim uma classe não pode herdar de mais de uma classe, como é possível no C++, porem, é possível implementar uma interface, que possui um conceito um pouco diferente, mas sobre este assunto vou deixar para outro post.

Espero que tenham gostado, até a próxima.