Espaço para divulgação de trabalhos e ideias criados durante o curso de Jogos e Entretenimento Digital (Jogos Digitais) - UNISINOS.

Mostrando postagens com marcador engines. Mostrar todas as postagens
Mostrando postagens com marcador engines. Mostrar todas as postagens

11 fevereiro 2010

Xadrez para Insanos

Desenvolvido para as seguintes disciplinas, todas do semestre 2009/2:
- Projeto de Jogos: Multijogador, com o professor Mauricio B. Gehling.
- Inteligência Artificial, com o professor João R. Bittencourt. Para esta disciplina foi desenvolvido o módulo de treinamento de unidades, utilizando Algoritmos Genéticos.

[Projeto ainda ativo.Costumo deixar o meu ultimo trabalho semestral ativo por mais um semestre, caso haja alguma oportunidade para continuá-lo.]

Características:
Linguagem C++;
IDE Visual Studio;
Plataforma PC / Windows;
Gráficos 3D;
Versão atual: 0.38 - alpha;
Ferramentas:
    Blender;
    GIMP;
    Star UML.
Bibliotecas:
    Biblioteca gráfica OSG (Open Scene Graph);
    Lua;
    SDL;
    SDL Threads;
    SDL Net.

Descrição resumida:

    Xadrez para Insanos reinventa um dos jogos mais tradicionais da história. Com uma visão moderna e pouco conservadora, é mais uma versão para o jogo, que tenta transformar um simples tabuleiro em um novo universo, cheio de novas possibilidades, ação e estratégia mais dinâmica (em turnos ou tempo real). Este jogo será multiplayer, para PC.
    É uma derivação do xadrez clássico. Sua base conceitual é a mesma, a representação do confronto entre exércitos. Cada jogador controla um time de peças de mesma cor (ou qualquer outro elemento que possa identificá-los como pertencentes a um mesmo time). As principais diferenças ao xadrez convencional são a influência do terreno e clima, a possibilidade de se mover todas as peças a cada jogada, elementos do jogo personalizáveis, e a presença do fator sorte. O objetivo principal é o mate (xeque-mate no Rei).
    Uma peça tem atributos como postura - que pode ser agressivo, defensivo, ou normal - e valores para ataque, defesa, energia, locomoção, entre outros.
    São dois modos-chave de jogo: Turnos e RTS.  Em Turnos, o jogo está mais próximo do xadrez convencional (incluindo um sub-modo onde há o próprio), enquanto o modo RTS assume o gênero de estratégia em tempo real. A partir destes dois modos fundamentais, futuramente poderá haver uma série de sub-modos, cada um propondo uma experiência específica - o projeto do motor prevê esta flexibilidade para futuras extensões -.

Módulo de aprendizado de máquinas utilizando Algoritmos Genéticos:

    A técnica de aprendizado de máquinas foi implementada especificamente para a etapa de desenvolvimento do jogo. O objetivo é encontrar configurações dos atributos de uma peça ideais para cada tipo de peça. Neste modo de execução, o aplicativo é executado em tempo simulado.

Algoritmos Genéticos:
    Conceito pertencente à área de Aprendizagem de Máquinas. Técnicas baseadas neste conceito seguem os princípios da genética e evolução por seleção natural apresentada na Teoria da Evolução das Espécies, por Charles Darwin. Nesta lógica, a evolução de uma população se dá a partir da seleção dos indivíduos mais aptos para reproduzirem, gerando novos indivíduos, que herdam as características -as características de um indivíduo são representadas em um cromossomo, que possui genes para cada característica - de seus geradores, numa combinação genética que gera um ser de características próprias. Ao longo das gerações da população, os melhores indivíduos vão sendo selecionados, reproduzindo-se, gerando novos indivíduos, o que resulta em uma cadeia evolutiva.
   
    O objetivo de sua implementação é se obter peças que tenham atributos balanceados entre si, e que representem o tipo específico de peça de acordo com o esperado pelos desenvolvedores.
    A população possui diferentes tipos de indivíduos (tipos de peças), que se relacionam (combatem entre si), mas não evoluem juntamente. O processo de evolução acontece individualmente para cada tipo de peça.


Funcionamento:
O jogador controla seu time de peças com o mouse.

