Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
So Carlos - SP 1
Monografia de concluso de curso apresentada ao Instituto de Cincias Matemticas e de Computao ICMC-USP - para obteno do ttulo de Bacharel em Informtica.
"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.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.
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.
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.
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
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.
importao de DLL baseada na plataforma .NET na licena indie, e DLL criadas em C++ na verso profissional.
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.
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.
11
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.
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
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.
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.
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)
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.
16
figura 8 mostra como esses objetos devem ser dispostos na posio de defesa e a figura 9, a posio de ataque (BUCKLAND, 2005).
18
conhecida como toon shading, foi estudado e aplicado aos modelos dos jogadores, enriquecendo o visual do jogo.
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.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.
21
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.
23
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