Atenção: por essa edição ser muito antiga não há arquivo PDF para download.Os artigos dessa edição estão disponíveis somente através do formato HTML.
Game API
Simplicidade e poder em jogos para celulares
A API de jogos do MIDP 2.0 fornece uma infra-estrutura sólida para a criação de games para dispositivos J2ME
O mercado de jogos para dispositivos móveis apresenta tendências de enorme crescimento. Segundo um estudo do IDC, são previstos mais de 70 milhões de jogadores até 2007 – dez vezes o número do ano passado (2002).
A programação de jogos para pequenos aparelhos apresenta características bem distintas em relação aos para PCs ou consoles de videogames. O poder de processamento, o tamanho da tela, a quantidade de memória e a largura de banda disponível são muito mais limitados, portanto é necessário que os jogos sejam planejados considerando essas características.
Por outro lado, as restrições podem ser vistas como vantagens para o programador independente. Jogos sendo desenvolvidos para celulares atualmente são comparáveis aos de antigos videogames, como o primeiro Nintendo (8 bits) ou o Super Nintendo, de 16 bits. Costumam ser bem mais simples do que os jogos para PCs ou consoles atuais, cuja criação muitas vezes exige investimentos de milhões de dólares, equipes de dezenas de pessoas e anos de trabalho. No caso de jogos para celulares, equipes de tamanho reduzido, geralmente com cinco pessoas ou menos, conseguem desenvolver jogos em alguns meses – e, claro, com um orçamento muito menor.
J2ME e MIDP 2.0
Uma vantagem de desenvolver jogos para celulares é poder tirar proveito da plataforma J2ME. Por ser um padrão aberto, o Java 2 Micro Edition não requer autorização dos fabricantes de aparelhos, como acontece para o caso de videogames. Com J2ME, também não ocorre uma prática comum na indústria de jogos para PCs: o licenciamento de engines de jogos (como o do Quake) a preços altíssimos para servirem de base para outros jogos que seguem o mesmo estilo. Além disso, a distribuição dos jogos é facilitada, pois, ao contrário do que acontece no mercado tradicional de games, em que os principais canais de distribuição são as lojas de varejo, as aplicações para celulares são vendidas diretamente ao consumidor, pela internet através de portais, ou pela rede das operadoras.
Mais especificamente, o MIDP 2.0, a nova versão do perfil J2ME direcionado principalmente para celulares, é um passo fundamental para uma maior padronização da programação Java para dispositivos wireless. Antes dos avanços do MIDP 2.0, os fabricantes se viam forçados a oferecer recursos adicionais criando extensões suportadas apenas pelos seus modelos de celulares – perdia-se assim uma das características principais de Java: a portabilidade. Na nova versão do MIDP, várias funcionalidades úteis para o desenvolvimento de jogos foram acrescentadas, como, por exemplo, o suporte à transparência de pixels. Também foi incluída a Game API, que serve como fundação para a criação de jogos, permitindo um melhor uso das capacidades gráficas nativas do aparelho, trazendo assim maior desempenho.
Game API: visão geral
As cinco classes do pacote javax.microedition.lcdui.game (veja a Figura 1) estendem as capacidades do MIDP para jogos 2D de diversas formas significativas. Um dos conceitos principais da Game API é permitir que o conteúdo da tela seja composto por layers (imagem de fundo, detalhes do cenário, personagens etc.), representadas por objetos Layer. Uma layer pode ser qualquer elemento gráfico, e tem como características posição, tamanho e visibilidade.
As duas subclasses concretas de Layer são Sprite e TiledLayer. Sprite é utilizada para compor uma animação a partir de vários quadros, oferecendo também métodos para movimentação e giro, além de detecção de colisões. A classe TiledLayer possibilita a criação de uma imagem grande através da composição de partes menores, o que é bastante útil para a construção de cenários ou fundos (backgrounds), como veremos adiante. A classe LayerManager controla o desenho de um grupo de layers, e GameCanvas suporta o ciclo básico do jogo, implementando mecanismos para obter o estado das teclas, manipular o buffer gráfico e enviar gráficos para a tela.
Preparação e exemplo
Como mostrado no artigo "Projeto de jogos wireless" (Edição 3), o primeiro passo para criar um jogo é realizar o projeto conceitual, definindo suas características. No exemplo deste artigo, criaremos um jogo do tipo "Pac Man", que, como a maioria dos leitores lembrará, compreende um labirinto em que o personagem controlado pelo usuário deve recolher todas as "bolinhas" e evitar o contato com os fantasmas – isto quando não estiver sob efeito das "bolinhas de poder" localizadas nos cantos do labirinto, que o tornam temporariamente invencível. O exemplo é mostrado em execução na Figura 2.
Para desenvolver o jogo você precisará de um kit de desenvolvimento para MIDP 2.0. Pode começar utilizando o J2ME Wireless Toolkit 2.0 (WTK) da Sun (veja links), que possui ferramentas para gerar arquivos JAR e JAD, além de emuladores para testar as aplicações. Vale a pena também obter os kits das fabricantes de celulares, que incluem emuladores para aparelhos específicos.
O processo de desenvolvimento de jogos MIDP com o WTK é igual ao de qualquer outro MIDlet (veja o quadro "Executando o exemplo"). As imagens utilizadas no jogo devem ser copiadas para o diretório <J2ME_HOME>/apps/PacMan/res (onde <J2ME_HOME> é o diretório raiz do WTK), e o código fonte para <J2ME_HOME>/apps/PacMan/src.
O código do exemplo está dividido em dois pacotes. Em ...