Sei sulla pagina 1di 36

UNIVERSIDADE DE SO PAULO

Instituto de Cincias Matemticas e de Computao

Projeto e desenvolvimento de um jogo de futebol utilizando o motor de jogo Unity 3D


Thiago Campos Viana

So Carlos - SP 1

Projeto e desenvolvimento de um jogo de futebol utilizando o motor de jogo Unity 3D


Thiago Campos Viana

Orientador: Prof Fernando Santos Osrio

Monografia de concluso de curso apresentada ao Instituto de Cincias Matemticas e de Computao ICMC-USP - para obteno do ttulo de Bacharel em Informtica.

rea de Concentrao: Desenvolvimento de Jogos

USP So Carlos Outubro de 2009 2

"Existe uma teoria que diz que, se um dia algum descobrir exatamente para que serve o Universo e por que ele est aqui, ele desaparecer instantaneamente e ser substitudo por algo ainda mais estranho e inexplicvel. Existe uma segunda teoria que diz que isso j aconteceu. Douglas Adams

Dedicatria
Kelly.

ii

Resumo
O presente projeto consiste no planejamento e desenvolvimento de um jogo de futebol 3D utilizando o motor de jogo Unity 3D, mostrando suas principais funcionalidades e como elas ajudam no processo de desenvolvimento de jogos. Tambm abordada a integrao do Unity com outras ferramentas de desenvolvimento tais como o Microsoft Visual C# 2008 Express Edition. O projeto tem como meta despertar o interesse de profissionais e entusiastas da rea de desenvolvimento de jogos pelo Unity.

iii

Sumrio
LISTA DE ABREVIATURAS ............................................................................... VIII LISTA DE FIGURAS ................................................................................................ IX CAPTULO 1: INTRODUO .................................................................................. 1 1.1. CONTEXTUALIZAO E MOTIVAO ..................................................................... 1 1.2. OBJETIVOS ............................................................................................................. 2 1.3. ORGANIZAO DO TRABALHO .............................................................................. 2 CAPTULO 2: REVISO BIBLIOGRFICA .......................................................... 3 2.1. CONSIDERAES INICIAIS ...................................................................................... 3 2.2. SISTEMA DE COORDENADAS 3D ............................................................................. 3 2.2.1. O plano cartesiano ......................................................................................... 3 2.2.2. Coordenadas locais e globais ........................................................................ 5 2.2.3. Vetores ........................................................................................................... 6 2.2.4. Quaternies e rotaes .................................................................................. 6 2.2.5. Renderizao .................................................................................................. 7 2.2.6. Cmeras ......................................................................................................... 7 2.2.7. Representao de formas ............................................................................... 8 2.2.8. Materiais ........................................................................................................ 8 2.3. FSICA .................................................................................................................... 8 2.3.1. Corpos rgidos................................................................................................ 8 iv

2.3.2. Deteco de coliso ....................................................................................... 9 2.4. O AMBIENTE DE DESENVOLVIMENTO UNITY 3D .................................................... 9 2.4.1. Editor totalmente integrado ........................................................................... 9 2.4.2. Linguagens de desenvolvimento ..................................................................... 9 2.4.3. Importao de arquivos multimdias ........................................................... 10 2.4.4. Networking ................................................................................................... 10 2.4.5. Fsica ............................................................................................................ 10 2.4.6. Publicao de jogos para vrias plataformas ............................................. 10 2.4.7. Licenas ....................................................................................................... 11 2.5. CONSIDERAES FINAIS ...................................................................................... 11 CAPTULO 3: DESENVOLVIMENTO DO TRABALHO ................................... 12 3.1. CONSIDERAES INICIAIS .................................................................................... 12 3.2. PROJETO .............................................................................................................. 12 3.3. DESCRIO DAS ATIVIDADES REALIZADAS ......................................................... 12 3.3.1. Pesquisa bibliogrfica ................................................................................. 12 3.3.2. Estudos sobre desenvolvimento de jogos ..................................................... 12 3.3.3. Pesquisa de ferramentas auxiliares ............................................................. 13 3.3.3.1. Ferramentas artsticas .............................................................................. 13 3.3.3.2. Ferramentas de desenvolvimento.............................................................. 13 3.3.4. Design do Jogo............................................................................................. 13 v

