2D Game

Propaganda
2D Game
Nuno Ricardo Curralo Martins, Nº 22392
Bruno Alexandre Amorim Melo, Nº 19857
Trabalho realizado sob a orientação de
Rui Pedro Lopes
Bárbara Barroso
Engenharia Informática
2013/ 2014
2D Game
Relatório da UC de Projecto
Licenciatura em Engenharia Informática
Escola Superior de Tecnologia e Gestão
Nuno Martins, Bruno Melo
2013/2014
iii
A Escola Superior de Tecnologia e Gestão não se responsabiliza pelas opiniões expressas
neste relatório.
iv
Certifico que li este relatório e que na minha opinião, é adequado no seu
conteúdo e forma como demonstrador do trabalho desenvolvido no
âmbito da UC de Projecto.
___________________________________________
Rui Pedro Lopes - Orientador
Certifico que li este relatório e que na minha opinião, é adequado no seu
conteúdo e forma como demonstrador do trabalho desenvolvido no
âmbito da UC de Projecto.
___________________________________________
Bárbara Barroso - Co-orientadora
Certifico que li este relatório e que na minha opinião, é adequado no seu
conteúdo e forma como demonstrador do trabalho desenvolvido no
âmbito da UC de Projecto.
___________________________________________
- Arguente
Aceite para avaliação da UC de Projecto
v
vi
Dedicatória
Dedicamos este projecto especialmente aos nossos pais e aos nossos irmãos, pessoas
pelas quais temos uma grande admiração, um grande orgulho e que sempre nos apoiaram, em
todos os momentos das nossas vidas. Um muito obrigado a todos eles.
Eu, Bruno Melo, quero dedicar este projecto á minha namorada Daniela que sempre
me apoiou e nos momentos mais difíceis me incentivou pois sem ela não estaria nesta fase
final do curso.
vii
viii
Agradecimentos
Queremos agradecer ao nosso orientador, Professor Rui Pedro Lopes, por toda a sua
orientação, apoio e disponibilidade prestados durante este ano lectivo.
Queremos agradecer às nossas famílias, em especial aos nossos pais, por todo o apoio
dado durante a realização do curso, e ainda aos nossos irmãos, que nunca nos deixaram
desanimar, sempre nos indicando os melhores caminhos, um enorme obrigado por
acreditarem sempre em nós e naquilo que fazemos e por todos os ensinamentos de vida que
nos dão.
Por fim, queremos agradecer a todos os nossos amigos e colegas que nos
acompanharam durante a realização do projecto e que sempre nos acompanharam durante as
nossas vidas.
Esperamos que esta etapa, que agora terminamos, possa, de alguma forma, retribuir e
compensar todo o carinho, apoio e dedicação que constantemente nos oferecem. A eles,
dedicamos todo este trabalho.
ix
Resumo
O desenvolvimento de aplicações para smartphones é uma área relativamente recente,
mas que tem vindo a crescer a um ritmo bastante rápido. Esta área surge de uma forma natural
devido à grande evolução das características dos smartphones e também devido à sua
crescente popularidade. As grandes comunidades de programadores que se dedicam a
desenvolver aplicações e ajudar quem queira começar a programar para uma das várias
plataformas presentes no mercado, aliado ao fácil acesso recursos computacionais, kits de
desenvolvimento, documentação e aos dispositivos para o qual se pretende desenvolver a
aplicação também ajudam a que esta seja uma área bastante apelativa a novos programadores
e que surjam bastantes casos de sucesso. Este trabalho tem o intuito de documentar o
desenvolvimento de um jogo em 2D, trazendo uma possível solução, para as diversas
dificuldades encontradas no processo.
Palavras-chave: Aplicações móveis, jogos, Android, 2D.
x
xi
Abstract
The development of mobile applications is an recent area that has been growing
quickly. This arises in a natural way due to the great evolution of the characteristics of
smartphones and also due to its increasing popularity. The large communities of
programmers that develop applications and are willing to help new programmers that are
starting to program for one of the several platforms of the market, this fact allied that is easy
to access the computing resources, developer kits, documentation and the target devices for
the application also contribute to make this a quite appealing area with several success
stories. This study aims to document the development of a game in 2D, supplying a possible
solution to the problems found in the process.
Keywords: Mobile applications, games, Android, 2D.
xii
xiii
Conteúdo
1
Introdução ........................................................................................................................ 21
1.1
Enquadramento ........................................................................................................... 21
1.2
Escolha do Sistema Operativo .................................................................................... 22
2
Motores de Jogos ............................................................................................................. 24
2.1
O que é um Motor de Jogo .......................................................................................... 24
2.2
Unity ........................................................................................................................... 26
2.3
Cocos 2D ..................................................................................................................... 26
2.4
Allegro ........................................................................................................................ 27
2.5
LibGdx ........................................................................................................................ 28
3
Arquitectura e Tecnologia Utilizada ................................................................................ 1
3.1
Descrição detalhada do problema ................................................................................. 1
3.2 Tecnologias utilizadas ................................................................................................... 3
3.2.1 O Android ............................................................................................................... 3
3.2.2 A plataforma Android ............................................................................................ 3
3.2.3 Arquitectura do Android ........................................................................................ 4
3.2.4 SDK ........................................................................................................................ 5
3.2.5 Linguagem Java...................................................................................................... 5
3.2.6 IDE Eclipse ............................................................................................................ 6
4
Implementação ................................................................................................................... 7
4.1
Arte e Desenvolvimento do Jogo ................................................................................ 16
4.2
História ........................................................................................................................ 16
4.3
Regras e Objetivo ........................................................................................................ 16
5
Conclusão ......................................................................................................................... 17
5.1
Trabalho Futuro .......................................................................................................... 17
Referências bibliográficas...................................................................................................... 18
xiv
xv
Lista de Figuras
Figura 1 – Previsão de crescimento dos Sistemas Operativos até 2018
Figura .2 – Ecrã inicial do Jogo
Figura .3 - Captura do ecrã de espera para o jogo começar
Figura .4 – Captura do ecrã da janela de fim de jogo
Figura .5 - Arquitectura do Android.
Figura .6 - Código Java, adiciona imagem na animação e faz update desta
Figura 7 - Código Java da Classe Assets
Figura .8 - Código Java da Classe Background
Figura .9 - Código Java, cria a janela quando o acaba o jogo
Figura .10 - Código Java da Classe LoadingScreen
Figura .11 - Código Java de da Classe MainCar onde é definida a posição e velocidade do carro
Figura .12- Código Java para verificar onde é feito o clique
Figura .13 - Código Java da Classe Tile
Figura .14- Estrutura do Projecto
Figura .15 - Percentagem de versões Android activas
Figura .16 - Captura de ecrã do ficheiro AndroidManifest.xml
xvi
xvii
Lista de Tabelas
Tabela .1- Lista de Motores de Jogos
Tabela 2 – Lista das versões de Android
xviii
Lista de Abreviaturas
OHA – Open Handset Aliance
HTC – High Tech Computer Corporation
SDK – Software Developers Kit
2D – Duas Dimensões
3D – Três Dimensões
API - Application Programming Interface
GPL - General Public License
ADT - Android Development Tools
IDE - Integrated Development Environment
IBM - International Business Machines
xix
xx
Capítulo 1
1 Introdução
Este trabalho de projecto visa a concepção e o desenvolvimento de jogo em 2D, assente
numa plataforma móvel, como por exemplo um telemóvel.
Foi feita uma pesquisa prática onde foi sendo testada a informação recolhida para o
desenvolvimento do nosso projecto.
Este relatório está organizado em 5 capítulos. Este, onde é feita uma pequena
introdução, são definidos os principais objectivos, caracterização da estrutura do documento e
explicação por que motivo foi escolhido Android como sistema operativo onde a aplicação
iria ser jogada. No Capítulo 2, explica-se o que é um Motor de Jogo e alguns detalhes de uma
amostra deste tipo de aplicações e de frameworks que também é possível utilizar para o
desenvolvimento de jogos. No Capítulo 3 é apresentada as soluções e as tecnologias utilizadas
na sua concretização. No capítulo 4 é descrita a forma que o projecto foi desenvolvido. No 5º
e último capítulo, é apresentado o resumo do projecto, uma análise autocrítica e linhas de
investigação para trabalhos futuros.
1.1 Enquadramento
As empresas de desenvolvimento de jogos sempre tiveram um papel importante no
desenvolvimento de muitas áreas da informática, como por exemplo Inteligência Artificial,
Computação Gráfica e Simulação, entre muitas outras.
21
O desenvolvimento de jogos para plataformas móveis, como Android tem vindo a
crescer de forma exponencial, pois aliado há grande diversidade de dispositivos e custo dos
mesmos, o aumento da qualidade destes dispositivos.
Os jogos em plataformas móveis têm também ganho um maior número de utilizadores,
pois por vezes o que o jogador quer não é um jogo realista, com gráficos e/ou uma história
complexa e que lhe proporcione várias horas de diversão, que actualmente só um Computador
ou Consola de Jogos consegue oferecer; o que pretendem é passar um pouco de tempo que
tem disponível, ou mesmo alguma distração para ajudar a passar o tempo enquanto esperam
por algo.
1.2 Escolha do Sistema Operativo
A principal razão que nos levou a desenvolver o jogo para a plataforma Android, foi o
grande crescimento que este sistema operativo tem vindo a sofrer nos últimos anos e o
crescimento que ainda pode alcançar, fator que pode ser visto na imagem abaixo.
Figura 1 – Previsão de crescimento dos Sistemas Operativos até 2018
Por o Sistema Operativo Android ser a plataforma de dispositivos móveis que possui
um maior número de utilizadores, possuir uma elevada variedade de ferramentas gratuitas que
auxiliam o desenvolvimento são aspectos muito importantes na escolha do Sistema Operativo
alvo. Para além das razões anteriormente referidas, tem que se ter em conta a parte
económica, pois se a aplicação for bem recebida pela comunidade de utilizadores é possível
ganhar dinheiro com este tipo de aplicações.
22
Para publicar uma aplicação para a Google Play Store é necessário ter conta no
Google Wallet e pagar uma taxa de registo de 25 Dólares. Para publicar uma aplicação para a
loja oficial da Apple é necessário possuir conta no iTunes tendo um custo anual de 99 Dólares
sendo necessário renovar esse contrato anualmente, caso contrário, as aplicações deixam de
estar acessíveis parra compra.
Em todas vendas 30% do preço de venda fica para a loja onde está disponível, Google
Play Store ou iTunes. A Apple fornece 50 códigos por cada actualização que a aplicação
sofrer, podem ser utilizados para fazer o download da aplicação sem ser preciso pagar o seu
custo, são reenviados novos códigos por cada update que a aplicação tiver.
23
Capítulo 2
2 Motores de Jogos
Neste capítulo são descritos alguns Motores de Jogos e o que é um Motor de Jogo.
2.1 O que é um Motor de Jogo
Os motores de jogo são programas de computador, ou conjunto de bibliotecas
desenvolvidos para simplificar o desenvolvimento de jogos ou outras aplicações gráficas em
tempo real tanto para computadores, consolas de jogos ou dispositivos móveis. Estes possuem
como principal funcionalidade, um motor gráfico 2D e/ou 3D; um motor de física que pode
ser utilizado para detectar de colisões ou então para simular a componente de física do jogo.
Possuem suporte de scripts, animações, inteligência artificial, som, networking, gestão de
memória e de ficheiros, sendo que alguns deles permitem a criação de Grafos de Cenários.
Facilitam a criação de novos jogos, pois possuem uma componente visual aliada às
restantes funcionalidades. Um motor de jogo não está limitado a um tipo de jogo, sendo
possível utilizar partes de código desenvolvido na criação de jogos anteriores para o
desenvolvimento de um novo jogo. Não é necessário saber programar para ser capaz de criar
um jogo, pois existem Motores de Jogos que podem ser apenas ou podem possuir uma
ferramenta gráfica com interface Drag & Drop. Existem também os que não se encontram
limitados a um software específico, pois permitem a exportação para vários dispositivos que
possuam sistemas operativos diferentes.
Este tipo de programas pode também ser designado por middleware. Disponibilizam
funcionalidades fundamentais no desenvolvimento de aplicações reduzindo custos,
complexidade das tarefas e o tempo necessário para ser possível comercializar a aplicação
24
podendo ser gratuita ou paga. Outro ponto positivo de alguns Motores de Jogos é o facto de
permitirem a substituição de uma parte da sua funcionalidade por software que tenha sido
desenvolvido especificamente para a mesma função.
Nome
Linguagem
Scripting
Multiplataforma
SDL Plataforma
de
Programação
Adventure
C++
AGSScript
Sim
Não
Windows, Linux
C
Ada, C++,
Sim
Sim
Windows, Linux, OS X,
Game Studio
Allegro
Library
C#, D,
DOS
Lisp, Lua,
Mercury,
Pascal,
Perl,
Python,
Scheme
Android SDK
Cocos2D
Java
Não
C++, Python, JavaScript,
Objective-C
Construct
Baseado em
Classic
Eventos
Unity
UnityScript,
Android
Sim
Não
Windows, OS X, iOS
Não
Não
Windows
Java
Sim
Windos, Linux, iOS,
C#, BOO
Libgdx
Android, BlackBerry
Java
Sim
Não
Windows, Linux, OS X,
iOS, Android, HTML5
Tabela 1 – Lista de Motores de Jogos
Iremos agora descrever de uma forma um pouco mais aprofundada alguns dos Motores
de Jogos indicados na Tabela. 1.
25
2.2 Unity
O Unity é um Motor de Jogo multiplataforma desenvolvido pela Unity Technologies,
nas versões anteriores à 4.3 apenas permitia a criação de jogos em 3D, mas a partir desta
versão já é possível a criação de jogos 2D de raíz. Encontra-se disponível em duas versões
diferentes, Unity Free e Unity Pro.
O Unity Free é uma versão livre disponível globalmente excepto para empresas,
organização educacional, académica ou entidade governamental com um orçamento superiro
a 100.000,00 Dólares. Esta versão mostra um painel do Unity quando o jogo é iniciado, em
jogos Stand-Alone, em jogos on-line é mostrada uma marca de água, ambas as marcas são
impossíveis de retirar.
A versão comercial do Unity tem um custo de 1.500,00 Dólares, possuindo todas as
funcionalidades da versão livre, com esta versão é possível formatar texturas, utilizar
iluminação global e efeitos pós-processamento.
As scripts podem ser criadas em Momo 2.6, .NET, C#, BOO (trata-se de linguagem
inspirada em python) ou UnityScripr (linguagem inspirada na sintaxe de ECMAScript) A
partir da versão 3.0 existe uma versão costumizada de MonoDeveloper que permite fazer o
debug de scripts.
Já foram desenvolvidos jogos que se tornaram bastante conhecidos utilizando esta
ferramenta, alguns dos exemplos disso são os seguintes:

