De que se trata o artigo:

Neste artigo será apresentada a construção de um jogo de corrida de carros. Mostraremos de forma prática e passo a passo os conceitos relacionados ao sistema Android para este tipo de jogo.

Em que situação o tema útil:

Recentemente, os jogos para celulares ganharam popularidade por fornecer o entretenimento pessoal móvel. Esta popularidade faz com que os jogos desempenhem um papel fundamental na geração de renda para as operadoras de celulares, desenvolvedores de jogos e fabricantes de aparelhos telefônicos. Neste contexto, este artigo pode ser útil para desenvolvedores iniciantes ou experientes que desejam entrar neste fantástico mundo dos jogos.

Resumo DevMan

O mercado móvel está em expansão e hoje podemos encontrar vários dispositivos com Android, facilitando assim a sua disseminação. Outro ponto bastante importante é o fato da plataforma ser livre e ter o seu código fonte liberado, assim como um SDK que possui um emulador, facilitando o desenvolvimento. De acordo com dados sobre o Market - loja de aplicativos para Android OS da Google, jogos representam entre 30 e 50 por cento do volume de downloads de aplicativos. Sendo assim, torna-se um grande nicho para ser explorado pelos desenvolvedores, e este artigo vem contribuir neste aspecto.

A plataforma Android tem como base o kernel 2.6 do Linux. Sobre ele temos uma máquina virtual chamada Dalvik, que é responsável por executar as aplicações. O Android padrão (pois cada fabricante pode modificá-lo) vem com algumas aplicações padrões como media player, calendário, calculadora e SMS/MMS. Além disso, os usuários de aparelhos Android contam com uma loja virtual chamada Android Market.

Para a plataforma Android, a Google disponibiliza o Android SDK, que é um conjunto de ferramentas que provêm a infraestrutura necessária para a construção de aplicações, como: bibliotecas de classes e um simulador para que possamos testar nossos aplicativos sem a necessidade do aparelho real. Esse SDK está disponível para Windows, OS X e Linux.

O mercado móvel está em expansão e hoje podemos encontrar vários dispositivos com Android, facilitando assim a sua disseminação. Outro ponto bastante importante é o fato da plataforma ser livre e ter o seu código fonte liberado, assim como um SDK que possui um emulador, facilitando o desenvolvimento.

Recentemente, os jogos para celulares ganharam popularidade por fornecer o entretenimento pessoal móvel. Esta popularidade faz com que os jogos desempenhem um papel fundamental na geração de renda para as operadoras de celulares, desenvolvedores de jogos e fabricantes de aparelhos telefônicos.

O desenvolvimento de jogos (ler Nota DevMan 1) passa por várias etapas, e algumas delas são: Game Design; Rascunho dos objetos e cenários; Modelagem; Engenharia de Software; e Programação.

Nota DevMan 1. Conceitos de jogos

Para que o leitor possa acompanhar melhor o artigo, vamos relembrar alguns conceitos aqui:

• Curva de aprendizagem: é o tempo que um jogador necessita para assimilar os comandos e as regras do jogo. Existem principalmente duas abordagens utilizadas para permitir que o jogador aprenda as regras e os comandos: (1) através da criação de uma fase do jogo, conhecida como tutorial, onde os comandos e as regras são explicitamente demonstrados e (2) através da criação de fases iniciais com níveis de dificuldade baixos. Essas abordagens facilitam a despertar o interesse do jogador.

• Tempo de vida do jogo: quantas horas em média um usuário vai continuar jogando este jogo antes de perder o interesse por ele.

• Fator de replay: quantas vezes o jogador vai jogar novamente, mesmo já tendo terminado o jogo.

• Sprite: é um elemento básico visual que pode ser renderizado a partir de um ou vários frames de uma imagem. Estes vários frames podem ser utilizados para fazer a animação do sprite. Normalmente corresponde a um objeto na tela do jogo, como um inimigo, o personagem principal, ou um tiro.

• FPS (frames per second): significa quadros por segundo. Define quantos quadros são mostrados ao usuário em um segundo de jogo. Para jogos em celulares, o mínimo aceitável são 10 quadros por segundo. Quanto maior a quantidade de quadros por segundo, maior é o processamento requerido.

• Plataforma-alvo: celular ou conjunto de celulares que serão capazes de rodar o jogo.

• Público-alvo: pessoas às quais o jogo se destina.

• Turno de jogo: conjunto de atividades que o jogo faz a cada frame de jogo. Entre atividades típicas, estão repintar a tela, verificar os pontos do jogador ou colisões entre os sprites.

O Game Design é a etapa onde o jogo é criado com suas idéias, personagens e estória, ou seja, é a concepção propriamente dita. O rascunho do jogo é a etapa do processo que auxilia os modeladores a criarem o mundo do jogo. Já a modelagem é a etapa onde serão criados modelos e texturas utilizados no jogo. Na engenharia de software é feita a modelagem do sistema, e na programação, o jogo é desenvolvido. Este artigo abordará apenas a etapa da programação.