3.3.5. Desenvolvimento dos modelos em 3D .......................................................... 14 3.3.6. Estudo sobre o motor de jogo Unity 3D ...................................................... 14 3.3.7. Desenvolvimento .......................................................................................... 15 3.3.7.1 Codificao ................................................................................................ 15 3.3.7.1.1 A janela do jogo ...................................................................................... 15 3.3.7.1.2 O comportamento da bola....................................................................... 16 3.3.7.1.3 A posio dos jogadores ......................................................................... 16 3.3.7.1.4 Criando o evento de gol .......................................................................... 17 3.3.7.1.5 Lateral e escanteio .................................................................................. 18 3.3.7.1.6 O controle dos jogadores ........................................................................ 19 3.3.7.1.7 Efeitos sonoros ........................................................................................ 19 3.3.7.2 Mudana da aparncia dos jogadores ....................................................... 19 3.3.7.3 Criao de funes adicionais para o editor ............................................. 20 3.3.7.4 Teste de integrao do Unity 3D com outras ferramentas ........................ 20 3.3.8. Escrita da monografia ................................................................................. 21 3.3.9. Manuteno .................................................................................................. 21 3.4. RESULTADOS OBTIDOS ........................................................................................ 21 3.5. DIFICULDADES E LIMITAES .............................................................................. 22 3.6. CONSIDERAES FINAIS ...................................................................................... 22 CAPTULO 4: CONCLUSO .................................................................................. 23 vi

4.1. ASPECTOS GERAIS ............................................................................................... 23 4.2. CONTRIBUIES .................................................................................................. 23 4.3. CONSIDERAES SOBRE O CURSO DE GRADUAO .............................................. 23 4.4. TRABALHOS FUTUROS ......................................................................................... 24 REFERNCIAS .......................................................................................................... 25

vii

Lista de Abreviaturas
2D: Two-dimensional space. 3D: Three-dimensional space. EA: Electronic Arts. FIFA: Fdration Internationale de Football Association. IA: Inteligncia Artificial. IRC: Internet Relay Chat. NPC: Non-Player Character. ODE: Open Dynamics Engine. Ogre3D: Object-Oriented 3D Graphics Rendering Engine. UML: Unified Modeling Language. FoV: Field of Vision.

viii

Lista de Figuras
Figura 1 - O plano cartesiano 2D................................................................................................ 4 Figura 2 - O plano cartesiano com os eixos x, y e z ................................................................... 4 Figura 3 - Coordenadas locais e globais ..................................................................................... 5 Figura 4 - Diferena entre ponto e vetor..................................................................................... 6 Figura 5 - A cmera .................................................................................................................... 7 Figura 6 - Os objetos vermelhos no so renderizados .............................................................. 8 Figura 7 - Elemento da tela de jogo .......................................................................................... 16 Figura 8 - Formao de defesa ................................................................................................. 17 Figura 9 - Formao de ataque ................................................................................................. 17 Figura 10 - Um objeto invisivel que chama a funo de gol .................................................... 18 Figura 11 - Objetos invisveis para escanteio e tiro de meta .................................................... 18 Figura 12 - Objeto invisvel nas laterais ................................................................................... 19 Figura 13 - Imagens do jogo desenvolvido .............................................................................. 22

ix

CAPTULO 1: INTRODUO
Este trabalho visa apresentar o projeto e desenvolvimento de um jogo de futebol 3D, desenvolvido com o uso do motor grfico (engine) Unity 3D. Este projeto foi desenvolvido como uma nova etapa de um projeto anterior de um jogo de futebol 3D, onde a seguir sero detalhadas informaes sobre o contexto da proposta e de sua motivao, bem como sobre os objetivos e trabalhos propostos.

1.1. Contextualizao e Motivao


No primeiro semestre de 2009, foi iniciado um projeto que consistia no desenvolvimento de um jogo de futebol utilizando a biblioteca grfica Ogre3D. O projeto foi abandonado devido s dificuldades tcnicas encontradas durante o desenvolvimento, pois a Ogre3D apenas uma biblioteca grfica e para criar jogos com ela necessrio, alm de um profundo conhecimento em C++, integr-la com outras bibliotecas, tais como a biblioteca fsica ODE. Durante o projeto foi gasto mais tempo fazendo tais integraes que no desenvolvimento do jogo proposto, e, depois de todas as integraes, ainda era necessrio realizar muitos ajustes para que todo o cdigo fosse compilado adequadamente, o que tomava muito tempo no desenvolvimento do projeto. Outro problema era a integrao com o modelador Blender, pois a Ogre3D trabalhava com modelos em um formato prprio, o qual no era exportado corretamente pelo Blender. Assim, foi decidido o abandono do projeto em Ogre3D e foi iniciada uma pesquisa por um ambiente de desenvolvimento de jogos onde tais problemas no fossem to graves. Atravs de uma pesquisa entre os motores de jogos, open source ou comerciais de custo inferiores a mil reais, chegou-se ao motor de jogo Unity 3D, o qual possui um motor fsico integrado, alm de um motor de rede, de entrada, de grfico e de udio. Alm disso, o teste do projeto foi facilitado, pois no necessrio compil-lo utilizando o Unity 3D. O Unity 3D tambm importa modelos do Blender automaticamente para o projeto.

