Versão 0.3

Esta corresponde à terceira versão de código do jogo, a versão final, em que foi implementado o uso de texturas para representar mais realisticamente objetos como o tanque e o terreno do cenário do jogo. Além disso, também foi inserido o skybox, que corresponde à aplicação de texturas nas bordas do terreno para representar o horizonte visível ao jogador e o céu.

Para representar o tanque, escolheu-se utilizar uma textura que simule uma camuflagem, que faz com que o modelo se aproxime bastante de sua representação real. A textura utilizada para o terreno representa um deserto e, de forma a completar a ambientação, o horizonte mostrado no skybox também é o de um deserto.

Para o mapeamento da textura no terremo foi utilizada uma função de normalização do terreno, mapeando cada vértice deste para o intevalo [0,n] em S, para a coordenada X, [0,n] em T para a coordenada Z, onde n é o fator de escala para repetição da textura. No caso, o fator n utilizado foi 10.

Para o mapeamento da textura dos modelos do tanque foi utilizada a técnica de two-part texture mapping. Primeiro definimos o centróide do modelo, em seguida definimos vetores OP, sendo O a posição do centróide e P um vértice, então esse vértice é normalizado e projetado em uma esfera. A partir do ponto definido na esfera é possível definir uma função que leva qualquer ponto da esfera para o plano [0,2*PI]x[0,PI]. Com isso e ponto no plano é normalizado para o domínio ST definido em [0,1]x[0,1].

A figura a seguir mostra como os pontos de uma esfera são mapeados para um domínio 2D:

Nesta versão também foram corrigidos os problemas de orientação dos projéteis após o lançamento, e agora o movimento desses representa mais fielmente a realidade. Além disso, a forma de contagem do placar foi alterada para melhorar a jogabilidade: é utilizada uma função que leva em conta a distância entre o ponto de disparo e o alvo, a massa do projetil e o numero de projeteis utilizados, de maneira que de quanto mais longe o jogador acertar, mais pontos recebe, e perde pontos para cada projetil lançado que não atinge nenhum alvo. Além disso, quando o jogador acerta a casa, que não constitui um alvo, perde ainda mais pontos.

Ainda visando melhorar o quesito jogabilidade, agora os objetos dos alvos e da casa aparecem todos em posições aleatórias a cada novo início do jogo, e são retirados da cena quando são atingidos por algum projétil.

Por fim, também foi inserida uma tela que indica que o jogo está sendo carregado antes de seu início, para que o usuário saiba que o programa está em atividade e não travou, pois o carregamento dos modelos pode levar um tempo um pouco maior dependendo das configurações da máquina em que é executado.

Download

Para baixar o código fonte da versão mais recente do projeto, visite a págine de downloads. Na página de downloads também está disponível o link para executar o jogo através do Java Web Start.

Screenshots desta versão

Seguem mais algumas imagens capturadas do projeto em execução em seu estado atual:

Nova tela de loading do jogo

Detalhe de uma explosão (partículas em branco)

Na página de screenshots podem ser encontradas várias outras imagens desta fase do desenvolvimento do projeto.