Deux Ex: The Fall

Bad Piggies

Blackguards

Edge of the World
2.3 Cocos 2D
O Cocos 2D é uma framework open-source desenvolvida em Python com recurso há
libraria “pyglet”, mas tem vindo a sofrer alterações para suportar outras linguagens e
26
plataformas. O próprio programa possui diversas frameworks, cada uma delas utiliza uma
linguagem de programação diferente e cada um delas permite desenvolver jogos para
plataformas diferentes. Esta framework utiliza desde C#, Objective C, Java, JavaScript e GO
(Linguagem desenvolvida pela Google).
Alguns dos jogos desenvolvidos tendo utlizado Cocos 2D foram:
 IRobot
 Bindary Defense
 Flat Bot
 Robo-T2
 Tetrico
2.4 Allegro
Allegro é uma libraria que possui suporte gráfico 2D, manipulação de imagens, permite
a saída de texto, áudio e temporizadores, componentes comuns a muitos outros componentes
necessários no desenvolvimento de jogos. A versão 5.1.8 foi lançada a 12-01-2014. A libraria
foi desenvolvida na linguagem de programação C e é possível ser utilizada em C, C++ e
Objective-C.
Algumas das versões são desenvolvidas pela comunidade de utilizadores, permitindo
assim aumentar a capacidade desta libraria.
Alguns dos jogos desenvolvidos utilizando Allegro são apresentados na seguinte lista:

Adagio

Worminator

Dogfight

Scrabble
27

Bip
2.5 LibGdx
É um Motor de Jogo que permite desenvolver de jogos multiplataforma, onde é possível
desenvolver jogos para Windows, Android e iOS. Esta framework foi desenvolvida em Java
com partes do código desenvolvido em C/C++, como a parte que permite processamento
áudio e física.
É possível criar um projecto utilizando o LibGdx, importar para a IDE Eclipse
desenvolver o jogo sendo no fim apenas necessário alterar uma pequena parte do código para
este funcionar nos diferentes sistemas operativos.
Alguns jogos desenvolvidos utilizando LibGdx foram:
28

Bus Jumper

Bittracker

Welatraumsodat3D

Jumparoo!
Capítulo 3
3 Arquitectura e Tecnologia Utilizada
3.1 Descrição detalhada do problema
A evolução dos componentes dos dispositivos móveis levou a um aumento no número
de jogos disponíveis para estes dispositivos, pois torna-se mais fácil desenvolver uma
aplicação quando não é necessário ter atenção a gestão da memória do dispositivo.
Este projecto tem como objectivo o desenvolvimento de uma aplicação para telemóveis,
mais especificamente de um jogo em 2D.
A aplicação é composta por um menu inicial que mostra uma imagem relativa ao jogo,
o nome, a história do jogo e um botão para inicializar o jogo.
Figura 2 – Ecrã inicial do Jogo
1
Quando o utilizador toca neste botão, é apresentada uma mensagem para tocar no ecrã
do dispositivo para inicializar o jogo, este segundo ecrã foi inserido para o utilizado não ser
apanhado desprevenido quando o jogo começar e perca quase instantaneamente.
Figura 3 – Captura do ecrã de espera para o jogo começar
Quando o utilizador perde é mostrada a mensagem a dizer que o jogo acabou e qual a
pontuação, quando o jogador volta a tocar no ecrã é mostrado o menu inicial, para o jogo ser
reiniciado.
Figura 4 –
2
Captura do ecrã da janela de fim de jogo
3.2 Tecnologias utilizadas
3.2.1 O Android
O Android foi um projecto inicialmente desenvolvido por uma Start - Up americana
em Palo Alto (Califórnia – USA) chamada Android Inc que desenvolvia uma plataforma para
telemóveis baseada em Linux. Sendo em 2005 foi comprada pela Google que tornou o
projecto público em finais de 2007 com o objectivo de apresentar a primeira plataforma Open
Source de desenvolvimento para dispositivos móveis.
Actualmente o Android é mantido por um grupo denominado Open Handset Alliance
(OHA), que é formado por mais de 33 empresas das quais a própria Google, Motorola, Sony
Ericsson, Samsung, HTC entre outras.
3.2.2 A plataforma Android
O Android é uma plataforma de desenvolvimento de aplicações para dispositivos
móveis. As aplicações são criadas utilizando a linguagem de programação Java e são
compiladas em bytecodes Dalvik e executadas numa máquina virtual desenvolvida
especialmente para utilização em dispositivos móveis denominada por Dalvik virtual
machine, que é desenvolvida para o uso nos dispositivos móveis e que possam ser executados
em qualquer dispositivo com Android.
O Google disponibiliza o Android SDK que disponibiliza as APIs e ferramentas necessárias
para o desenvolvimento de aplicações, tendo recursos disponíveis, tais como:

Application framework que proporciona a reutilização de componentes.

Dalvik virtual machine é optimizada para dispositivos móveis.

Gráficos optimizados permite às aplicações Android utilizar bibliotecas 2D e 3D
baseada na especificação OpenGL.
3

Rico Ambiente de desenvolvimento que apresenta um emulador de dispositivo,
ferramentas de depuração, memória e um plugin ADT (Android Development Tools)
para o Eclipse.
3.2.3 Arquitectura do Android
O Android é uma plataforma que integra desde o sistema operativo, até middleware e
aplicações, conforme pode ser observado na figura 5. A arquitectura é dividida em várias
camadas que são o núcleo do sistema operativo, bibliotecas, runtime, framework e aplicações.
Figura 5 – Arquitetura do Android.
Na camada do núcleo baseada em Linux (Linux Kernel), é a base da camada. Localizase o sistema operativo da plataforma, responsável por serviços denominados de baixo nível
como gestão de processos, de memória, segurança, pilha de redes.
Na camada de bibliotecas (Libraries), ficam as APIs desenvolvidas em C/C++ e que
dão suporte à renderização 3D (OpenGL ES), gestão de base de dados (SQLite) e suporte aos
diversos formatos de vídeo e áudio.
4
Na camada de runtime (Android Runtime), encontram-se os componentes como as
core libraries, que disponibilizam a API Java necessária para a escrita do código de
programação das aplicações, bem como a Dalvik Virtual Machine, que é a máquina virtual
que dará condições para que a aplicação Java desenvolvida possa ser executada.
Na camada de framework (Application Framework), estão localizadas as APIs que
serão utilizadas pelas aplicações que executam sobre a plataforma do Android, como por
exemplo, localização e notificação.
Na camada de aplicações (Applications), estão representadas as aplicações que são
executadas sobre a plataforma, sejam elas nativas como o caso da calculadora, da agenda, dos
contactos, do calendário, ou aplicações desenvolvidas por terceiros como é o caso do jogo que
será desenvolvida neste trabalho. Para esta camada, não existe diferença entre aplicações
nativas e aplicações de terceiros, todas são escritas com as mesmas APIs e executadas no
mesmo runtime, inclusive tendo a possibilidade da troca de uma aplicação nativa por outra
que tenha a mesma finalidade e seja desenvolvida por terceiros ou pelo próprio utilizador.
3.2.4 SDK
O kit de desenvolvimento para Android (Android SDK) está disponível para Windows,
Linux e MacOS, provendo ao desenvolvedor um conjunto rico de ferramentas que inclui um
depurador e emulador que permite testes em ambientes controlados, bibliotecas básicas para o
desenvolvimento Android, documentação, código de exemplo e tutoriais.
3.2.5 Linguagem Java
A linguagem utilizada pela plataforma Android é Java. Portanto, ao utilizar o SDK
oficial, a escolha pela linguagem é um pré-requisito. Entretanto, a máquina virtual não é
padrão, e sim uma máquina criada especialmente para a plataforma, conhecida como Dalvik.
Sendo assim, existe namespace específico do Android, com classes especialmente criadas
para este ambiente.
5
Outra grande vantagem é a ampla documentação existente para Java disponível na Internet. A
linguagem Java foi criada pela Sun Microsystems, que foi comprada pela Oracle, tendo como
base a programação orientada a objectos.
3.2.6 IDE Eclipse
O IDE Eclipse segue o modelo open source de desenvolvimento de software. É
utilizado por programadores para o desenvolvimento de aplicações implementadas
nomeadamente em Java, suportando ainda outras linguagens de programação. Foi na IBM
onde se iniciou o desenvolvimento da primeira versão do produto e posteriormente foi doado
como software livre para a comunidade. Foi usado o IDE Eclipse que tem um meio ambiente
para programar, testar e depurar aplicações móveis e permite um processo rápido e fácil para
o desenvolvimento de aplicações para Android.
6
Capítulo 4
4 Implementação
Neste capítulo irão ser descritas as instruções de programação do jogo.
Para o desenvolvimento foi utilizada a IDE Eclipse juntamente com o plugin ADT e
uma framework baseada em LibGDX disponibilizada na Internet.
O projecto foi desenvolvido utilizando 3 Packages para uma melhor compreensão e
estruturação das classes necessárias para o desenvolvimento.
Os packages são com.bmnm.framework, com.bmnm.framework.implementation e
com.bmnm.sabotaged. Todas as classes que compõem o projecto estão inseridas num package
distinto, dependendo da função que desempenham no jogo.
O package com.bmnm.framework.implementation contem as classes AndroidAudio,
AndroidFastRenderView, AndroidFileIO, AndroidGame, AndroidGraphics, AndroidImage,
AndroidInput, AndroidMusic, AndroidSound, MultiTouchHandler, SingleTouchHandler e
TouchHandler.
No package com.bnnm.framework estão as classes Audio, FileIO, Game, Graphics,
Image, Input, Music, Pool, Screen e Sound.
No package com.bmnm.sabotaged encontram-se as classes Animation, Assests,
Background, GameScreen, LoadingScreen, MainCar, MainMenuScreen, SampleGame,
SpalshLoadingScreen e Tile.
O projecto foi desenvolvido utilizando três packages, os dois primeiros contêm a
framework do Android, disponibilizada na internet que nos permitiu exportar o jogo, sendo
que o terceiro contem o jogo desenvolvido por nós. Isto deveu-se para ser possível uma
melhor compreensão e estruturação das classes necessárias para o desenvolvimento.
A package com.bmnm.sabotaged é o núcleo do jogo e foi o que nós desenvolvemos. A
cada classe pertencente a este package tem uma função específica.
7
A Classe Animations permite-nos gerir qual a imagem correcta para o carro em cada
momento do jogo.
Figura 6 – Código Java, adiciona imagem na animação e faz update desta
A Classe Assets foi criada com o intuito de apenas declarar os objectos/métodos a serem
usados pelo jogo (imagens, sons, etc.)
Figura 7- Código Java da Classe Assets
8
A Classe Background como o próprio nome indica, é responsável pelo fundo da
aplicação. Controla a velocidade e se necessário também move o fundo.
Figura 8 – Código Java da Classe Background
A Classe GameScreen Esta é a classe mais importante do jogo porque é a classe
centralizadora, onde todos os outros objectos são usados e o desenrolar da aplicação é gerado.
9
Figura 9 – Código Java, cria a janela quando o acaba o jogo
A Classe LoadingScreen Esta classe carrega os objectos para as respectivas variáveis
para estas serem usadas durante a aplicação. Cria também um pequeno ecrã de espera
enquanto os objectos são carregados.
Figura 10 – Código Java da Classe LoadingScreen
10
A Classe MainCar é responsável pela criação do nosso carro. Tem todos os seus
atributos assim como métodos necessários para a gestão do objecto.
Figura 11 – Código Java de da Classe MainCar onde é definida a posição e velocidade do carro
A Classe MainMenuScreen cria o ecrã de início do jogo em que apresenta uma pequena
imagem com o contexto do jogo e onde se pode começar efectivamente a jogar.
Figura 12 – Código Java para verificar onde é feito o clique
11
As Classe SampleGame e SplashLoagingScreen fazem parte do framework que nós
utilizamos e permite que o jogo seja jogado em dispositivos Android. Sendo que a segunda
cria o ecrã antes da classe MainMenuScreen.
A classe Tile é muito importante no nosso jogo, pois contem a detecção de colisão do
nosso carro com os carros parados na estrada e com a relva que delimita lateralmente o mapa.
Para criar estes objectos foi utilizado um método que nos permite, no futuro, criar vários
mapas e carrega-los para o jogo sem grande carga de trabalho.
Figura 13 – Código Java da Classe Tile
12
Este método é baseado num arquivo .txt que contem um desenho do mapa desejado
baseado em números que por sua vez são carregados para o jogo através da função loadMap
(presente na classe GameScreen) e depois convertidos para os objectos definidos no jogo,
neste caso carros e as bermas da estrada.
A Figura. 14 exibe a estrutura do projecto no que se refere aos packages e às classes
implementadas.
Figura. 14 – Estrutura do Projecto
13
Para ser possível executar o jogo em dispositivos Android é necessário um ficheiro
designado AndroidManifest.xml em que é definido, entre outros, as versões mais antigas e
para qual a aplicação foi desenvolvida. Esta numeração não é igual há designação comum,
mas sim o nível da API.
Versão da Plataforma
Nível da API
Nome da Versão
Android 4.4
19
KitKat
Android 4.3
18
Jelly_Bean_MR2
Android 4.2, 4.2.2
17
Jelly_Bean_MR1
Android 4.1, 4.1.1
16
Jelly_Bean
Android 4.0, 4.0.1, 4.0.2
15
Ice_Cream_Sandwich_MR1
Android 4.0, 4.0.1, 4.0.2
14
Ice_Cream_Sandwich
Android 3.2
13
Honeycomb_MR2
Android 3.1
12
Honeycomb_MR1
Android 3.0
11
Honeycomb
Android 2.3.3, 2.3.4
10
Gingerbread_MR1
Android 2.3, 2.3.1, 2.3.2
9
Gingerbread
Android 2.2
8
Froyo
Android 2.1
7
Eclair_MR1
Android 2.0.1
6
Eclair_0_1
Android 2.0
5
Eclair
Android 1.6
4
Donut
Android 1.5
3
Cupcake
Android 1.1
2
Base_1_1
Android 1.0
1
Base
Tabela 15 – Lista das versões de Android
14
Figura. 15 – Percentagem de versões Android activas
A nossa aplicação foi desenvolvida para executar em uma grande parte das versões
existentes do Android (desde a versão 2.2 API 8 até a mais actual) sendo que a plataforma
ideal é o Android 4.2, 4.2.2 API 17.
A Figura 16 mostra o conteúdo do nosso ficheiro AndroidManifest.xml
Figura 16 – Captura de ecrã do ficheiro AndroidManifest.xml
15
4.1 Arte e Desenvolvimento do Jogo
O jogo é composto por vários objectos, cada um deles com uma função distinta. Existe
a Estrada, que é utilizada como imagem de fundo enquanto o jogo está a ser executada.
Temos dois tipos de Carros, os que são utilizados como obstáculos e o Carro que é o objecto
principal, controlado pelo utilizador para concluir o jogo. A Relva que está a ser utilizada
como limite visual e físico dos limites laterais do jogo.
4.2 História
O nome do jogo ajuda a perceber um pouco do jogo (Sabotaged). A história por trás do
jogo é simples. Durante a noite alguém sabotou o carro do jogador e de manhã, quando saiu
para ir trabalhar quando chegou há auto-estrada, o carro começou a virar para a direita, e
quando o jogador tentou travar, os travões não funcionavam. A única possibilidade, para além
de ter um acidente horrível, é a de continuar a conduzir até que o carro fique sem baterias.
4.3 Regras e Objetivo
Este jogo não possui regras, pois trata-se de um jogo bastante simples não possuindo
nenhum mecanismo de verificação da ocorrência de batota, esse ponto é deixado há vontade
do jogador.
O objectivo do jogo é sobreviver o mais tempo possível, esquivando-se dos carros que
se estão a deslocar no mesmo sentido e não sair do limite da estrada, que se encontra nas
margens do dispositivo que se está a jogar.
16
Capítulo 5
5 Conclusão
A escolha deste projecto foi motivada para além das razões apresentadas no capítulo 1,
por nos ser possível escolher a plataforma alvo para a qual iriamos desenvolver o projecto,
sendo que após muita pesquisa escolhemos a plataforma Android.
A aplicação desenvolvida cumpriu com os objectivos propostos. Era pretendida a
realização de jogo em 2D para um dispositivo móvel. A aplicação foi concluída com sucesso,
tendo sido cumpridos todos os requisitos da proposta de projecto.
Futuramente poder-se-á fazer um melhoramento em termos de design, diferentes
modos de jogo ou outras funcionalidades que o programador que quiser continuar o projecto
queira aumentar.
5.1 Trabalho Futuro
Como todas os bons jogos, o trabalho de desenvolvimento é contínuo, sendo que o
nosso projecto pode não ser a excepção, podem ser adicionadas e/ou melhoradas algumas
funcionalidades, tais como:

