-
1
UNIVERSIDADE FEDERAL DE VIOSA
CENTRO DE CINCIAS EXATAS E TECNOLGICAS
DEPARTAMENTO DE INFORMTICA
PROJETO FINAL DE CURSO
Jogo 2D de corrida para Android
Jos Alberto Lobo Junior
Graduando em Cincia da Computao
Alcione de Paiva
(Orientador)
Viosa, Novembro de 2013
-
2
RESUMO
Com o aumento do uso de dispositivos mveis, aumenta tambm a
necessidade
de jogos para essas plataformas, pensando nesta demanda gerada e
no crescente
aumento de jogos multiplayer para a plataforma Android, que este
jogo ser criado.
O presente projeto consiste no planejamento e desenvolvimento de
um jogo de
corrida para Android para mltiplos jogadores utilizando o motor
de jogo Unity,
mostrando suas principais funcionalidades e como elas ajudam no
processo de
desenvolvimento de jogos. O projeto tem como meta o aprendizado
sobre a plataforma
Android e do motor Unity para jogos em 2D.
Palavras-Chave
Jogos, Unity, 2D, Android, Multiplayer
rea de Conhecimento
Cincia da Computao
Linha de Pesquisa
Sistemas de Informao
Abreviaes
2D: Espao bidimensional
3D: Espao tridimensional
Side Scrolling: Jogos em que o personagem anda em apenas duas
dimenses sendo elas
direita/esquerda e cima/baixo
Multiplayer: Jogo que permite mais de um jogador
Indie: projeto independentemente
-
3
SUMRIO
Capa
Resumo
1-
Introduo............................................................................................4
1.2
Objetivos.......................................................................................5
2- Base
Terica........................................................................................5
3-
Metodologia.......................................................................................6
3.5 Requisitos
...................................................................................10
4-
Resultados..........................................................................................12
5-
Concluses.........................................................................................15
6- Referencias
Bibliogrficas.................................................................16
7-
Cronograma.......................................................................................17
-
4
1- Introduo
O presente projeto consiste no planejamento e desenvolvimento de
um jogo de
corrida em 2D para plataforma utilizando o motor de jogo Unity,
mostrando suas
principais funcionalidades e como elas ajudam no processo de
desenvolvimento de
jogos.
Para o desenvolvimento do jogo ser utilizado a engine da Unity
especfica para
android. A engine da Unity para plataformas mobile mundialmente
conhecida e ideal
para pequenos grupos de desenvolvedores. A engine da Unity
permite criar uma
combinao de 3D e 2D o que pode ser til na criao do jogo alm de
possuir
bibliotecas dedicadas a criao jogos em 2D.
O editor do sistema permite a criao de jogos visualmente,
seguindo a linha
dragn drop. Alm disso, o Unity vem com um editor de scripts para
C#, JavaScript e
Boo.
O editor do programa totalmente personalizvel. Os
desenvolvedores
utilizaram a prpria biblioteca do Unity para criar seu editor,
assim, tudo o que os
desenvolvedores podem fazer com o editor, qualquer usurio
poderia. O Unity 3D
permite a programao os jogos em trs linguagens diferentes, C#,
JavaScript e um
dialeto de Python chamado Boo. Quando compilado, o cdigo de
mquina gerado
baseado na plataforma .NET open source Mono. O motor de jogo
permite a 10
importao de DLL baseada na plataforma .NET na licena indie, e
DLL criadas em
C++ na verso profissional.
Como dito em [1], de 2009 a 2011, quando caiu a fatia da Nokia,
as plataformas
Apple (iOS) e Google (Android) cresceram mais de 500%. Com isso,
o Android
tornouse o segundo sistema operacional mais popular entre os
smartphones
comercializados no mundo (22,7%; 67,2 milhes de aparelhos),
perdendo apenas para o
Symbian, da Nokia (37,6%; 111,5 milhes de unidades). O que faz
do Android uma
plataforma bem mais interessante.
-
5
1.2 Objetivos
Criar um jogo para a plataforma Android em 2D com a
possibilidade de
multiplayer utilizando dos conhecimentos adquiridos durante a
formao
para tal fim.
Aprender sobre a plataforma Android.
Aprender sobre o funcionamento da engine Unity para criao de
jogos em
2D.
Aprender sobre o mercado de jogos de plataforma para
Android.
2- Base Terica
2.1- Conhecimento das disciplinas
Os conhecimentos necessrios para o desenvolvimento deste projeto
sero
discutidos nessa sesso. Para um projeto e implementao foram
necessrios os
conhecimentos relevantes das seguintes disciplinas:
INF 110 - Programao I
INF 112 - Programao II
INF 452 - Redes de Computadores
INF 491 - Tpicos Especiais I Desenvolvimento para Android
2.2 O ambiente de desenvolvimento Unity3D
Esta seo descreve algumas das caractersticas do motor de jogo
gratuito
Unity3D, http://unity3d.com , o qual utilizado neste
projeto.
-
6
2.3 Linguagens de desenvolvimento
A linguagem utilizada para o projeto ser JavaScript, pela
facilidade apresentada
na declarao de variveis e fcil utilizao.
2.4- Importao de arquivos multimdias
O Unity suporta uma srie de formato de arquivos multimdia, entre
eles esto
mp3, jpeg, gif, mov, avi, wav, TTF, entre outros. Tambm possvel
importar modelos
3D nos formatos nativos de alguns programas de modelagem, tais
como Blender, Maya,
3D Studio Max e Cheetah 3D.
Para realizar a modelagem caso necessria de modelos 3D, para
criar um jogo
2D/3D de plataforma ser utilizado o Blender, por ser uma
ferramenta completamente
gratuita e j possuir algum conhecimento na ferramenta.
3- Metodologia
O jogo ser desenvolvido utilizando o engine da Unity para a
plataforma
android. Permitir mais de um agente, sendo estes outros agentes
tambm jogadores
com o mesmo aplicativo o que caracteriza o multiplayer. E para a
modelagem e
animao dos personagens e objetos do jogo ser utilizado o
Blender.
3.1- Levantamento de dados
Nesta fase foram feitos os levantados de requisitos funcionais e
no funcionais.
Levantado tambm as ideias utilizadas em jogos semelhantes que
possuem uma grande
parte do mercado.
3.1.1- Jogos Semelhantes
Fun Run
-
7
um jogo que tambm possui a jogabilidade no estilo side
scrolling, apesar de no
utilizar a viso 2.5D sendo essa apenas o 2D limitando a viso do
jogador em apenas 2
dimenses.
3.2- Levantamento de informaes complementares
Nesta fase ser pesquisado sobre o mercado de jogos e como
utilizar da Google
Play Store para a comercializao do jogo assim que ele for
terminado.
3.3- Documentao e pesquisa
Nesta fase ser feita a documentao e pesquisa das possveis
alteraes no jogo
que possam deixa-lo mais atrativo e mais intuitivo, alm deixa-lo
com uma interface
mais amigvel.
3.3- Implementao
Nesta fase ser feita a implementao do jogo.
-
8
3.3.1- Unity
A Unity foi a engine utilizada para a criao do projeto e a
linguagem para criar os
scripts foi Java script, utilizando as ferramentas
disponibilizadas pelo Unity, foi criado
um ambiente e iluminao. Utilizando as bibliotecas da Unity foi
possvel criar uma
conexo servidor/cliente alm de com utilizao das bibliotecas
fsicas foi possvel criar
uma movimentao mais fiel a realidade, alm de criar efeitos de
exploso e textura
bem elaborados.
3.3.2- Blender
O programa para modelagem e animao utilizado foi o Blender que
permite a criao
de modelos 3D e animao deste mesmo modelo, alm de possibilitar a
exportao
destes modelos para a Unity.
-
9
3.3.3 Funcionamento da Conexo MasterServer
Para fazer a rede entre o servidor e o cliente foi utilizado o
MasterServer da
unity que consiste em uma maquina que gera a conexo entre o
servidor e o cliente de
maneira indireta podendo assim fazer do jogo um multiplayer
online.
O MasterServer funciona da seguinte maneira: Uma vez que o
programa roda
como servidor em um dispositivo, ele registra no MasterServer
uma chave para essa
conexo, lembrando que a conexo do servidor e MasterServer
estabelecida por uma
porta e ip do MasterServer padro que j esta contida no unity,
podendo ser alterada
para caso for necessrio a criao de um MasterServer privado.
Quando o outro
programa rodado em paralelo e entra como cliente, ele faz
primeiro a conexo com
MasterServer com a chave gravada pelo servidor, fazendo assim
uma comunicao
indireta cliente para servidor.
Basicamente o MasterServer funciona como o servidor original, o
servidor
funciona como um cliente com privilgios do controle da sala
criada no ServerMaster
e o cliente funciona como um cliente simples.
3.3.4 Como Funciona o Servidor
Assim que o aplicativo manda criar a sala o aparelho faz uma
tentativa de
conexo com o MasterServer para fazer o registro da chave. Feito
o registro da chave
com sucesso o boto de comear jogo fica verde indicando que
outras pessoas podem
ver a sala criada. Quando o boto comear ativado o servidor manda
para o
MasterServer a informao de criao do personagem que vai ser
controlado pelo
servidor e cria o personagem do cliente caso ele esteja na sala.
Quando termina o jogo o
servidor envia para o cliente o tempo final de cada personagem e
exibe na tela o tempo.
3.3.5 Como Funciona o Cliente
Quando o aplicativo entra em uma sala criada, ele tenta
estabelecer uma conexo
do cliente com o MasterServer utilizando a chave criada pelo
servidor, se a conexo
acontece sem problemas o cliente vai para mesma sala do
servidor. Quando termina o
jogo o cliente recebe tempo final de cada personagem.
-
10
3.5- Requisitos
3.5.1- Requisitos Funcionais
Cdigo Nome Prioridades
RF01 Menu Menu principal
RF02 Sala de espera Busca por jogadores
RF03 Corrida Realizar corrida
RF04 Final Resultados da corrida
3.5.2- Requisitos No Funcionais
O Jogo ser utilizado em um dispositivo com plataforma android
com a
possibilidade de mais de um jogador por partida. A interface
dever ser amigvel,
animadora e o jogo dever ter comandos fceis.
Cdigo Nome Prioridades
RNF1 Tela intuitiva Tornar a utilizao dos menus
mais fceis
RNF2 Desempenho Resposta inferior
a 3 segundos
RNF3 Jogabilidade Facilidade na qual o jogo pode ser jogado
RNF4 2D/3D Tornar o jogo com a jogabilidade 2D, porem com
grficos 3D
-
11
3.5.3- Caso de Uso
Caso de uso Menu Exibir a tela de menu Executar o jogo
Requisito funcional RF01
Fluxo principal Exibir menu e sair do jogo
Caso de uso Sala de Espera Precondio Escolher entrar na sala de
espera a partir do
menu
Requisito funcional RF02
Fluxo principal O jogador espera os adversrios entrar em sua
sala e inicia o jogo ou volta ao menu
Caso de uso Corrida Precondies Existir ao menos um jogador
Requisito Funcional RF03
Fluxo principal O jogador tem que terminar a corrida na
frente de seus adversrios
-
12
Caso de uso Final Precondies O jogador chegar ao final da
corrida
Requisito Funcional RF04
Fluxo principal O jogador deve voltar ao menu
4- Resultados
Segue abaixo imagem do software funcionando
Tela inicial do programa
-
13
Tela de criar sala e editar o nome
Servidor: Sala de espera / Cliente: Salas diponveis
-
14
Sala de espera
Tela do jogo
-
15
Tela Final
5- Concluses
Este projeto foi feito com o objetivo de criar um jogo de
plataforma Android 2D
com a possibilidade de mais de um jogador simultneo, esse
objetivo foi cumprido
como o esperado sofrendo inclusive alguma melhoras no previstas
no inicio do projeto.
Tambm foi cumprido o objetivo de aprender sobre a plataforma
android e sobre o
mercado de jogos o qual esse jogo seria inserido, ficou mais
claro que o mercado para
android est em expanso. Foi adquirido conhecimento sobre a
engine Unity que uma
engine muito boa para criao de jogos tanto 3D quanto 2D, foi
adquirido tambm um
conhecimento com a ferramenta de modelagem Blender3D que um
modelador 3D
gratuito e ferramenta de animao poderosa.
O Blender foi utilizado em conjunto com a Unity sendo o Blender
utilizado para
modelar e Unity utilizado para criar a engine do jogo em si.
Esta comunicao dos
modelos do Blender e o Unity muito boa, porem alguns erros
aconteceram mais foram
sanados prontamente, obtendo com isso um maior conhecimento
sobre a comunicao
das ferramentas utilizadas.
-
16
6- REFERNCIAS
[1] Viana, Rodrigo Bahia. "Um estudo da evoluo estratgica em
subsidirias:
analisando a estratgia de internacionalizao e gesto da inovao da
Nokia
Corporation no Brasil no perodo de 2002 a 2012." Revista
Estratgica 11.2 (2013).
[2] http://docs.unity3d.com/ScriptReference/index.html
[3] http://www.blender.com.br
-
17
5- CRONOGRAMA Atividades ABR MAI JUN JUL AGO SET OUT NOV DEZ
JAN
Definio do
Tema e
Orientador
X
Levantamento
dos Dados
X X
Levantamento
de Informaes
Complementares
X X
Documentao e
Pesquisa
X X
Implementao X X X X
Testes X