1.2. Objetivos
O presente projeto tem como objetivo o desenvolvimento de um jogo de futebol utilizando o motor de jogo Unity 3D tendo como base e o cdigo do jogo Simple Soccer presente no livro Programming Game AI by Example (BUCKLAND, 2005). A meta adaptar a teoria presente no livro para o ambiente 3D e, a partir dessa adaptao, acrescentar recursos e realizar melhorias de modo interativo incremental. Este projeto tambm aborda a integrao do Unity 3D com outras ferramentas de desenvolvimento, tais como O Microsoft Visual C# 2008 Express Edition e o NUnit.

1.3. Organizao do Trabalho


Esta monografia dividida em quatro captulos. O captulo um faz uma introduo ao projeto desenvolvido, nele definida a rea de projeto, o problema abordado e as possveis contribuies do projeto. O captulo dois apresenta os conceitos e terminologias bsicas da rea do projeto, assim como uma breve apresentao do Unity 3D. O captulo trs traz os detalhes sobre o projeto. No captulo quatro feita uma concluso a respeito do trabalho desenvolvido.

CAPTULO 2: REVISO BIBLIOGRFICA


2.1. Consideraes Iniciais
Este captulo apresenta os conceitos e terminologias da rea de desenvolvimento de jogos 3D assim como uma breve apresentao do Unity 3D.

2.2. Sistema de coordenadas 3D


Nesta seo sero descritos alguns elementos do sistema de coordenadas 3D.

2.2.1. O plano cartesiano


Uma das formas de descrever a posio de um ponto no espao represent-lo em um plano cartesiano. Para representar um ponto em duas dimenses, definimos o sistema de coordenadas como sendo composto por dois eixos, x e y, dispostos ortogonalmente, que dividem o plano em quatro quadrantes (BUCKLAND, 2005). O eixo x denominado o eixo das abscissas e o y o das ordenadas. Esses eixos so divididos em unidades contadas a partir do ponto de origem do plano, o ponto de interseco entre os dois eixos, que servem para nos dar uma idia de distncia, o que chamamos de coordenadas, assim, um ponto nesse plano representado por um par de coordenadas, x e y, que representa a distncia ao longo de cada eixo a partir do ponto de origem. A figura 1 (BUCKLAND, 2005) mostra como representar um ponto P(4,6), em que P significa ponto e (4,6) significa que o ponto est quatro unidades de distncia em relao ao ponto de origem do plano ao longo do eixo x, e seis unidades de distncia em relao ao ponto de origem do plano ao longo do eixo y.

Figura 1 - O plano cartesiano 2D

Para representar o espao em trs dimenses, adicionamos o eixo z ao sistema de coordenadas, esse eixo passa pelo ponto de origem do sistema de coordenadas e representa a profundidade do ponto. A figura 2 (JUNKER, 2006) mostra como representar o eixo z no plano.

Figura 2 - O plano cartesiano com os eixos x, y e z

2.2.2. Coordenadas locais e globais


Como foi visto na seo anterior, a posio de um ponto pode ser representado em termos de trs variveis, x,y e z. Por ponto, podemos entender um objeto no espao. A posio global de um objeto no espao representada em relao origem do plano. s vezes necessrio representar a posio de um objeto a outro, assim dizemos que todo objeto tem seu prprio ponto de origem e quando desejamos representar a posio de um objeto em relao a outro, dizemos que estamos utilizando coordenadas locais do objeto de referncia. A figura 3 (JUNKER, 2006) mostra a diferena entre coordenadas locais e globais.

Figura 3 - Coordenadas locais e globais

2.2.3. Vetores
Vetores so segmentos de reta usados para representar direo (reta suporte do segmento orientado), intensidade (valor numrico) e sentido (orientao do segmento de reta) no plano cartesiano. A figura 4 (BUCKLAND, 2005) mostra a diferena entre ponto e vetor. Vetores, assim como pontos, no se limitam as duas dimenses e podem ser representados no espao 3D. Atravs do uso de vetores possvel atribuir representar alm da posio de um objeto no espao, a sua direo.

Figura 4 - Diferena entre ponto e vetor

2.2.4. Quaternies e rotaes


