quinta-feira, 27 de maio de 2010

Combat Phase

A Fase de Combate reune a maior parte das regras do jogo. Elas definem a capacidade de ataque e defesa de cada unidade, bem como o nível de moral e as suas consequências durante a rodada. Após o combate, o jogo passa pela última fase, a Draw Fase, onde o jogador recebe uma nova Carta de Comando. O vídeo abaixo apresenta as duas fases.

Combat Phase from Almiro Carvalho Junior on Vimeo.

A partir de agora, estou trabalhando nos acertos finais do ciclo de rodadas e espero na semana que vem concluir a Versão 0.0 beta 1, para início de testes com o Bruno.

terça-feira, 25 de maio de 2010

Inteligência Artificial

Como comentei anteriormente, foi necessária a criação de um algorítmo de inteligência artificial para a identificação do caminho que uma peça deve percorrer no tabuleiro até a posição de destino definida pelo jogador. Neste caso, foi implementado o algorítmo A* que, pelo fato de ser "genérico", poderá também ser utilizado para a implementação futura de um oponente controlado pelo computador, por exemplo.

O vídeo abaixo mostra o algorítmo A* em ação em um cenário de testes:


Inteligência Artificial - A* from Almiro Carvalho Junior on Vimeo.

Já está no forno o vídeo da Fase de Combate, a penúltima fase da rodada (e a mais complexa).

segunda-feira, 17 de maio de 2010

Movement Phase

Na fase de movimento, o jogador poderá, para cada unidade selecionada na fase anterior, movimentá-la pelo tabuleiro, respeitando a sua capacidade de movimento. Além disso, dependendo do movimento realizado, a unidade poderá ou não combater na mesma rodada a até receber alguma penalidade no ataque. O jogo já verifica essas condições automaticamente.


Movement Phase from Almiro Carvalho Junior on Vimeo.

sexta-feira, 14 de maio de 2010

Algorítmo A*

Apesar da primeira versão do jogo não possuir modo single-player, uma funcionalidade com inteligência deverá ser implementada desde já. Trata-se da identificação do caminho percorrido pelas peças, ou Pathfinding. Isto é necessário para que o jogo possa verificar se a peça pode realmente chegar ao destino escolhido pelo jogador.

Nós, seres humanos, somos capazes de identificar o melhor caminho em poucos segundos. Porém, os computadores necessitam de um algorítmo complexo para realizar esta tarefa rapidamente. Para este jogo, eu utilizarei o algorítmo A* (A Star), muito utilizado em vídeogames para diversas funções de inteligência artificial.

domingo, 9 de maio de 2010

Command Phase

Esta é a primeira fase de cada rodada, onde o jogador deve jogar uma Carta de Comando e dar ordens às suas unidades. No momento, estamos usando as próprias cartas do jogo BattleLore, mas posteriormente elas serão substituidas por elementos mais adequados ao tema do jogo que iremos usar. O video a seguir mostra a implementação da Fase de Comando:

Command Phase from Almiro Carvalho Junior on Vimeo.

quarta-feira, 5 de maio de 2010

Finite State Machine

Este jogo é baseado em um sistema de tabuleiro, que se desenrola em rodadas. Estas, por sua vez, possuem etapas distintas, que ocorrem de forma discreta e consecutiva. Como o Unity é uma engine fundamentalmente "real-time", é preciso criar alguma maneira de pausar a execução dos programas de acordo com cada fase do jogo.

Para isso, criei uma Finite State Machine para os diversos objetos do jogo. Cada um possui diversos "estados" que são modificados a cada etapa da partida. Enquanto um estado não muda, o jogo fica apenas processando a interface com o usuário e deixa a lógica do jogo em pausa. Assim é possível cadenciar o gameplay, conforme as regras do jogo.

segunda-feira, 3 de maio de 2010

Start!

O vídeo a seguir mostra a implementação do objeto "Match" em ação. Ele também contém o principal objeto do jogo, o chamado Game Manager que, além de montar todo o tabuleiro automaticamnte, gerencia o andamento de todas as fases da rodada.

Start! from Almiro Carvalho Junior on Vimeo.