Sérgio Lopes Sakabatō, the reversed blog!

Bem, talvez não sejam os primeiros desenvolvimentos mas serão certamente os primeiros a serem divulgados e a verem luz além da retro-iluminação do ecrã do portátil…

Com o desenvolvimento do tutorial de Java na wiki do P@P, em que me tenho visto envolvido, e porque pretendia apresentar um pequeno exemplo do uso de Java e de POO, resolvi pegar na Slick2D e implementar um pequeno clone do Xenon. O jogo não é nada de novo, é mais um shoot’em up em que o jogador controla uma pequena nave e tentar eliminar todos os inimigos que surgem na área. Possui os elementos clássicos com pontuação, energia, vidas, bónus para aumentar as capacidades da nave e alguns inimigos feios.

O motor revelou-se bastante simples de usar e numa tarde folgada deu para implementar quase todo um jogo, mesmo estando a aprender a mexer com a API disponibilizada. A instalação da biblioteca é trivial: colocar o Jar na classpath, tipicamente utilizando o IDE e adicionando o ficheiro ao projecto, a única coisa diferente, devido ao facto da biblioteca usar OpenGL, é que precisamos de uns pequenos ficheiros específicos para a nossa plataforma, de qualquer modo, tudo incluído no ficheiro disponível no site oficial da Slick2D.

Quanto ao desenvolvimento do jogo, e porque o objectivo é o tutorial de Java, o POO foi levado um pouco ao extremo, ou pelo menos algumas coisas que poderiam ser mais amigas do processador foram descartadas em favor da correcção da modelação. Portanto, objectos para iterar e para controlar é o que não falta.

Comecei por criar  uma estrutura que me permitisse separar os elementos visuais e fazer com que existissem no jogo Entidades que podem ou não ter representação visual, essa representação é fornecida por uma hierarquia de Sprites que podem ou não conter um dos vários tipos de Movimento existentes e que fossem actualizadas ao longo do decorrer do jogo.

São essas Sprites que oferecem a possibilidade de detecção de colisões, através de um mecanismo ligeiramente alterado e baseado no tutorial de Detecção de Colisões Entre Sprites que existe na wiki do P@P. Neste caso em vez dos rectângulos reduzidos que o tutorial usa, fiz uso de outras formas como círculos quando os elementos eram redondos ou de losangos quando, apesar de quadrados, tinham uma forma mais complexa.

A deslocação do mapa é criada com base em graphics context translation, processo em que movo a área de desenho para criar o efeito de movimento do mapa sem afectar o posicionamento de outros elementos.

Até ao momento a experiência tem sido positiva, o pouco que trabalhei no projecto permitiu conhecer melhor a biblioteca e ver que, um jogo 2D pode ser desenvolvido num par de horas usando um motor como a biblioteca Slick2D. Espero que este projecto dê ainda origem a um ou outro tutorial sobre esta biblioteca e que me permita avançar com este pequeno passa-tempo que é desenvolver jogos. Brevemente espero ter mais notícias sobre este tema, até lá podem ficar com duas imagens do estado actual, uma onde são visíveis alguns elementos de debug e outra sem os ditos elementos.

Screenshot com elementos de detecção de colisões Screenshot sem elementos de debug

Neste momento estou à procura de imagens para substituir as que são usadas, já que para essas não tenho permissão dos autores, pelo que as imagens que vêm agora serão certamente diferentes do que vai ser lançado no tutorial, e espero que para a semana, quando voltar a pegar no projecto, possa terminar as colisões e apresentar tanto o jogo pronto como o código, que é o mais importante neste caso.