Desenvolvendo jogos com J2ME – Parte 1
Os primeiros passos
Desenvolvendo jogos com J2ME – Parte I
Os primeiros passos
Iniciando uma série de artigos que abordam o desenvolvimento de jogos com J2ME, o presente artigo indica os primeiros passos nessa empreitada: uma introdução à arquitetura, às ferramentas utilizadas e ao processo de desenvolvimento.
Introdução
Segundo pesquisa recente da ABRAGAMES, o faturamento da indústria brasileira de jogos eletrônicos, somando-se software e hardware, foi de cerca de R$ 70 milhões em 2006, R$ 80 milhões em 2007 e deve fechar o ano de 2008 com cerca de R$ 90 milhões. Além disso, nota-se uma crescente participação das exportações nas empresas brasileiras, já que o mercado interno sofre muito com a pirataria. Para se ter uma idéia, em 2005, 30% de toda a produção nacional de jogos foi exportada, enquanto que, no ano de 2008, essa porcentagem deve fechar em torno de 43%. Os jogos para celular, por sua vez, são os principais propulsores do mercado brasileiro de jogos.
Entre as tecnologias para desenvolvimento de jogos para celulares, destaca-se o J2ME, também chamado de JavaME ou, ainda, JME. Trata-se de uma versão simplificada do Java, executada sobre uma máquina virtual Java reduzida, a KVM, que demanda menos recursos que a JVM (Java Virtual Machine).
O J2ME possui duas configurações básicas: CDC (Connected Device Configuration) e CLDC (Connected Limited Device Configuration). O CDC se destina a dispositivos com maior capacidade de processamento, o que permite a presença de recursos não disponíveis na configuração mais básica, o CLDC. Esta, porém, é a configuração utilizada pelos celulares, pagers e alguns PDAS (Personal Digital Assistant) menos poderosos, uma vez que tais dispositivos não dispõem de alto poder de processamento.
Uma vez definida a configuração, entra-se no âmbito dos perfis (profiles), responsáveis por determinar características mais específicas do dispositivo para o qual se está desenvolvendo. O profile, em conjunto com a configuration, fornece um conjunto de APIs para o desenvolvimento focado no grupo de dispositivos desejado. Assim, no caso do desenvolvimento de jogos e aplicações para celulares, utiliza-se a configuration CLDC (versão 1.0 ou 1.1) e o profile MIDP (Mobile Information Device Profile), na sua versão 1.0, 2.0 ou 2.1.
O MIDP 1.0 é compatível com quase todos os aparelhos ativos no Brasil, mas peca em não fornecer tantos recursos quanto a versão 2.0, principalmente no que tange à existência de componentes específicos para a criação de jogos e aplicações multimídia. Estudando-se o mercado brasileiro atual, conclui-se que a melhor escolha para o desenvolvimento de jogos com J2ME é usando o configuration CLDC 1.1 e o profile MIDP 2.0, que formam uma espécie de padrão da indústria de celulares no momento, dos mais baratos aos mais caros (alguns já suportam MIDP 2.1, mas a compatibilidade é retroativa, ou seja, um celular com suporte a MIDP 2.1 roda código MIDP 1.0 e também 2.0).
A Figura 1, desenvolvida pela Sun [SUN, 2008], fornece uma visão geral da plataforma Java. Nessa figura, é possível visualizar o JavaME. No caso dos celulares, a camada-base é a KVM. A camada de configuração, CLDC, está logo acima, sob a camada de perfil, MIDP. Por fim, sobre o MIDP, ainda podem existir pacotes opcionais, como os SDKs (Software Development Kit) da Nokia, por exemplo, fornecendo maiores facilidades para os desenvolvedores.
Figura 1 [SUN, 2008]
Ferramentas
Para executar as aplicações desenvolvidas em J2ME no computador faz-se necessário o uso de um emulador. A Sun disponibiliza o WTK (Java Wireless Toolkit), um kit que facilita o desenvolvimento e os testes das aplicações J2ME no computador. O WTK conta com um emulador, documentação, exemplos diversos e ferramentas que permitem, entre outras coisas, monitorar o uso de memória da aplicação.
Em conjunto com o emulador, costuma-se utilizar uma IDE (Integrated Development Environment) para agilizar o processo de desenvolvimento. A IDE que será adotada no decorrer desta série de desenvolvimentos de jogos em J2ME é o NetBeans 6.5, que pode ser baixado gratuitamente em seu site oficial (www.netbeans.org). A principal razão para a escolha do NetBeans é a presença de ferramentas visuais que aumentam bastante a produtividade, tais como o Game Builder (muito útil para os jogos) e o Visual Mobile Designer (utilizado para a confecção de telas de aplicação bem como estabelecer o seu fluxo). Apesar dessas ferramentas não substituírem por completo a codificação, podem aumentar a produtividade consideravelmente, desde que usadas na medida certa. A Figura 2 mostra a IDE NetBeans 6.5 integrada ao emulador do WTK 2.5.2 (o NetBeans na sua versão Mobility ou na versão completa já possui o WTK). Pode-se visualizar, ainda, a existência de diversas cenas de um jogo, construídas com o Game Builder.