Versão atual:
  • Nesta versão alpha, foram priorizados o motor de jogo e o modo RTS (ao contrário do que os documentos iniciais descrevem, sendo que este modo é mais complexo).
  • Multiplayer também presente.
  • Módulo de aprendizado de máquinas utilizando Algoritmos Genéticos. Com ambiente virtual próprio para a simulação.
Próximas melhorias:
Resumidamente as próximas melhorias previstas estão focadas na evolução do motor de jogo, retorno visual do jogo (para a análise do gameplay atual), multiplayer, e ainda no modo RTS.
  • Motor de jogo:
    • Colisões entre peças (da mesma equipe, tratamento completo);
    • Física;
    • Som;
    • Objetos em cena, e sua interação com peças;
    •  ...
  • Interface: out e in-game;
  • IA melhorada;
  • Implementação de alguns detalhes do Módulo de aprendizado de máquinas, e testes;
  • Cenário;
  • Controle das peças pelo mouse: seleção múltipla, e formações táticas de peças em grupo;
  • Evolução do modo Multiplayer;
  • ...


Presente na documentação:
  • Concept Doc;
  • Proposal Doc;
  • Design Doc;
  • Arte Conceitual;
  • Cronograma;
  • Diagrama de classes resumido;
  • Relatório sobre Inteligência Artificial implmentada.
Video com demonstração:


obs.: Houve um problema com o programa de captura de video, e o mouse nao está sendo exibido em sua posição original (na execução do jogo). Para seleção das peças, o mouse deve ser posicionado em algum ponto da peça em questão.

31 janeiro 2010

Steel, Blood & Honor - engine Melee Combat

Desenvolvido para a disciplina Projeto de Jogos: Motores de Jogos – 2008/2 – professor João Ricardo Bittencourt.

dupla: Deividson M. Goulart, Joao S. Streibel.

Características:
Linguagem C++;
IDE Visual Studio;
Plataforma PC / Windows;
Versão atual: alpha;
Modelos 3D - obtidos na Internet (personagens e moinho). Animações por João Streibel.
Bibliotecas:
  • Engine Gráfico Ogre;
  • SDL;
  • SDL_mixer;
  • Lua.
Ferramentas:
  • GIMP;
  • 3DS 2008 (para manipulação de modelos .mesh da Ogre e criação do cenário);
  • Audacity;
  • Star UML;
  • Workbench.

Descrição do projeto
.

-> O motor: Melee Combat:

Motor implementado para a simulação de combates corpo-a-corpo.
Características projetadas:
- Ataques e defesas em diversas direções.
- Tratamento de colisões com alta precisão, para que ataques em diferentes regiões do corpo tenham conseqüências específicas, realistas.
- Câmera em dois modos: No modo Exploração, tem comportamento que permite ampla visão do cenário, com movimentação cinematográfica para cenas cotidianas (visão superior). No modo Combate, tem comportamento ágil, em terceira pessoa, que facilita manobras de ataque e defesa, e movimentação cinematográfica para cenas de ação.

Ao motor foram adicionados conceitos para estruturas de Ativadores, Ações e Animações, dentro do sistema de controle do personagem (implementado por Deividson). Estas três estruturas podem ser definidas/ personalizadas por script, podendo funcionar em camadas e serem interligadas. Ativadores têm funcionamento semelhante a portas lógicas. Ações têm funcionamento semelhante, só que mais complexo, podendo inclusive ser temporizado. E Animações são uma camada de abstração às animações do personagem, mas com a adição de diversas funções, como a possibilidade de transição inteligente entre animações, e ligação à ação ou estado (da FSM, máquina de estados) do personagem.
Estes conceitos oferecem algumas vantagens:
- utilização de estrutura quase que idêntica de um agente e um personagem controlado pelo jogador. A diferença fica na última camada de ativadores do personagem, que é ligada ao Input do jogador (no caso dos personagens controlados pelo jogador), ou são ativados dentro da FSM (no caso dos agentes).
- Combos. Uma certa seqüência de ativações pode ser configurada no script para ativar outras ações ou ativações.
- O desenvolvedor pode configurar o script do personagem para que, por exemplo, o acionamento de um simples ativador desencadeie em ações mais complexas. As camadas mais baixo nível - fundamentais - do personagem já foram criadas, podendo ser expandidas ou modificadas pelo desenvolvedor.

-> O jogo: Steel, Blood & Honor (implementado a partir do motor Melee Combat):

