quinta-feira, 14 de abril de 2011

Nosso Projeto de Java e TDS

Olá pessoal.

Como vocês já sabem, nossa ideia principal para o projeto de Java e TDS é a de um jogo. Abaixo, descreveremos como ele funcionará inicialmente.

Ele terá dois modos de jogo, a saber:

  • Singleplayer – Para um jogador, com sistema de fases e objetivos;
  • Multiplayer – Para até quatro jogadores (por questões de jogabilidade), com sistema de turnos;


Estrutura Básica do Jogo


Nos dois modos de jogo, cada jogador será capaz de lançar planetas, de massas e tamanhos variados.

Espalhadas pelo mapa estarão estrelas, também de tamanhos e massas diferentes.

O objetivo do jogador será atirar seu planeta e fazer com que ele orbite uma das estrelas, sem colidir com ela. Quanto mais próximo o planeta estiver de sua estrela, maior será a pontuação dada ao jogador. Caso o planeta colida com a estrela, o jogador perderá pontos. Será estabelecido também um tempo de “resfriamento” do sistema de lançamento de planetas, tempo este que o jogador deverá esperar antes de poder lançar outro planeta.

O jogo contará com fases de tutorial, para que o jogador se acostume com a jogabilidade. Além disso, contará com níveis de dificuldade crescentes. Conforme a dificuldade aumentar, poderemos fazer com que outros corpos como asteróides passem a cruzar o mapa, aleatoriamente, para que caso ocorra colisão com um planeta, este tenha a sua órbita alterada.

Observação: Alguns aspectos físicos talvez tenham de ser alterados, ou seja, seus efeitos poderão ser minimizados, para que a jogabilidade não fique muito complexa.


Modo Singleplayer


O modo singleplayer será composto por diferentes fases, cada uma delas com seus objetivos e níveis de dificuldade distintos. Caso os objetivos sejam cumpridos, o jogador ganhará pontos.

Para facilitar a jogabilidade, ao redor da estrela serão desenhadas áreas coloridas que demarcarão faixas de pontuação, que serão calculadas de acordo com a distância em relação à estrela. Ao colocar um planeta dentro de determinada faixa, será calculada a distância do local até a estrela e atribuída uma pontuação pela jogada.

Vale notar que caso um planeta atinja outro que já esteja orbitando uma estrela, a pontuação poderá ser diminuída ou aumentada, dependendo de onde os planetas forem parar após a colisão.

No modo singleplayer será estabelecido também um tempo de “resfriamento” do sistema de lançamento de planetas, tempo este que o jogador deverá esperar antes de poder lançar outro planeta. Além disso, a fase terá um timer que determinará quanto tempo o jogador permanecerá nela.


Modo Multiplayer


Cada jogador ficará posicionado em uma extremidade da tela e as partidas serão divididas em turnos, de modo que cada jogador só poderá jogar na sua vez. Além de atirar planetas, poderemos disponibilizar outros recursos, na forma de armas, que servirão para atrapalhar os outros jogadores.

Algumas armas que consideramos são:

  • Lança-asteróides;
  • Explosão de supernova (dificultaria a vez dos outros jogadores por causa da claridade);
  • Criador de poeira cósmica (também dificultaria a vez dos outros jogadores, dessa vez por encobrir a visão com uma camada de poeira).

Além disso, um jogador poderá atirar um planeta seu para tirar planetas de outros jogadores de órbita, recebendo pontuações extras por isso.

O jogador que conseguir o maior número de pontos ao final de uma partida será o vencedor.

Observação: Estamos considerando disponibilizar também um sistema de ranking para os jogadores. Entretanto, ele só será disponibilizado caso consigamos cumprir com os outros objetivos no tempo previsto.


Tecnologias


Inicialmente, pensamos em utilizar as seguintes tecnologias para desenvolver nosso jogo:

  • GWT, pois desejamos que o jogo funcione na Internet (vamos checar a possibilidade de usar JSP);
  • App Engine, pois permite que rodemos gratuitamente (pelo menos inicialmente) nossa aplicação na infraestrutura do Google;
  • JBox2D para as simulações de física(link para download dos códigos fontes e visualização de uma demo: http://www.jbox2d.org/ );
  • Channel para realizarmos as transações de rede.

Gostaríamos de ressaltar que pode ser que mudemos de ideia com relação a essas tecnologias, pois a partir de agora teremos de avaliar a viabilidade do uso mais a fundo.

Bom, that's all folks.

Se tiverem sugestões, podem postá-las nos comentários que elas são bem-vindas.

Até a próxima postagem =)