Figura 2
O MIDlet
Uma aplicação J2ME é chamada de MIDlet, de forma análoga aos Applets (aplicações que são executadas no navegador) e os Xlets (aplicações de TV Digital). Os MIDlets são controlados por um gerenciador chamado de AM (Application Manager). A Figura 3, desenvolvida por Fonseca [FONSECA, 2005], demonstra o ciclo de vida de um MIDlet. Quando um MIDlet é invocado, o Application Manager faz uma chamada ao método startApp(), responsável por tornar o estado do MIDlet “ativo”, conforme pode ser visto na figura. No decorrer da execução, a aplicação pode ser pausada, seja por desejo do usuário ou por uma chamada ou mensagem recebida. Quando isso ocorre, é executado o método pauseApp() do MIDlet. A própria aplicação pode pausar a si mesma se necessário, utilizando o método notifyPaused(). Nesse momento, o estado da aplicação se torna “pausado”. Já quando a aplicação é finalizada, o método destroyApp() do MIDlet é invocado, seja por parte do AM ou da própria aplicação, utilizando o método notifyDestroyed(). Nesse caso, a aplicação entra no estado “destruído”. Percebe-se pela Figura 3, ainda, que do estado “pausado” pode-se retornar para o “ativo”, pois o método startApp() é novamente chamado após o fim da pausa. Outra possibilidade é que a aplicação pode ser finalizada, dirigindo-se diretamente do estado “pausado” para o estado “destruído”.

Figura 3 [FONSECA, 2005]
Classes do J2ME
A Figura 4, também desenvolvida por Fonseca [FONSECA, 2005], mostra a hierarquia de classes do J2ME ou, mais precisamente, do perfil MIDP. No maior nível da hierarquia, existe a classe Display, que representa a tela do aparelho. A classe Displayable, por sua vez, representa qualquer componente que possa ser exibido no Display e divide-se em dois grupos: as classes de alto nível (que herdam da classe abstrata Screen) e as classes de baixo/médio nível (representadas pela classe Canvas e, no MIDP 2.0, também por sua classe filha, a GameCanvas). A classe abstrata Screen contém quatro subclasses básicas: List, Form, Alert e TextBox. São consideradas de alto nível porque se comportam para o desenvolvedor como componentes apropriados para a criação de interfaces, no caso listas, formulários, mensagens de aviso e caixas de texto, respectivamente. Na outra vertente, a classe Canvas é a classe derivada de Displayable que representa o topo das classes de baixo/médio nível, por permitir um controle maior do dispositivo, permitindo ao programador moldar o display do aparelho livremente. Assim, é visível que a classe Canvas é de extrema importância para o desenvolvimento de jogos e, por isso, requer atenção especial. As demais classes, derivadas de Screen, apesar de serem mais voltadas para o desenvolvimento de aplicações gerais, também podem ser bastante úteis na criação de jogos, principalmente para a confecção de interfaces out-game: menus, telas de pontos, etc. No decorrer desta série, essas classes serão explicadas em detalhes, especialmente a Canvas e sua filha, a GameCanvas.

Figura 4 [FONSECA, 2005]
Próxima Etapa
Após este artigo introdutório da série, no qual foi apresentado o J2ME e as ferramentas que serão utilizadas para o desenvolvimento dos jogos, entrar-se-á na prática. O próximo artigo abordará a classe Canvas e sua derivada GameCanvas em detalhes, através do desenvolvimento de um exemplo de jogo clássico: o PONG. A idéia é que os conceitos possam ser passados à medida que o jogo é desenvolvido, tornando o processo de aprendizado divertido e intuitivo.
Referências
[FONSECA, 2005] Fonseca, Enrico. iMasters – Ciclo de vida do MIDlet. Disponível em: http://imasters.uol.com.br/artigo/3416/java/ciclo_de_vida_do_ midlet. Acessado em 13 de janeiro de 2008.
[SUN, 2008] Sun Microsystems – Sun Developer Network (SDN). JavaME Technology – Powering your Devices Everywhere. Disponível em: http://java.sun.com/javame/technology/index.jsp. Acessado em 13 de janeiro de 2008.


Quando vai postar o resto dos artigos cara, espero que breve, muito bom mesmo
em 1/6/2009 21:07 - Responder
Erisvaldo JúniorCara eu vou postar os próximos artigos em breve, no momento estou muito apertado, mas assim que tiver uma folguinha postarei dois ou três seguidos.
Qualquer dúvida pode enviar por e-mail.
Abraço!
em 16/6/2009 13:55 - Responder
Space do autor

Estudo comparativo entre banco de dados IBM Informix e Microsoft SQL

2
0
Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!