Para realizar a rotao de objetos no espao tridimensional so utilizados quaternies. Para representar a direo que um objeto aponta no espao no basta apenas representar sua posio, necessrio atribuir um ngulo a ela. Em jogos quando um objeto criado, definida a sua posio e um ngulo inicial a ele. Quando desejamos fazer alguma rotao nesse objeto, realizamos com base em sua posio e seu ngulo atual, ou seja, em seu quaternio. 6

2.2.5. Renderizao
Renderizao o ato de criar imagens 2D dada uma descrio geomtrica de um mundo tridimensional e uma cmera virtual que especifica a perspectiva que o mundo est sendo visto.

2.2.6. Cmeras
Cmeras em jogos servem para representar o comportamento dos olhos em um sistema em trs dimenses. Atravs dela so determinados quais objetos devem aparecer na tela e como eles devem ser mostrados. Elas podem ser posicionadas em qualquer lugar no espao, possuem uma direo e um campo de viso, ou Field of Vision (FoV). Esse campo de viso pode ser interpretado como uma pirmide invertida com origem no ponto de origem da cmera e com direo determinada pela direo da cmera, assim, os pontos mostrados na tela so os que esto dentro dessa pirmide. Quando limitamos a distncia do campo de viso, estamos especificando uma distncia mxima que um objeto deve estar do ponto de origem da cmera para que ele seja mostrado na tela, desde que ele esteja dentro do campo de viso da cmera. Tambm possvel especificar uma distncia mnima que os objetos devero estar da cmera para que eles sejam mostrados na tela. As figuras 5 e 6 ilustram o funcionamento de uma cmera, tudo o que est dentro do espao delimitado pelo near plane e pelo far plane sero renderizados.

Figura 5 - A cmera

Figura 6 - Os objetos vermelhos no so renderizados

2.2.7. Representao de formas


Para representar formas em trs dimenses so utilizados polgonos, em jogos geralmente so utilizados tringulos, ou faces, que so representados por trs pontos interligados por vrtices. A combinao de polgonos permite a construo de formas mais complexas, conhecidas como Meshes. atravs desses dados que so feitos os clculos de deteco de colises entre um objeto e outro no espao.

2.2.8. Materiais
Materiais servem para definir a aparncia de um modelo aps renderizados. Materiais so cores ou texturas, que em conjunto com um script de renderizao, conhecido como shader, determina a aparncia de um objeto quando visualizado na tela.

2.3. Fsica
Nesta seo sero descritos o que so corpos rgidos e deteco de coliso.

2.3.1. Corpos rgidos


Corpos rgidos so objetos que, durante o jogo, so afetados pelas leis da fsica, ou seja, os motores de fsica realizam clculos para tornar o movimento desses objetos realistas (GOLDSTONE, 2009). Corpos rgidos podem possuir as seguintes propriedades:

Massa; Gravidade; Velocidade; Atrito.

2.3.2. Deteco de coliso


A deteco de colises entre objetos durante o jogo tambm de responsabilidade do motor fsico do jogo. Adicionando um elemento ao objeto denominado collider, o objeto passa a se comportar de um modo diferente quando algum objeto colide com ele, respondendo a coliso, normalmente alterando a velocidade e direo de seu movimento (GOLDSTONE, 2009).

2.4. O ambiente de desenvolvimento Unity 3D


Esta seo descreve algumas das caractersticas do motor de jogo gratuto Unity 3D, http://unity3d.com/, o qual utilizado neste projeto.

2.4.1. Editor totalmente integrado


O editor do sistema permite a criao de jogos visualmente, seguindo a linha dragn drop. Alm disso, o Unity vm 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.

2.4.2. Linguagens de desenvolvimento


O Unity 3D permite a programao dos 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 9

importao de DLL baseada na plataforma .NET na licena indie, e DLL criadas em C++ na verso profissional.

2.4.3. 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.

2.4.4. Networking
O Unity 3D utiliza como base o motor de networking RakNet para possibilitar a criao de jogos multi-player. O prprio site do Unity 3D contm um projeto de exemplo o qual mostra como possvel criar conectar vrios usurios em um mesmo jogo atravs da internet.

2.4.5. Fsica
Para fazer os clculos de colises e todos os demais clculos fsicos do jogo, o Unity utiliza o motor fsico PhysX, http://www.nvidia.com.br/object/physx_new_br.html, mesmo motor fsico utilizado no jogo Unreal Tournament 2007, e Ghost Recon 3, http://www.ghostrecon.com/. O

http://www.unrealtournament.com/,

Unity 3D permite a criao de simulaes fsicas sem a criao de scripts para criar, entre outras coisas, corpos rgidos, juntas e ragdolls.

2.4.6. Publicao de jogos para vrias plataformas


A verso indie do motor permite a publicao dos jogos para os formatos Windows Standalone, OS X Dashboard Widget, OS X Universal Binary Standalone, OS X PPC Standalone, OS X Intel Standalone e para o seu player web que funciona em Windows e Mac. Existem licenas especiais que permitem a publicao para outras plataformas, tais como iPhone e para Nintendo Wii.

10

2.4.7. Licenas
O Unity possui vrias licenas, entre elas esto: Unity: Verso gratuita da engine. iPhone Basic: Permite a publicao de jogos para iPhone, necessrio possuir uma licena indie ou pro, custa US$ 399. Existem outras licenas, tais como a pro, a iPhone advanced e Wii, para ver as diferenas detalhadamente entre cada licena necessrio pesquisar no site da empresa, http://www.unity3d.com.

2.5. Consideraes Finais


Neste captulo foram expostos os principais tpicos relacionados rea de desenvolvimento de jogo. O estudo desses tpicos de fundamental importncia para um conhecimento mais profundo da rea, e foram importantes para o desenvolvimento do trabalho, o qual foca mais na parte de programao. O prximo captulo detalha como se deu o desenvolvimento do trabalho.

11

CAPTULO 3: DESENVOLVIMENTO DO TRABALHO


3.1. Consideraes Iniciais
Neste captulo so descritos os processos de desenvolvimento do trabalho. A seo 3.2 descreve o projeto que foi desenvolvido. A seo 3.3 contm todos os detalhes das atividades realizadas. A seo 3.4 entra em detalhes sobre os resultados obtidos. Por fim, na seo 3.5 feita uma concluso sobre o projeto.

3.2. Projeto
O presente projeto tem como objetivo o desenvolvimento de um jogo de futebol utilizando o motor de jogo Unity. A seo 3.3 explica com detalhes o trabalho desenvolvido.

3.3. Descrio das Atividades Realizadas


3.3.1. Pesquisa bibliogrfica
Nessa etapa fez-se uma pesquisa bibliogrfica inicial, a qual serviu como base para todo o projeto. Foram selecionados os principais livros da rea.

3.3.2. Estudos sobre desenvolvimento de jogos


Aps a pesquisa bibliogrfica inicial, foi necessrio o estudo sobre

desenvolvimento de jogos. Nesta etapa foram estudadas as peculiaridades dessa rea para planejar melhor o desenvolvimento do jogo. Alm destas referncias, tambm foi usado como base para este trabalho, o texto da monografia anterior que havia sido desenvolvido, referente tambm a um projeto de um jogo de futebol 3D (VIANA, 2009).

12

3.3.3. Pesquisa de ferramentas auxiliares 3.3.3.1. Ferramentas artsticas


Blender: Ferramenta para modelagem e animao de objetos 3D. Alternativa gratuita para o 3D Studio Max e Maya. Audacity: Editor de audio open source. Gimp: Editor de imagens. Alternativa gratuita para o Adobe Photoshop. Inkscape: Gerador de grficos vetoriais. Alternativa gratuita para o Adobe Illustrator ou para o Corel Draw. Melody Raiser: Programa de gerao de msica procedural gratuito. SFXR: Programa de gerao de efeitos sonoros gratuitos.

3.3.3.2. Ferramentas de desenvolvimento


Open Workbench: Programa para gerenciamento de projetos. Alternativa gratuita para o MS Project. Microsoft Visual C# 2008 Express Edition: Ambiente de programao gratuito para a linguagem C#. NUnit: Ferramenta para automao de testes gratuita para C# que pode ser integrada ao Microsoft Visual C# 2008 Express Edition. ArgoUML: Ferramenta para gerao de diagramas UML. Gera cdigos em C# a partir dos diagramas.

3.3.4. Design do Jogo


Na fase design de jogo foi definido o jogo a ser desenvolvido. Nela foram definidos os principais mecanismos do jogo, ou seja, seu gameplay. Nessa fase foi proposta uma 13

viso geral do jogo, ou seja, uma descrio do funcionamento do jogo, seus grficos, a interao do usurio com o jogo, os menus e o fluxo do jogo. Por falta de recursos as regras do jogo foram adaptadas, ficando da seguinte forma: No existem impedimentos. O jogo nunca termina. No existem faltas. O lateral cobrado por apenas um jogador. Os escanteios e os tiros de meta so cobrados no meio do campo.

O jogo possui apenas dois times, Brasil e Argentina, sendo o Brasil controlado pelo usurio e a Argentina pelo computador. O time controlado pelo computador, ou seja, a Argentina, no momento no apresenta muitas dificuldades para ser derrotado, assim como na vida real, devido a IA dos jogadores. Isso foi determinado levando em considerao a necessidade de se obter um prottipo funcional do jogo em um perodo inferior a quatro meses contando desde o inicio da fase de levantamento bibliogrfico do projeto.

3.3.5. Desenvolvimento dos modelos em 3D


Nesta etapa foram desenvolvidos os modelos em 3D necessrios ao projeto, ou seja, bola, campo, arquibancada, gol e jogador. Primeiramente foram feitos rascunhos de cada um dos modelos e as texturas utilizando o Gimp e o Inkscape, depois foram criados os modelos no Blender. O modelo utilizado para representar os jogadores foi animado no Blender.

3.3.6. Estudo sobre o motor de jogo Unity 3D


Nessa etapa foi estudado o Unity 3D. Alm de ler os tutoriais do site oficial do sistema, foi criado um jogo de plataforma 2D como forma de aprendizado. Foi necessrio realizar pesquisas sobre C# e JavaScript, as principais linguagens suportadas do sistema, a outra linguagem suportada a Boo, um dialeto de Python, mas ela no utilizado com 14

freqncia pela comunidade. As dvidas que surgiram sobre a utilizao do sistema foram respondidas pela comunidade do Unity atravs dos fruns e do IRC.

3.3.7. Desenvolvimento
Essa seo apresenta uma breve descrio das atividades realizadas na etapa de desenvolvimento do projeto.

3.3.7.1 Codificao
Foi necessrio realizar a programao dos elementos do jogo, essa seo descreve os principais problemas encontrados na fase de codificao.

3.3.7.1.1 A janela do jogo


A maioria dos jogos de futebol possui os seguintes elementos na tela de uma partida, ilustrados na figura 7: A. Um placar do jogo contendo os nomes dos times e a quantidade de gols marcados. B. Em um relgio marcando o tempo decorrido de jogo. C. Um menu de opes que aparece quando o jogo pausado. D. O nome do jogador em controle do usurio que controla o time um. E. Um mini-mapa mostrando as posies dos jogadores. F. O nome do jogador em controle do usurio que controla o time dois.

15

0-0
A C
Restart Application Quit Application

Time: 5:00
B

D PlayerName
GK/DF/MF/FW 4 (n)

E
MiniMap

F PlayerName
GK/DF/MF/FW 4 (n)

Figura 7 - Elemento da tela de jogo

No projeto foram desenvolvidos apenas o placar e o relgio. O relgio mudado a cada segundo e o placar mudado quando um dos times marca um gol.

3.3.7.1.2 O comportamento da bola


A questo fundamental para o desenvolvimento deste projeto foi entender o comportamento da bola em um jogo de futebol, para isso foi necessrio consultar o comportamento da mesma em outros jogos. Como os jogos atuais apresentam um comportamento muito realista para a bola, o que tornaria o desenvolvimento do jogo muito complexo, decidiu-se que o comportamento seria baseado nos jogos mais antigos. Basicamente, a bola se movimenta livremente at que algum jogador a toque, a partir desse momento a posio dela ser em frente a ele, e quando ele se movimenta, a bola alm de acompanh-lo sofre um movimento de rotao. Se um jogador do time adversrio toca na bola, ela passa a pertencer a ele. Quando um jogador chute ou d o passe, a bola passa a se movimentar livremente.

3.3.7.1.3 A posio dos jogadores


Neste projeto cada time possui quatro jogadores e um goleiro, os jogadores assumem duas formaes, a de ataque e a de defesa, seguindo um determinado padro. A

16

figura 8 mostra como esses objetos devem ser dispostos na posio de defesa e a figura 9, a posio de ataque (BUCKLAND, 2005).

Figura 8 - Formao de defesa

Figura 9 - Formao de ataque

3.3.7.1.4 Criando o evento de gol


Para programar o evento de gol foi utilizado um recurso chamado trigger. Podemos adicionar triggers a qualquer objeto do jogo, fazendo com que tais objetos chamem uma funo pr-determinada toda vez que sofrem colises. Sabendo disso, foi criado um objeto invisvel atrs do gol, figura 10, e adicionado um trigger a ele, o qual, quando colidido com a bola, chama uma funo que controla o evento de gol. 17

Figura 10 - Um objeto invisivel que chama a funo de gol

3.3.7.1.5 Lateral e escanteio


Para programar os eventos de lateral e escanteio foi utilizada a mesma tcnica do evento de gol, ou seja, foram criados objetos invisveis que chamam as funes de controle de lateral e escanteio, figura 11 e 12, toda vez que sofrem colises com a bola.

Figura 11 - Objetos invisveis para escanteio e tiro de meta

18

Figura 12 - Objeto invisvel nas laterais

3.3.7.1.6 O controle dos jogadores 3.3.7.1.7 Efeitos sonoros


No projeto foram criados um efeito sonoro e uma msica para testar a integrao de udio em jogos desenvolvidos com o Unity. O efeito sonoro foi criado com o programa SFXR, o qual gratuito, e exportado para o formato wav. Toda vez que um jogador toma posse da bola ou a chuta, o efeito sonoro tocado no jogo com efeito de som 3D, ou seja, o modo que o som tocado varia conforme a posio da bola no momento em que o som tocado. Para criar a msica foi utilizado o programa Melody Raiser, o qual exporta suas melodias apenas no formato midi, que no suportado pelo Unity 3D. Para contornar esse problema, foi utilizado o Gravador de Som do Windows XP, que gravou o som do midi e o exportou para um arquivo wav. Como arquivos no formato wav no so ideais para msicas, pois ficam enormes, foi utilizado o programa Audacity para exportar o arquivo wav para o formato Ogg Vorbis, semelhante ao MP3, tornando-o cerca de 90% menor que o wav. Esse arquivo de msica foi utilizado como a msica tocada durante todo o jogo, repetidamente.

3.3.7.2 Mudana da aparncia dos jogadores


Nessa etapa foi realizado um estudo sobre o funcionamento dos shaders do Unity. O shader responsvel por dar um visual de desenho animado aos modelos, tcnica 19

conhecida como toon shading, foi estudado e aplicado aos modelos dos jogadores, enriquecendo o visual do jogo.

3.3.7.3 Criao de funes adicionais para o editor


O Unity 3D permite criar funcionalidades adicionais para o editor de acordo com a necessidade de cada desenvolvedor, podendo variar desde scripts de automao de tarefas at a criao de editores visuais de IA totalmente personalizados. Nesse projeto houve uma grande necessidade de realizao da gerencia de verses de projetos atravs de backups, e toda vez que era necessrio realizar um backup, tinha que encerrar o Unity 3D, navegar at a pasta do projeto e compact-la em formato zip. Para facilitar esse processo, criou-se um script em C# de backup e fez-se a integrao do mesmo com o editor, assim, foi criado um boto no editor que quando clicado, realizava o backup do projeto.

3.3.7.4 Teste de integrao do Unity 3D com outras ferramentas


Apesar do Unity 3D apresentar vrias funcionalidades, existem ferramentas que realizam certas tarefas de uma forma melhor que o Unity ou que realizam tarefas que o Unity no faz. Assim, foi interessante saber se seria possvel utilizar tais ferramentas em projetos que tem o Unity como motor de jogo. Um exemplo dessas ferramentas o Microsoft Visual C# 2008 Express Edition, que possui um ambiente de codificao para C# com algumas funcionalidades melhores que o Unity 3D e at mesmo algumas inexistentes no editor do Unity. No existe uma funo nativa que permite ao Visual C# importar projetos do Unity 3D, porm existe um script desenvolvido para o Unity 3D que permite a criao automtica de projetos para o Visual C# a partir de projetos para o Unity 3D (MEIJER, 2009). Esse script funciona e, alm disso, o autor criou templates de classes para o Visual C# para projetos especficos para o Unity. Outro teste de integrao fez-se com a ferramenta de automao de testes NUnit. Para ser utilizada, foi necessrio o uso do Visual C#, pois foi necessria a criao de 20

arquivos DLLs ou exe com algumas caractersticas peculiares que, por padro, o Unity no gera. Assim, chegou-se a concluso de a utilizao do NUnit possvel em projetos feitos em torno do Unity 3D, porm necessrio o uso do Visual C#. Por fim, foram pesquisadas ferramentas UML gratuitas que gerasse cdigos em C# e que pudesse ajudar na fase de planejamento do projeto. Chegou-se a ferramenta ArgoUML, a qual open source e gera diagramas de classes, de casos de uso, de colaborao, de seqncia, de estado, de atividades e de distribuio, alm de gerar cdigo para esses diagramas em diversas linguagens de programao, incluindo o C#, tornando-a compatveis com projetos baseados no Unity 3D.

3.3.8. Escrita da monografia


Essa a etapa atual do projeto, na qual foi desenvolvida a monografia.

