Desenvolvendo jogos com J2ME – Parte 1
Os primeiros passos
Estatísticas:










votos: 2
Serviços:

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.

Participe! Inclua um comentário
1/6/2009 21:07
Quando vai postar o resto dos artigos cara, espero que breve, muito bom mesmo
[responder]
Erisvaldo Júnior
16/6/2009 13:55
Cara 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!
[responder]





[vídeo] Consumindo os dados via ajax – Consumindo dados com getJson do jQuery utilizando POCO EF 4.0 – Parte 3

[vídeo] Classe POCO – Consumindo dados com getJson do jQuery utilizando POCO EF 4.0 – Parte 1

Imprimindo Relatório : VCL Crystal Reports XI - Delphi

VCL Crystal Reports XI - Delphi

[vídeo] Gerenciamento das Comunicações - Curso Gerência de Projetos – Parte 8

[vídeo] Plano de Comunicação - Curso Gerência de Projetos – Parte 9

[vídeo] Seleção e Priorização de Projetos - Curso Gerência de Projetos – Parte 6

[vídeo] Escopo, metas, premissas, restrições - Curso Gerência de Projetos – Parte 7

[vídeo] Documento Conceitual do Projeto - Curso Gerência de Projetos – Parte 5


Você está em:





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