- Simulador de lutas melee (corpo-a-corpo) entre guerreiros medievais, com elementos de action/ adventure, e ainda, mesmo que secundário, RPG e estratégia.
- Visão 3ª pessoa, quando jogador estiver em modo Combate. Vista superior no modo Exploração.
- Tema medieval.
- Resumo do enredo:
O jogador controla um jovem camponês aspirante a guerreiro, que vive em uma comunidade pagã, isolada em uma região montanhosa, e muito importante para a província a qual pertence pela alta produção agrícola, que para muitos é um mistério atribuído à sua relação com os deuses da natureza. Mesmo com a consolidação da fé cristã pelo continente - que se dá, em alguns casos, por imposição - esta antiga comunidade tem suas crenças ignoradas há gerações pela província e Império, pela sua relevante importância ao estado. Mas esta situação muda quando a Igreja decide que não haverá mais tolerância, temendo que seus cultos e adorações se espalhem pela região.

- Cenários com paisagens realistas. Basicamente florestas, bosques, lagoas, campos planos, etc.
- Trilha sonora com músicas de época, clássicas, e Rock'n Roll / Metal - semelhante ao visto no filme Coração de Cavaleiro, porém músicas que contribuem para a atmosfera mais sombria do jogo (sem facerice)-.


GRUPO:
Fase de projeto e planejamento:

Deividson Müller Goulart.
- Ideia central do jogo (posteriormente também debatida em grupo);
- Ideia central do motor de jogo Melee Combat – proposta de jogabilidade inovadora e realista (simulador de combates corpo-a-corpo) (posteriormente também debatida em grupo);
- Design Doc – núcleo (apresentação, argumentos/ motivações, enredo, gameplay central, etc);
- Cronograma.
- Gerência do projeto.
- Análise dos jogos RUNE e The Lord of the Rings: The Return of King.


João Saldanha Streibel.
Quanto ao projeto:
- Nome do jogo – Steel, Blood & Honor.
- Adições e modificações a ideia inicial do jogo.
- Ideia de motor oferecer alta personalização ao jogo (jogadores poderão personalizar gameplay/ controles via script, alterando o modo como seus personagens combatem).
- Finalização do design doc a partir de esqueleto e elementos principais criados.
- Projeto Arquitetural.
- Análise dos jogos Street Fighter e Bushido Blade.

Fase de implementação:

Deividson Müller Goulart.
Quanto à implementação -Foco na implementação do motor- gameplay, câmera e parametrização por script -:
- Estrutura de parametrização do motor e jogo via script Lua.
- Gameplay (elemento fundamental do motor): foco nas características que o motor Melee Combat oferece para o gameplay.
- Estrutura de controle de personagens (elemento fundamental do motor) – Editável via script lua:
- FSM;
- Gerência de Animações: partindo de duas funções que Ogre oferece – blend entre animações e atribuição dinâmica de pesos – implementei um gerenciamento que pode ser editado via script.
- Gerência de Ações e Ativadores;
- Inteligência Artificial dos agentes (básica).
- Controle de câmera (elemento fundamental do motor): dois tipos de câmera (para os modos Explorador e Combate).
- Input – camada de abstração, para definição por script.

João Saldanha Streibel.
Quanto à implementação. - Foco na estrutura geral (esqueleto inicial, som, out-game, arte), input, e tratamento de colisões -:
- Inicio da estruturação do esqueleto do programa a partir do diagrama de classes;
- Áudio – estrutura básica;
- Colisão (elemento fundamental do motor) – estrutura provisória. Larga pesquisa sobre detecção de colisões, inclusive com a intenção de criação de novos conceitos. Porém a implementação não foi bem sucedida, sendo substituída por uma estrutura provisória;
- Estrutura SDL;
- Input – estrutura geral;
- Importação do cenário montado com 3DS, a partir de leitor XML;
- Out-game;
- Animações do personagem.
- Escolha dos modelos 3D do jogo - obtidos na Internet (personagens e moinho)-.
- Level Design da fase de demonstração.


A documentação contém:
  • Breve análise do mercado nacional e internacional de jogos;
  • Análise de jogos que influenciaram este projeto;
  • Planejamento;
  • Design Doc e arte conceitual;
  • Descrição geral do projeto + controles.

Video com demonstração: