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

segunda-feira, 12 de julho de 2010

Alien Conquer - Nintendo DS

Demo de jogo para Nintendo DS implementado para a disciplina de Programação para Consoles - UNISINOS, 2010/1 -, com o professor Marcio Garcia Martins.

Grupo:
Deividson M. Goulart: implementação do gameplay e estrutura geral do jogo;
Otto Lopes: criação do projeto SVN, implementou o input (juntamente com Taiuã), interface gráfica (menu e hud) e implementou a estrutura para música e efeitos sonoros;
Taiuã Pires: ideia original e estrutura inicial.
Este jogo foi originalmente criado pelo Taiuã para PC, e para este trabalho foi portado pra NDS.

Arte de Leonardo Silva Marques e Taiuã Pires.

Utilizados:
  • Visual Studio 2008;
  • TortoiseSVN;
  • API PAlib;
  • Emulador DeSmuME;



Video (somente video sem áudio - jogo possui música e efeitos sonoros):

Terreno e SkyDome

Trabalho implementado para a disciplina de Técnicas Avançadas de Computação Gráfica (UNISINOS), de 2010/1, com a professora Rossana Queiroz.
Heightmap com LOD através de ROAM (implementado com Binary Triangle Tree) e SkyDome.

O heightmap é criado a partir de imagem.
Para a representação de terrenos, foi utilizada a técnica de Heightmap, ou mapa de alturas, uma estrutura de dados (matriz representando a largura e comprimento do terreno - XZ) que armazena a altura (Y) do terreno em cada coordenada do plano XZ. 
    O algoritmo base é de autoria de Bryan Turner, que apresenta uma forma de se renderizar grandes terrenos utilizando a técnica de LOD (Level of Detail), técnica que aumenta o nível de detalhe da malha de vértices em pontos próximos ao observador, e diminui em pontos distantes, através de ROAM (Real-Time Optimally Adapting Meshes), técnica para manipular a malha de vértices do terreno em tempo real, que por sua vez é possível utilizando-se BTT (Binary Triangle Tree), árvore binária de triângulos que possui vários níveis de profundidade, e durante a renderização, a profundidade que será executada varia da distância do ponto em questão ao observador e o limite de exploração árvore adentro a cada frame. A malha de vértices não é alterada, o processo de Tesselation, efetuado a cada frame antes da renderização, apenas monta os polígonos com vértices selecionados para formar uma malha aproximada à original, diminuindo drasticamente o número de vértices utilizados e polígonos desenhados.
A textura é um ponto que precisa ser melhorado, pois tive que utilizar uma textura para todo o terreno, com resolução limitada (máximo de 4096x4096).
Resultados: terrenos de 1024x1024 ou maiores, consegue-se 60fps com tranquilidade (isso com um Athlon 64 X2 Dual Core, com 2.6GHz por core).

Utilizado:
  • OpenGL;
  • Glut;
  • SDL_Image (inicialmente DevIL, mas migrei pra SDL pela documentação e funcionalidades);
  • Lua.

Video:

domingo, 11 de julho de 2010

Billboards


Exercício implementado para a disciplina de Técnicas Avançadas de Computação Gráfica, de 2010/1, com a professora Rossana Queiroz.
Imagens da professora e tbm de Mr. Bubble.

Utilizado:
  • OpenGL;
  • Glut;
  • SDL_Image;
  • Lua.


Video:

L-System

Exercicio implementado para a disciplina de Técnicas Avançadas de Computação Gráfica, com a professora Rossana Queiroz. Simples visualizador de L-System, com leitor implementado pela professora.

2010/1.

Utilizado:
  • OpenGL;
  • Glut;
  • Lua.

Video:

quinta-feira, 11 de fevereiro de 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.

terça-feira, 9 de fevereiro de 2010

Livraria Garden - jogo para celular

Criado em 2009/1, para as disciplinas:
  • Programação Multiplataforma, com o professor João R. Bittencourt, como trabalho semestral - implementação de jogo em Java ME;
  • Projeto de Jogos: Plataformas Alternativas, com o professor Mauricio B. Gehling, como trabalho semestral – projeto e implementação de jogo para plataforma alternativa;
  • Oficina de Jogos: Técnicas de Balanceamento de Jogos, com o professor Mauricio B. Gehling, como trabalho para Grau B – projeto e balanceamento de um jogo. Para esta disciplina foi implementada uma estrutura de balanceamento dos principais elementos do jogo, para que estes sejam balanceados com maior facilidade. Nesta disciplina formei grupo com Jonathan Sperafico Pinto, que ao final de minha implementação montou uma proposta de balanceamento para as fases. Eu criei outra proposta. Também debatemos em alguns momentos sobre o balanceamento do jogo;
  • Redes de Computadores, com professor Glauco Ludwig, como trabalho para Grau B – implementação de jogo em rede – para o qual foi implementado o modo multiplayer do jogo, por rede bluetooth.
Características:
Linguagem Java ME;
IDE Eclipse;
Plataforma Celular (mobile's ou emuladores);
Gráficos 2D;
Versão atual: 0.4;
Configuração:
    Resoluções projetadas: 128x160, 178x220, 240x320 (finalizada);
    Tamanho máximo arquivo .jar: 256 KB.

Descrição:
    Livraria Garden (ou ainda BookStore Garden/ Simulador de Livraria)é um jogo casual para celular, onde o jogador deve administrar uma livraria. Inspirado em Diner Dash (jogo da série Dash Games), e Theme Hospital (leve inspiração para adição de elementos de estratégia ao jogo), este jogo explorará possibilidades para uma jogabilidade realmente agradável e intuitiva para celulares. Possui elementos de puzzle, ação e estratégia.

    Multiplayer: para até oito jogadores, via rede Bluetooth. Apenas Modo Concorrência disponível (Modo Cooperativo a ser implementado), onde os jogadores atendem, cada um em sua livraria, e ao final de cada fase as livrarias são classificadas pelo melhor atendimento e desempenho. As melhores livrarias recebem mais clientes na próxima fase, conseqüentemente as piores recebem menos.

Funcionamento:
    O jogador deve controlar seu personagem ordenando ações pelo teclado numérico. As ações possíveis são exibidas na tela, com numeração atribuída dinamicamente pelo jogo, exigindo reflexo e concentração do jogador.

livraria garden mobile 

    O jogador deve direcionar cada grupo de clientes (GC) da fila de entrada para alguma prateleira com espaço suficiente para o número de clientes que o grupo possui, e quando eles escolherem um produto, deve direcioná-los ao caixa, e em seguida atendê-los para efetuarem o pagamento.

Versão atual:
- O Gameplay atual é uma demonstração, a adição de mais elementos é fundamental;
- São três fases de demonstração, onde a dificuldade aumenta consideravelmente;
- Apenas Modo Arcade disponível;
- Modo Multiplayer apenas com Modo Concorrência.

Próximas melhorias:
 - Mais elementos de gameplay (como elementos com os quais o jogador pode interagir, maior número de táticas e estratégias possíveis, etc);
- Animações dos personagens (implementação da estrutura de animação já iniciada). Ponto fundamental para o gameplay, pois retarda o jogo;
- Cenário com maior complexidade;
- Acréscimo de tipos de produtos e prateleiras, sendo configuráveis in-game (parte do Modo Administrativo/ Simulador);
- Modo Simulador/ Administrativo – que adiciona ao gameplay atual elementos de estratégia administrativa;
- Maior número de recompensas visuais;
- Portar para as outras duas resoluções projetadas (processo iniciado, mas não finalizado).


Na documentação:
  • Concept Doc;
  • Proposal Doc;
  • Design Doc;
  • Arte Conceitual;
  • Cronograma.
Video com demonstração:

segunda-feira, 8 de fevereiro de 2010

FDP Series - Galvão.FDP (Concept Doc)

Criado para a disciplina de Projeto de Jogos: Plataformas Alternativas, de 2009/1, com o professor Mauricio B. Gehling.

Concept Doc de proposta para um jogo.

Descrição:
Galvão.FDP seria um jogo casual para celular, o primeiro da “FDP Series”, uma série de jogos em que o jogador poderá enfrentar pessoas públicas das mais contestadas do Brasil e do mundo. Neste primeiro título o jogador deverá encarar todos os obstáculos impostos a fim de encontrar e enfrentar Galvão Bueno, um contestado narrador e apresentador da Rede Globo de televisão.
    No decorrer dos estágios, você conhecerá um pouco mais do personagem combatido em questão, como gafes memoráveis e ações relevantes de sua vida, obtidas numa parceria com o portal Desciclopedia

FDP Series:
    A série “Filhos Do Povo” tem o objetivo de colocar jogadores de todo o planeta “frente-a-frente” com pessoas públicas que estão em evidência, influenciam o público geral e têm uma conduta profissional/ pessoal mal intencionada/ executada, mas não recebem a contestação ou “punição” merecida/ à altura. Cada jogo da série segue um padrão próprio, com no mínimo dois padrões de estágios, um especifico do título, e um estágio genérico da série, com pequenas diferenças de jogo para jogo, onde o jogador enfrenta o “vilão” em questão.

domingo, 7 de fevereiro de 2010

Futebol Interativo - (jogo pelo YouTube)

Criado para a disciplina de Ficção Interativa, 2009/1, com professor Tiago R. Lopes, como trabalho de Grau A.

Foi um dos três projetos escolhidos para ser implementado durante o semestre, mas encerrei o trabalho na fase de protótipo porque não haveria tempo hábil para sua finalização em curto prazo.

Descrição:
Jogo que usa o YouTube como plataforma. É uma proposta de narrativa interativa.

São vídeos que exibem partidas de futebol, onde cada vídeo exibe uma jogada, e o jogador deve selecionar um possível desfecho, que o envia para outro vídeo. Sua escolha é bem sucedida se resultar em gol do time atacante, ou o time continuar com a posse da bola.

Entre todos os vídeos existe uma coerência geral, apesar de serem exibidos vídeos de diferentes partidas e equipes, como se fosse uma única partida sendo exibida. Esta coerência se dá principalmente entre vídeos diretamente ligados. Ideia originalmente criada para dois jogadores.

O protótipo do jogo criado é uma demonstração simplificada. Esta produção parte do seguinte argumento:
    Pense nos grandes momentos do futebol. Eles não se fazem do nada, há toda uma história por trás do que aconteceu.
Esses grandes momentos muitos torcedores conhecem. Mas apresentar os lances que os precedem, a construção do lance, exige algo que o espectador não costuma registrar/ parar pra pensar. Em como a jogada se fez possível.
A ideia seria explorar situações de jogo que costumeiramente não são notadas, mas são importantes.
Exigir memória, reflexão e visão tática do espectador.

Este protótipo utilizou cenas do dvd FIFA FEVER, para se ter uma ideia de como seria sua construção com um visual semelhante.



Video com o ponto de partida para o protótipo do jogo:

Simulador de Formigas

Criado para a disciplina de Animação Computadorizada, 2009/1, com o professor Fernando Marson, como trabalho de avaliação de Grau B (50% do GB).

Características:
Linguagem C++;
IDE Visual Studio;
Plataforma PC / Windows;
Versão atual: 0.3;
Bibliotecas:
  • OpenGL / GLUT.
Principais conceitos abordados, quanto à implementação:
  • Animação Comportamental;
  • Inteligência Artificial;
  • Agentes em Grupo.
Descrição:
Aplicativo que simula o ambiente de um formigueiro.

Há quatro tipos (castas, funções dentro do formigueiro) de formigas. Cada casta têm sua função (comportamentos simplificados na atual versão).
A versão atual apresenta a simulação das principais características presentes na maioria das espécies.

- Castas:
    Cada casta possui uma função específica que atribui à formiga comportamento e características próprias (alterando também características físicas, como forma e o raio de percepção). As descrições apresentam somente o presente na atual versão:
  • Rainha: Formiga procriadora;
  • Obreira (formiga pequena): busca por alimento;
  • Operária (formiga média): carrega alimentos encontrados pelas obreiras e os aloja no formigueiro;
  • Soldado (formiga grande, escura): guarda o formigueiro.
- Metabolismo:
    O metabolismo da formiga influencia a velocidade de suas ações, e a velocidade de consumo de energia/ digestão dos alimentos. Há um padrão para cada casta, que também varia de acordo com o comportamento de cada formiga.

- Comunicação:
    Quando uma formiga entra no raio de percepção de outra, ela se direciona à esta em busca de comunicação. Caso esta segunda formiga aceite a comunicação, há troca de feromônio (substância química liberada pela formiga), que é interpretado por cada formiga como informações. Elas também podem alimentar uma à outra se necessário.
Quando há comunicação, a cor da formiga é alterada, ficando mais clara, com tom azulado. Este processo geralmente é rápido, o que faz com que a cor da formiga “pisque”.

-Alimentação:
    As formigas podem se alimentar no formigueiro, ou com outra formiga, quando estiverem fora do formigueiro.
A formiga muda de cor, quando se alimenta, ficando verde.

- Geração de novas formigas:
    Quando é ativada a reprodução de uma nova formiga, a casta a qual esta pertencerá é aleatória, porém dentro de uma lista de probabilidades, onde:
  • Rainha: 1 única Rainha por formigueiro;
  • Obreira: 50%.
  • Operária: 45%.
  • Soldado: 5%.
- Formigueiro:
    A saída do formigueiro muda de cor dependendo do nível de comida no formigueiro. Vermelho indica nível mínimo, e dourado nível alto. Há capacidade máxima para comida no formigueiro, e também de formigas (não ativada na versão atual).

- Morte:
    Uma formiga morre quando sua energia chega a zero. A energia é decrementada quando, ao digerir, não houver comida em seu organismo. Sua cor é alterada para branco.


Melhorias Futuras:
  • Comportamento das formigas, como mais funções para cada casta;
  • Finalização da estrutura de Feromônio. Orientação das formigas pelo feromônio liberado no ambiente;
  • Possibilidade vários formigueiros;
  • Mais animais no ambiente, com os quais as formigas interagem, como aranhas (para a simulação de ataques);
  • Ambiente virtual mais complexo, com vegetação, e terreno;
  • Otimização avançada, como, por exemplo, detecção de colisão mais eficiente, e visualizador também otimizado;
  • Formigueiro mais complexo;
  • Possibilidade de parametrização do aplicativo pelo usuário;
  • Possibilidade de servir como base de influência para um futuro jogo de estratégia, estilo RTS.
  • ...
Funcionamento:
O formigueiro é gerado em posição aleatória.
O usuário controla a adição de novas formigas e alimentos no cenário.


Video com demonstração:

quarta-feira, 3 de fevereiro de 2010

Animador por Script

Criado para a disciplina de Animação Computadorizada -2009/1- professor Fernando Marson.

Características:
Linguagem C++;
IDE Visual Studio;
Plataforma PC / Windows;
Versão atual: 0.4;
Bibliotecas:
    - OpenGL / GLUT;

Descrição:
Este aplicativo executa animações definidas pelo usuário em um arquivo de texto (script). No script, é utilizada uma linguagem pré-definida (linguagem pré-definida pelo professor).

Este trabalho foi pré-definido pelo professor para implementação como trabalho Grau A da disciplina.

Grupo:
A implementação foi constantemente debatida pelo grupo.

Deividson Müller Goulart. Responsável pelo core do aplicativo.
- Estrutura geral;
- Estrutura de leitura do script;
- Visualizador;
- Implementação de transformações.

Frantiesco Masutti . Responsável principal pela aplicação de transformações.
- Implementação de transformações.

Gabriel Schulte . Responsável principal pela aplicação de transformações.
- Implementação de transformações.




Video com demonstração (baixa qualidade):

domingo, 31 de janeiro de 2010

Video-Casting: Crack em Jogos Digitais

Desenvolvido para a disciplina de Oficina de Jogos: Motores de Jogos - 2008/2 -, com o professor João Ricardo Bittencourt.

Video que levanta questões éticas sobre a utilização de crack em jogos digitais.

Grupo:
Deividson M. Goulart. - Roteiro, direção e edição.
João S. Streibel. - Atuação, relatório do video e colaboração.

Colaboraram:
Frantiesco Masutti. - Atuação.
Gabriel Schulte. - Atuação.

O video:

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:


sexta-feira, 29 de janeiro de 2010

Paint AR

Criado para a Disciplina Realidade Virtual -2008/2- professor Fernando Marson.

Descrição:
Aplicativo que simula uma espécie de “Paint” com Realidade Aumentada.
O usuário poderá desenhar e criar animações na cena captada pela câmera de vídeo/ webcam, utilizando marcadores ARToolkit como “pincéis”.

O projeto Leitor de modelos OBJ (João S. Streibel e Deividson M. Goulart), foi utilizado para a utilização de modelos 3D no formato OBJ no aplicativo.

A função do aplicativo em sua versão atual: Desenhar objetos 3d, criar cenários, desenhar em 3D no mundo real.

Características:
Linguagem C++;
IDE Visual Studio;
Plataforma PC / Windows;
Versão atual: alpha.
Bibliotecas:
  • OpenGL / GLUT;
  • ARToolKit;
  • Lua.

Melhorias Futuras:
- Interface gráfica para maior facilidade para o usuário, com novas funções.
- Salvar a cena resultante. Possibilidade de salvar como modelo 3D único.
- Salvar a cena resultante como vídeo (atualmente é possível com uso de programas como Fraps).
- Possibilidade de vários modelos 3D serem adicionados para serem utilizados no aplicativo.
- Animação. Utilização de animações prontas, e criação de animações pelo usuário.
- Desenho a mão livre, pelo usuário.
- Utilização do mouse para edição da cena resultante (em conjunto com o uso do pincel/ marcador). Com isso pode-se usar o pincel em cena somente para que o aplicativo tenha uma perspectiva 3D da cena captada, e as demais ações poderão ser feitas com o mouse, diretamente na cena resultante.
- Iluminação (virtual) geral na cena (atualmente é individual para cada modelo adicionado), podendo ser configurado pelo usuário.
- Cena virtual criada de forma fixa. Atualmente a cena criada é relativa à câmera (quando a câmera é movimentada, toda a cena virtual se movimenta relativamente).
- Possibilidade de utilização do marcador somente para o aplicativo obter a perspectiva 3D da cena captada, em um primeiro momento, de configuração. Posteriormente, marcadores não seriam mais necessários, e o usuário poderia efetuar ações, utilizando o mouse, diretamente na cena resultante.
- ...


Video com exemplo de uso. Como não tinha uma web cam disponível, fiz com um video que usei para testar o aplicativo, mas a ideia é utilizar o aplicativo com uma cena captada, em tempo real.


quarta-feira, 27 de janeiro de 2010

Modelos 3D

Modelos feitos na disciplina de Ferramentas de Design, com o professor Mauricio B. Gehling, em 2008/2.
Trabalho com tema definido pelo professor.

Na disciplina utilizamos Maya 8.5 PLE.

Foi meu primeiro contato com modelagem, e acho que com o que aprendi lá dá pra quebrar o galho quando necessário. Desde lá também tive contato com outras ferramentas, superficialmente, como 3DS, Milkshape, Wings 3D, e principalmente Blender (apesar da interface pouco simpática, é extremamente flexível).


imagens trabalho 1 - moveis diversos:





Trabalho 2 - modelos texturizados:



A famosa carroça:


Trabalho 3 - árvore "artística":

E o trabalho final, Jaspion (modelo com bones):

segunda-feira, 25 de janeiro de 2010

Gerador paramétrico de terrenos heightmap e floresta

Trabalho dividido em duas versões.

1ª versão: Gerador paramétrico de terrenos (heightmap) e florestas.

Trabalho implementado para a disciplina de Realidade Virtual, de 2008/2, com o professor Fernando Marson.

Gerador de terreno e floresta a partir de definições do usuário no arquivo de configuração.
O gerador exporta o modelo gerado para um arquivo .wrl (VRML).
Este arquivo pode ser visualizado com, entre outros players, Cortona 3D Viewer
(plugin para browser’s como Explorer, Firefox e Chrome, gratuito).

Grupo:
João Saldanha Streibel. [jstreibel@gmail.com]. Responsável pelo Core do aplicativo.
  • Gerador de terreno, implementando algoritmo para geração de terrenos (heightmap) presente no livro Game Programming Gems 7edition;
  • Exibição da criação do heightmapping através de imagem, em tempo real, com SDL e SDL Thread;
  • Estrutura VRML do terreno.
Deividson Müller Goulart. [dmg.speed9@gmail.com]. Implementação a partir do gerador de heightmapping.
  • Gerador paramétrico da floresta;
  • Estrutura VRML dos demais objetos em cena.
  • Composição da estrutura final VRML.

Características:
Linguagem: C++;
IDE: Visual Studio;
Imagens: obtidas na Internet;
Gráficos: 3D. Visualização da geração do terreno em 2D (SDL);
Plataforma PC / Windows para o gerador. Para utilização do terreno/ floresta gerado, plataforma compatível com algum plugin para browser de internet ou player VRML/ X3D;
Bibliotecas:
  • SDL;
  • SDL Thread.


videos de exemplos gerados:





2ª versão: Gerador paramétrico de terreno (heightmap), com visualizador (OGL).
Trabalho implementado para a disciplina de Computação Gráfica, de 2008/2, com o professor Leandro Tonietto.

Gerador de terrenos heightmap a partir de parâmetros definidos pelo usuário.
Nesta versão é possível modificar mais parâmetros relativos à geração do terreno. Sendo possível obter diferentes resultados.

Configuração da geração definida no arquivo “config_terreno.lua”.
Definição do material do terreno no arquivo “material_terreno.mtl”.
Além do terreno visualizado com OpenGL, o terreno será exportado para um modelo no formato .wrl (VRML), na pasta Output.

Melhorias futuras:
Edição em tempo real do terreno gerado com o mouse.
Exportação do terreno para modelo 3D no formato OBJ.
Texturização do terreno.

Grupo:
João Saldanha Streibel. [jstreibel@gmail.com]. Responsável pelo Core do aplicativo.
  • Melhorias no algoritmo para geração de heightmap implementado para a disciplina de Realidade Virtual, como novos parâmetros para a geração.
Deividson Müller Goulart. [dmg.speed9@gmail.com]. Implementação a partir do gerador de heightmapping.
  • Adaptação da implementação do aplicativo em sua versão vrml, com gerador de florestas, para a atual.
  • Estrutura de visualização com OpenGL;
  • Parametrização com script LUA.
Características:
Linguagem: C++;
IDE: Visual Studio;
Gráficos: 3D, OpenGL. Visualização da geração do terreno em 2D (SDL);
Plataforma PC / Windows para o gerador. Para utilização do terreno VRML gerado, plataforma compatível com algum plugin para browser de internet ou player VRML/ X3D;
Bibliotecas:
  • OpenGL, GLUT;
  • SDL;
  • SDL Thread.
  • script LUA.

video com simples exemplos.

sábado, 23 de janeiro de 2010

Leitor e Visualizador de OBJ

Implementado em 2008/2 para a disciplina de Computação Gráfica, com o professor Leandro Tonietto, como trabalho Grau A.
Leitor de modelos 3D no formato Wavefront OBJ. Tema do trabalho definido pelo professor.

Características:
Linguagem: C++;
IDE: Visual Studio;
Modelos 3D: obtidos na Internet para teste;
Gráficos: 3D, OpenGL;
Plataforma PC / Windows;

Grupo:
João Saldanha Streibel. [jstreibel@gmail.com]. Responsável pelo “coração” do aplicativo.
  • Leitor arquivo .obj;
  • Leitor imagem no formato PNM;
  • Estrutura para o Mesh (malha do modelo) criado a partir dos dados lidos no arquivo .obj.
Deividson Müller Goulart. [dmg.speed9@gmail.com]
  • Estruturação geral do programa;
  • Visualizador com OpenGL + Glut;
  • Texturização;
  • Incremento leitor OBJ;
  • Pequenas adaptações no leitor imagem PNM;
  • Leitor arquivo MTL.



segunda-feira, 18 de janeiro de 2010

Blue Flame 7

Criado para a Disciplina Projeto de Jogos: Ferramentas de Desenvolvimento Rápido de Jogos – 2008/1 –
Curso de Jogos e Entretenimento Digital (Jogos Digitais) – UNISINOS

Características:
Linguagem: DarkBASIC;
Versão Alpha (0.1). Apenas primeiras experiências foram feitas. Ainda longe proposto.
Arte e modelos 3D: obtidos na Internet. Somente um esboço do resultado pretendido.
Gráficos: 3D.
Plataforma PC / Windows.
Ferramentas:
  • Dark Basic;
  • Audacity (edição de som);
  • GIMP (edição de imagens).

Jogo de corrida inspirado em jogos dos anos 90 como Rock’n Roll Racing, da InterPlay (SNES) e Biker Mice From Mars, da Konami (tbm para SNES).

Na atual versão há a experimentação de possibilidades para o projeto.

Algumas características do projeto:
Câmera com comportamento similar aos jogos citados.
Ambiente virtual do jogo menos complexo comparado a jogos atuais, com foco no gameplay.
Ideia do projeto pode ser adaptado como jogo online.
Universo/ tema “Rock’n Roll”. Semelhante a Rock’n Roll Racing, tenta passar uma experiência dentro deste ambiente, onde o jogador percorre belas paisagens, desafiando pilotos de todo o planeta, pilotando desde carros clássicos aos de última geração, ao som de muito rock’n roll.

link para alpha + documentação (41MB) (como a jogabilidade está longe do ideal, sugiro que, se tiver curiosidade sobre o gameplay, confira o video logo abaixo)



Video com demonstração:

Simulador de Restaurante (Diner Dash)

Criado para a disciplina de Algoritmos e Estruturas de Dados C++, em 2008/1, como trabalho semestral obrigatoriamente baseado no jogo Diner Dash (jogo casual para PC).

Características:
Versão Alpha.
Baseado no jogo Diner Dash.
Arte: obtida na Internet. Somente um esboço do resultado pretendido.
Gráficos: 2D, SDL.
Linguagem C++.
Plataforma PC / Windows.
IDE CodeBlocks.
Bibliotecas utilizadas:
  • SDL;
  • SDL TTF;
  • SDL Image.


sexta-feira, 15 de janeiro de 2010

Ching Ling no Vale dos Mortos

Jogo em ASCII.
Criado para a disciplina de Algoritmos e Programação I (primeira cadeira de programação do curso), 2007/2.

Características:
Linguagem: C++.
IDE: Dev C++, e posteriormente Codeblocks;
Gráficos: 2D, ASCII (executado no modo console);
Plataforma Windows;
Bibliotecas utilizadas:
  • Jedilib (lib com funções para o modo console);
  • libwinmm;
Projeto: Star UML para diagrama de classes.

Colaboraram:
- Roberto A. T. da Silva Filho [robertoatsf@terra.com.br]. Level design de algumas fases, relatório, apresentação e colaboração no projeto.
- Paulo Henrique Machry [paulo.1.henrique@gmail.com]. Relatório, apresentação e colaboração no projeto.


link para o jogo (jogo e descrição)

sexta-feira, 8 de janeiro de 2010

Mario em São Léo

Jogo em Game Maker.
Criado em 2007/1, para a disciplina de Introdução a Jogos.
Primeira implementação dentro do curso.
A ideia era desenvolver um jogo que aproximasse o universo dos games à nossa realidade, e pra isso nada melhor do que utilizar um jogo clássico como base.
Como na época ainda não havia começado nenhuma cadeira de programação, foi mais um trabalho de criação da ideia/ tema do jogo e implementação leve.