3.3.9. Manuteno
Esta etapa do projeto ainda no foi realizada at o momento da escrita desta monografia. Nesta etapa sero corrigidos os bugs do jogo e sero feitas melhorias no mesmo, em especial no fluxo do jogo e na IA dos jogadores.

3.4. Resultados Obtidos


Durante o projeto, decidiu-se que todo o cdigo ficaria disponvel no Google Codes, http://code.google.com, com o ttulo do projeto sendo SoccerTutorial ( http://code.google.com/p/soccertutorial/downloads/list). O projeto est disponvel para download para todas que possuem o Unity 3D. A figura 13 mostra como como ficou o jogo. Existe um vdeo disponvel para visualizao em http://www.youtube.com/watch?v=nxvRAeKAKh0.

21

Figura 13 - Imagens do jogo desenvolvido

3.5. Dificuldades e limitaes


A maior dificuldade encontrada nesse projeto est relacionada ao desenvolvimento dos modelos e animaes no Blender, isso se deve a falta de experincia do desenvolvedor com o uso da ferramenta e com a rea de modelagem e animaes 3D. Outra dificuldade a codificao da IA dos jogadores.

3.6. Consideraes Finais


Com os testes de integrao do Unity com outras ferramentas, chegou-se a concluso de que o Unity 3D pode ser utilizados em projetos de larga escala, os quais requerem um controle maior do projeto e um uso mais disseminado das vrias tcnicas de engenharia de software.

22

CAPTULO 4: CONCLUSO
4.1. Aspectos Gerais
O desenvolvimento do presente projeto teve muitas reviravoltas no que diz respeito aos requisitos do jogo a ser desenvolvido. Em um primeiro momento estabeleceu-se que o jogo deveria ter todas as funcionalidades de um jogo de futebol atual, porm essa viso mostrou-se imatura devido ao fato de o projeto possuir apenas um programador, assim, foi decidido que para esse projeto j seria satisfatrio ter um jogo de futebol em 3D bem simples, porm funcionando, assim eliminou-se a maioria das funcionalidades sonhadas no inicio do projeto. Durante o projeto, muito foi aprendido sobre desenvolvimento de jogos especialmente no referente a programao de jogos, visto que o autor possui um background como programador web, especializado em php sem experincia profissional na rea de jogos. Assim o projeto contribui tambm para o aprendizado de uma nova rea de conhecimento para o autor.

4.2. Contribuies
Este trabalho contribui com a atualizao do jogo Simple Soccer do livro Programming Game AI by Example (BUCKLAND, 2005) para o ambiente 3D utilizando o Unity 3D. Tambm contribuiu com uma anlise das funcionalidades do Unity 3D e sua integrao com outras ferramentas de desenvolvimento de software.

4.3. Consideraes sobre o curso de graduao


Infelizmente o curso de bacharelado em informtica oferecido pelo ICMC no possui nenhuma nfase na rea de jogos, se possusse seria interessante o enfoque no programa Unity 3D.

23

4.4. Trabalhos Futuros


Muitas melhorias devem ser feitas no jogo, assim, espera-se que no futuro sejam melhorados os grficos, aproveitando melhor os recursos do Unity 3D, a inteligncia artificial do jogo e o sistema do jogo. Espera-se tambm uma completa reorganizao do cdigo, tornando mais reutilizvel e facilitando a manuteno. Tudo isso em uma possvel verso 2.0.

24

REFERNCIAS
BUCKLAND, Mat. Programming Game AI by example. Plano, Texas: Wordware Publishing, Inc., 2005. 495 p. GOLDSTONE, Will. Unity Game Development Essentials. Olton, Birmingham, UK. PACKT Publishing, Ltd., 2009. 251 p. JUNKER, Gregory. Pro Ogre 3d Programming: Leverage the power of Modern Real-Time Hardware-Accelerated 3d Graphics with the Best-in-Class 3d Graphics Library. New York, NY: Springer-Verlag New York, Inc., 2006. 288 p. LUNA, Frank D. Introduction to 3D Game Programming with DirectX 9.0. Plano, Texas: Wordware Publishing, Inc., 2003. 378 p.

MEIJER, Lucas. VisualStudio integration for Unity2.5 + ItemTemplates. Disponivel em: http://lucasmeijer.com Acesso em: 10/10/2009. VIANA, Thiago Campos. Projeto e implementao de um jogo de Futebol 3d com uso de software livre. Monografia de concluso de curso apresentada ao Instituto de Cincias Matemticas e de Computao ICMC-USP. Junho de 2009.

25

Potrebbero piacerti anche