Assim, a motivação deste artigo é aprender conceitos relacionados a jogos. Iremos desenvolver um pequeno esboço de framework para o funcionamento e controle do jogo. Neste contexto, neste tutorial desenvolveremos um jogo de corrida usando vários recursos tais como: threads, sprites, soundpool para reprodução de som através da API Média Player do Android e muitos outros.

Preparando o ambiente de desenvolvimento

O Android Development Tools (ADT) trata-se de um plugin para o eclipse que facilita a criação rápida de novos projetos Android. Ele possibilita a criação de interfaces de usuário, adicionar componentes, depurar aplicações utilizando as ferramentas do SDK android e exportar os .apk (assinados ou não).

O ADT estende os recursos do Eclipse para permitir que você configure rapidamente projetos Android, crie uma aplicação, adicione componentes baseados na API do framework Android, depure suas aplicações usando as ferramentas do SDK e até exporte APK assinadas (ou não) para distribuir sua aplicação.

Em geral, usar o Eclipse com o ADT é a forma mais recomendada de desenvolver aplicações Android e o jeito mais rápido de começar. Se você usa Eclipse, o plugin ADT lhe fornecerá um bom começo no desenvolvimento de aplicações Android.

Para instalar e atualizar o plugin ADT, você pode tirar vantagem do recurso de atualização remota do Eclipse. Configurando um site de atualização, você pode facilmente baixar, instalar e verificar atualizações do ADT. Alternativamente, você pode baixar a última versão do ADT para seu computador como um arquivo local.

Sendo assim, nosso primeiro passo é instalar o SDK do Android e o plugin ADT no Eclipse. Iremos precisar deles para construir o nosso jogo e você pode fazer isto baixando o SDK através do site http://developer.android.com/sdk/index.html.

Uma vez que você tenha o SDK e o ADT plugin instalado, é hora de configurar o nosso projeto. Para isso, abra o Eclipse, vá em Window> Android SDK e AVD Manager, clique em virtual devices e verifique se existe ao menos um dispositivo virtual configurado. Se não houver, conforme mostra a Figura 1, dê um clique no botão New, preencha o campo Name com um nome sugestivo, adicione-o selecionando o target Android 2.1 - API level 7, se necessário informe o tamanho do SD Card a ser criado, se for necessário capturar telas do aplicativo, deixe a opção Snapshot selecionada. Pode-se também escolher ou definir as propriedades de resolução do Skin, assim como também acrescentar características de hardware, tais como acelerômetro, gravar áudio, gps e outros. Feito isto, clique no botão Create AVD para criar o dispositivo virtual que irá rodar a aplicação de acordo com a Figura 2.

Figura 1. Verificando o Virtual Device

Figura 2. Criando e configurando o Virtual Device

Arquitetura básica do jogo

De uma forma geral, um jogo é uma aplicação com resposta em tempo real, diferente de uma aplicação para edição de imagens que fica estática esperando que um evento (comando) seja disparado pelo usuário. Um jogo também espera por estímulos do usuário ou do ambiente, mas enquanto espera, todo um “motor” já esta em funcionamento.

Em um sistema Android, por exemplo, temos como principal entrada de dados a tela, que é sensível ao toque. A pressão que o usuário faz no “touch screen” pode ser utilizada como uma entrada de dados, assim como outros sensores também podem ser utilizados no jogo, tais como GPS, microfone, acelerômetro, câmera, bússola, e outros.

Neste jogo de corrida, o carro será controlado pelo acelerômetro e a velocidade pela pressão exercida na tela. O motor do jogo monitora o evento onTouch que em cada toque determina a pressão e com esta iremos determinar a velocidade do carro. O movimento é determinado pela escuta do sensor acelerômetro, atualizando a posição do carro, e verificando se houve ou não colisão. Caso positivo, iremos exibir uma sequência da explosão com o som da mesma. Enfim, esta será a lógica do jogo que utilizaremos. Perceba que limitamos sua complexidade justamente para conseguirmos passar o conteúdo de forma mais bem explicada neste artigo. Como exemplo de itens que poderiam ser adicionados temos: controle de vidas, de níveis, etc.

Para implementarmos esta arquitetura, nosso jogo será composto de três módulos:

Lógica do jogo: este módulo é responsável pela mudança de estado dos objetos “atores” do jogo. Com atores quero dizer cada objeto que tem um estado. Nosso carro, por exemplo, será deslocado de acordo com o acelerômetro e isso se traduz em calcular a velocidade do movimento do carro e verificar possíveis colisões;

Som: este módulo irá produzir sons considerando a colisão;

Gráficos: este é o módulo responsável pela apresentação visual do jogo. Isso pode ser tão simples como desenhar diretamente na tela, através de um buffer, ou mesmo algo mais elaborado utilizando OpenGL (ler ...

Quer ler esse conteúdo completo? Tenha acesso completo