Quando um novo jogo é criado, poder ser possível escolher imagens de fundo
distintas;

Permitir a criação de contas para comparar a melhor pontuação obtida com
amigos e/ou com a comunidade de utilizadores;

Serem adicionados novos tipos de obstáculos;
17
Referências bibliográficas
Zechner, M., Green, R - Beginning Android Games – Apress - 2012
http://developer.android.com/reference/packages.html
http://developer.android.com/sdk/index.html
http://developer.android.com/distribute/index.html
http://developer.android.com/tools/debugging/debugging-devtools.html
http://pt.wikipedia.org/wiki/Android
http://en.wikipedia.org/wiki/Android_software_development
http://developer.android.com/tools/sdk/eclipse-adt.html
http://pixxyz.blogspot.pt/2013/03/introducao-ao-desenvolvimento-android.html
http://www.youtube.com/watch?v=Klsh6KqFrtc&list=PLFEE82D5D49864E94&index=8
https://www.allegro.cc/about
http://www.cocos2d-x.org/
http://en.wikipedia.org/wiki/Unity_(game_engine)
http://libgdx.badlogicgames.com/
http://en.wikipedia.org/wiki/Cocos2d
http://en.wikipedia.org/wiki/LibGDX
https://www.youtube.com/watch?v=Xe8xx55pxLk
https://www.youtube.com/watch?v=Rj1w9atPpHk
https://play.google.com/about/developer-distribution-agreement.html
https://developer.android.com/distribute/googleplay/developer-console.html
https://support.google.com/googleplay/android-developer/answer/112622?hl=en
http://developer.android.com/guide/topics/manifest/uses-sdk-element.html
http://www.idc.com
18
Download