Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

71
CENTRO UNIVERSITÁRIO DE ARARAQUARA - UNIARA DEPARTAMENTO DE CIÊNCIAS DA ADMINISTRAÇÃO E TECNOLOGIA SISTEMAS DE INFORMAÇÃO LUIS HENRIQUE FERREIRA DESENVOLVIMENTO DE JOGOS ELETRÔNICOS UTILIZANDO A TECNOLOGIA UNITY ARARAQUARA 2015

Transcript of Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

Page 1: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

CENTRO UNIVERSITÁRIO DE ARARAQUARA - UNIARADEPARTAMENTO DE CIÊNCIAS DA ADMINISTRAÇÃO E

TECNOLOGIA

SISTEMAS DE INFORMAÇÃO

LUIS HENRIQUE FERREIRA

DESENVOLVIMENTO DE JOGOS ELETRÔNICOSUTILIZANDO A TECNOLOGIA UNITY

ARARAQUARA

2015

Page 2: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

LUIS HENRIQUE FERREIRA

DESENVOLVIMENTO DE JOGOS ELETRÔNICOSUTILIZANDO A TECNOLOGIA UNITY

Trabalho de Conclusão de Curso (TCC) apre-sentado ao Departamento de Ciências da Admi-nistração e Tecnologia, do Centro Universitáriode Araraquara - UNIARA, como parte dos re-quisitos para obtenção do título de Bacharel emSistemas de Informação.

Orientador: Prof. Me. Saulo Sávio Leite Santos

Araraquara

2015

Page 3: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

TERMO DE AUTENTICIDADE

Eu, LUIS HENRIQUE FERREIRA, RG: XX.XXX.XXX-X, aluno regularmente matri-culado no Curso de SISTEMAS DE INFORMAÇÃO do Centro Universitário de Araraquara- UNIARA, declaro ser o autor do texto apresentado como Trabalho de Conclusão de Curso -TCC com o título “Desenvolvimento de Jogos Eletrônicos utilizando a tecnologia Unity”.

Afirmo, também, ter seguido as normas da ABNT referentes às citações textuais queutilizei e das quais eu não sou autor, dessa forma, creditando a autoria a seus verdadeiros autores(Lei n∘ 9.610, 19/02/1998).

Através dessa declaração dou ciência de minha responsabilidade sobre o texto apresentadoe assumo qualquer responsabilidade por eventuais problemas legais, no tocante aos direitosautorais e originalidade do texto.

Araraquara, 03 de dezembro de 2014

Assinatura:

Page 4: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

–OFF– OBSERVAÇÕES P/ DISPONIBILIZAÇÃO ONLINE

LUIS HENRIQUE FERREIRA

DESENVOLVIMENTO DE JOGOS ELETRÔNICOSUTILIZANDO A TECNOLOGIA UNITY

Para disponibilização online foram removidos dados pessoais do autor no termo de autenticidadee a folha de aprovação.

Contato para informações:

E-mail Principal: [email protected]. Secundário: [email protected]

Linkedin: https://br.linkedin.com/in/luishenriqueferreira

Page 5: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

Dedico este trabalho especialmente para a minha família,

ao meu Megadrive 16 bits e a minha fita Strider japonesa.

Page 6: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

AGRADECIMENTOS

Primeiramente agradeço à Deus por mais um dia de vida, saúde e alegria. Os agradeci-mentos principais são direcionados à minha mãe, ao meu pai por sempre estarem lembrandoque tenho um trabalho a terminar, a Maynara Mercaldi, ao Eric Delamodarme e ao Saulo porcontribuir na produção deste trabalho acadêmico.

Page 7: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

“Talvez não tenha conseguido fazer o melhor,

mas lutei para que o melhor fosse feito.

Não sou o que deveria ser, mas Graças a Deus,

não sou o que era antes.”

(Marthin Luther King)

Page 8: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

RESUMO

O presente trabalho tem como objetivo demonstrar a eficiência da tecnologia Unity como uminstrumento importante no desenvolvimento de jogos profissionais, atraentes e sofisticados. Autilização desta diminui a necessidade de códigos complexos, sendo possível obter resultadossatisfatórios em curto prazo. Foi realizada uma breve análise do mercado atual no entretenimentodos games e a sua expectativa para o futuro. Em seguida, são destacados e discutidos osprincipais processos no desenvolvimento de jogos, desde o planejamento da concepção inicialao lançamento do produto final. Serão apresentadas aqui a tecnologia Unity e as diversasferramentas utilizadas em conjunto neste trabalho, destacando-se suas funções para a modelagem3D, tratamento de imagem, gravação e edição de áudio. Em seguida, serão demonstradas asdecisões e metodologias técnicas utilizadas na modelagem dos objetos, protótipo, texturizaçãoavançada, renderização, iluminação, personagens, mecânica de combate, animações, efeitossonoros e etc. Por fim, são apresentadas algumas qualidades encontradas na pratica deste estudo,assim como as limitações do uso da tecnologia e as soluções na criação de jogos mais atraentes.

Palavras-chave: Unity. games. 3D. jogos. desenvolvimento. entretenimento. metodologia.

Page 9: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

ABSTRACT

The objective of the present work is to demonstrate the efficiency of technology Unity as animportant instrument in the development of professional gaming, attractive and sophisticated.The use of this reduces the need for complex codes, it is possible to obtain satisfactory resultsin the short term. There was a brief analysis of the current market in entertainment of gamesand their expectations for the future. Then are highlighted and discussed the main processesin the developments of games, from the planning of the initial design for the launch of thefinal product. Will be presented here, technology Unity and the various tools used togetherin this work, highlighting its functions for the 3D modeling, image processing, recording andediting of audio. Then will be demonstrated the decisions methodologies and techniques used inthe modeling of objects, prototype, advanced texturing, rendering, lighting, characters, combatmechanics, animations, sound effects, etc. Finally, there are some qualities found in practice thisstudy, as well as the limitations of the use of technology and solutions in the creation of gamesmore attractive.

Key-words: Unity. games. 3D. games. development. entertainment. methodology.

Page 10: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

LISTA DE ILUSTRAÇÕES

Figura 1 – Jogo de ação FPS - Left 4 Dead 2 . . . . . . . . . . . . . . . . . . . . . . . 19Figura 2 – Jogo de ação em terceira pessoa - God of War 3 . . . . . . . . . . . . . . . 20Figura 3 – Jogo de aventura - Full Throttle . . . . . . . . . . . . . . . . . . . . . . . . 20Figura 4 – Jogo de RPG - Dungeon Siege 2 . . . . . . . . . . . . . . . . . . . . . . . . 21Figura 5 – Simulador de caminhão EuroTruck Simulator 2 . . . . . . . . . . . . . . . 22Figura 6 – Jogo de estratégia - Company of Heroes . . . . . . . . . . . . . . . . . . . 23Figura 7 – Historia de vingança do jogo Max Paine . . . . . . . . . . . . . . . . . . . 23Figura 8 – Personagem Kratos de God of War II . . . . . . . . . . . . . . . . . . . . . 24Figura 9 – Personagens Sonic e Mario . . . . . . . . . . . . . . . . . . . . . . . . . . 25Figura 10 – Mundo do jogo Arma 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Figura 11 – Jogo Silent Hill 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Figura 12 – Protótipo ScareSupreme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Figura 13 – Produção ScareSupreme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Figura 14 – Minecraft na versão alfa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Figura 15 – Minecraft versão beta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Figura 16 – Loja online Steam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Figura 17 – Interface do Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Figura 18 – Formas tridimensionais com texturas . . . . . . . . . . . . . . . . . . . . . 34Figura 19 – Interface do Jogo Rust . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Figura 20 – Lanterna editada no Maya para o projeto ScareSupreme . . . . . . . . . . . 37Figura 21 – Esculpindo monstro no Mudbox para o projeto ScareSupreme . . . . . . . . 37Figura 22 – Interface do Photoshop, editando mapa normal para o projeto ScareSupreme 38Figura 23 – Interface do Audacity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Figura 24 – Interface do FL Studio 11 Demo . . . . . . . . . . . . . . . . . . . . . . . 39Figura 25 – Modelagem dos corredores e salas . . . . . . . . . . . . . . . . . . . . . . 40Figura 26 – Modelagem dos objetos mesa e galão . . . . . . . . . . . . . . . . . . . . . 41Figura 27 – Modelagem de diversos objetos . . . . . . . . . . . . . . . . . . . . . . . . 41Figura 28 – Mapeamento UV de diversos objetos . . . . . . . . . . . . . . . . . . . . . 42Figura 29 – Mapeamento UV de Objetos . . . . . . . . . . . . . . . . . . . . . . . . . 42Figura 30 – Planar Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Figura 31 – Visualização de texturas aplicadas no projeto . . . . . . . . . . . . . . . . . 43Figura 32 – Visualização das texturas importadas automaticamente para o Unity junta-

mente com o modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Figura 33 – Rochas criadas no editor de terreno do Unity . . . . . . . . . . . . . . . . . 44Figura 34 – Floresta criada no editor de terreno do Unity . . . . . . . . . . . . . . . . . 45Figura 35 – Ajustando o efeito neblina no Unity . . . . . . . . . . . . . . . . . . . . . . 45Figura 36 – Incluindo lago com o Assets Water . . . . . . . . . . . . . . . . . . . . . . 46Figura 37 – Partículas de vapor totalmente personalizadas . . . . . . . . . . . . . . . . 46

Page 11: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

Figura 38 – Material com shader avançado . . . . . . . . . . . . . . . . . . . . . . . . 47Figura 39 – Comparação de Textura simples e textura com Shaders avançados . . . . . . 47Figura 40 – Comparação de textura simples e textura com Shaders avançados . . . . . . 48Figura 41 – Componente de colisão do armário de madeira . . . . . . . . . . . . . . . . 48Figura 42 – Gatilho de ação instalado dentro de sala . . . . . . . . . . . . . . . . . . . 49Figura 43 – Raio Raycast projetado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50Figura 44 – Personagem modelado no Maya e importado para o Unity . . . . . . . . . . 50Figura 45 – Rosto do monstro modelado no Mudbox . . . . . . . . . . . . . . . . . . . 51Figura 46 – Resultado final do monstro modelado no Mudbox . . . . . . . . . . . . . . 51Figura 47 – Jogador com sanidade alta e com risco de morte . . . . . . . . . . . . . . . 52Figura 48 – Objeto que simula som do mar . . . . . . . . . . . . . . . . . . . . . . . . 53Figura 49 – Animação da porta inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . 53Figura 50 – Animação da porta inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Figura 51 – Tela Inicial do jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Figura 52 – Menu aberto dentro do jogo . . . . . . . . . . . . . . . . . . . . . . . . . . 55Figura 53 – Botão de chamada da tela de jogo . . . . . . . . . . . . . . . . . . . . . . . 55Figura 54 – Painel de propriedades da compilação . . . . . . . . . . . . . . . . . . . . 56Figura 55 – Jogo compilado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Page 12: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

LISTA DE ABREVIATURAS E SIGLAS

GUI Game User Interface / Graphical User Interface

FPS First-Person Shooters

RPG Role-Playing Games

MMORPG Massive Multiplayer Online RPG

NPC Non-Player Characters

MOD Modification

3D 3a Dimension

MP3 Moving Picture Experts Group 1 (MPEG) Audio Layer 3

UV Unpleasant Visual

FBX Filmbox

ESC Escape

PC Personal Computer

MAC OS Macintosh Operating System

Page 13: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

SUMÁRIO

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.1 Contextualização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.2 Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.4 Problema e Hipótese da Pesquisa . . . . . . . . . . . . . . . . . . . . . . . 161.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2 PROCESSO DE DESENVOLVIMENTO DE JOGOS . . . . . . . . . . 182.1 Desenvolvimento de conceito . . . . . . . . . . . . . . . . . . . . . . . . . 182.2 Pré-produção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.3 Definindo o gênero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.3.1 Gênero Ação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3.2 Gênero Aventura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.3.3 Gênero RPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.3.4 Gênero Simulação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.3.5 Gênero Estratégia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.4 Criando a história . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.5 Criando a Identidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.6 Criando o Mundo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.7 Criando o Áudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.8 Desenvolvendo o Protótipo . . . . . . . . . . . . . . . . . . . . . . . . . . 262.9 Produção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.10 Fase Alfa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.11 Fase Beta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.12 Fase Ouro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3 UNITY E OUTRAS FERRAMENTAS UTILIZADAS . . . . . . . . . . 303.1 Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.2 Estrutura do Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.2.1 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.2.1.1 Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.2.1.2 Inspector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.2.1.3 Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.2.1.4 Scene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.2.1.5 Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.2.1.6 Barra de Ferramentas ou toolbar . . . . . . . . . . . . . . . . . . . . . . . 31

3.2.2 Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.2.3 Prefabs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Page 14: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

3.2.4 Materiais, Texturas e Shaders . . . . . . . . . . . . . . . . . . . . . . . . 323.2.5 Terrenos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.2.6 Linguagens de desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . 333.2.7 Animação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.2.8 Renderização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.2.9 Iluminação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.2.10 Sistema de partículas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.2.11 Rust . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.3 Outras Ferramentas Utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . 363.3.1 Autodesk Maya . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.3.2 Autodesk Mudbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.3.3 Photoshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.3.4 Audacity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.3.5 FL Studio Demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4 DESENVOLVIMENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.1 Mundo do jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.2 Modelagem dos Cenários . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.3 Criando um Protótipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.4 Modelagem dos Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.5 Inserção de texturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.5.1 Mapeamentos UV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424.5.1.1 Automatic Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.5.1.2 Mapeamento Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.5.2 Edição de materiais e texturas . . . . . . . . . . . . . . . . . . . . . . . . 434.6 Criação de Terreno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444.7 Efeitos de renderização . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454.8 Assets e modelos Importados . . . . . . . . . . . . . . . . . . . . . . . . . 454.8.1 Partículas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.9 Shaders avançados e iluminação . . . . . . . . . . . . . . . . . . . . . . . . 464.10 Roteiro de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.11 Colisão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.12 Gatilhos e ações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494.13 Personagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494.13.1 Modelagem dos Personagens . . . . . . . . . . . . . . . . . . . . . . . . 494.13.2 Movimentação do personagem jogável . . . . . . . . . . . . . . . . . . . 504.13.3 Movimentação do personagem monstro e Inteligência Artificial . . . . . 514.14 Mecânica de Combate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.15 Músicas e Efeitos Sonoros . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.16 Animações de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Page 15: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

4.17 Objetivos do jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.18 Transições de telas e opções . . . . . . . . . . . . . . . . . . . . . . . . . . 544.19 Tutoriais e mensagens de ajuda . . . . . . . . . . . . . . . . . . . . . . . . 554.20 Compilando o projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554.21 Testes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554.22 Manutenção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574.23 Dificuldades do projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

REFERÊNCIAS BIBLIOGRÁFICAS . . . . . . . . . . . . . . . . . . . 59

ANEXOS 62

ANEXO A – PRINCIPAIS SCRIPTS . . . . . . . . . . . . . . . . . . . 63

ANEXO B – SCRIPT COMPLETO DE CONTROLE DAS AÇÕES DOJOGADOR . . . . . . . . . . . . . . . . . . . . . . . . . . 68

Page 16: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

15

1 INTRODUÇÃO

1.1 Contextualização

Em 2010, a receita no setor de games ultrapassou 30 bilhões de dólares anuais emtodo o mundo, superando as receitas de outros entretenimentos como concertos e cinemasnos Estados Unidos de acordo com a NPD Group(2011), empresa norte americana que realizaacompanhamentos semestrais de relatórios sobre o estudo dos padrões de consumo e distribuiçãode entretenimento chamado Entertainment Trends in America (ETA). Constatou-se que os perfisdos consumidores estão mudando constantemente.

A International Game Developers Association (IGDA), organização sem fins lucrativos,para incentivar a criação de jogos e promover o desenvolvimento profissional do setor, relatouque em vários países, a exportação de games constitui um dos principais itens de venda e deempregabilidade. A indústria de games está em constante expansão desde meados dos anos 80 etem uma expectativa de receita de mais de 86 bilhões de dólares em 2016 (WARMAN, 2013).

Indies games são jogos desenvolvidos por produtoras independentes, ou seja, um jogoque não é produzido ou publicado por uma grande empresa de games. Diversos problemassão encontrados nos desenvolvimentos de jogos e um investimento de alto custo para obterferramentas a serem utilizadas para este propósitos.

Neste sentido, a Unity Technologies disponibiliza a tecnologia Unity, que consiste emuma ferramenta para criação de jogos eletrônicos, e a sua distribuição completa custa aproxima-damente US$ 1500,00; existe também a versão gratuita com algumas limitações especiais quenão interferem no desenvolvimento de um jogo completo. Apresenta uma interface simples mascom muitos recursos importantes, e facilitando a implementação de jogos para computadoresWindows, iOS, consoles XBox 360, XBox One, PS3, PS4, PS Vita, celulares Windows Phone 8 eBlackBarry.

1.2 Justificativa

O interesse principal deste trabalho é desenvolver um jogo eletrônico utilizando a tec-nologia Unity tendo como metas: simplificar a codificação para o programador, mesmo quenão trabalhe na área de games; reduzir tempo no desenvolvimento do game pelo motivo devárias funções estarem previamente implementadas e custos, por existir a opção da ferramentana versão grátis.

Inclui classes de bibliotecas específicas para o desenvolvimento de jogos permitindo reusode código e materiais para plataformas diferentes. O Unity engine simplifica elementos gráficos,áudio, entrada, armazenamento, loops de desenho e modelagem. Também na sua comunidadeonline são disponibilizados muitas documentações, materiais, modelos e texturas disponíveisgratuitamente.

Page 17: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

16

1.3 Objetivos

O objetivo deste trabalho é desenvolver um jogo eletrônico utilizando a tecnologia Unity,apresentando as diferentes fases dessa, desde concepção inicial ao produto final no processo dedesenvolvimento de jogos.

1.4 Problema e Hipótese da Pesquisa

O Elemento principal deste trabalho é o jogo eletrônico ou game. Trata-se de um produtode software e alguns problemas serão apresentados juntamente com as possíveis soluções oualternativas. Abaixo, encontram-se algumas dúvidas sobre o foco da pesquisa.

∙ Para utilizar o Unity é necessário saber programar?∙ Quais os processos para o desenvolvimento de um jogo eletrônico de qualidade e aceitação

no mercado?

No desenvolvimento de um jogo eletrônico, a utilização do GUI do Unity diminui anecessidade de programar desde o início, reduzindo custos e tempo. Por mais simples que seja énecessário ter conhecimento em programação para criar jogos mais sofisticados e dinâmicos.

Para uma melhor organização e que alcance um jogo satisfatório é necessário dividir emfases o ciclos de desenvolvimento que são planejamento, produção, montagem do protótipo,testes de jogabilidade e distribuição.

1.5 Metodologia

A metodologia utilizada na execução deste trabalho apresentou basicamente as seguintesetapas:

∙ Foram utilizadas pesquisas bibliográfica em revistas, artigos científicos, Internet e livrosrelacionados ao tema.

∙ Participação em fóruns de discussões no intuito de abstrair informações para as técnicasenvolvidas na estrutura dos jogos.

∙ Primeiro capítulo apresentou como são os processos de desenvolvimento de jogos desdeplanejamento, personagem, ambiente, produção e lançamento.

∙ O capítulo seguinte apresentou as ferramentas utilizadas no desenvolvimento deste trabalho.Foi utilizado o Unity para a criação de animações, vegetação, scripts e demais itens.

∙ Foi utilizado o programa Autodesk Maya para os desenvolvimentos de animações, partedo cenário, modelos e personagens 3D.

∙ Foi utilizado o Autodesk Mudbox para o desenvolvimento e detalhamento mais profissionaldo personagem.

∙ Foi utilizado o editor de imagens Photoshop para editar as texturas dos objetos, cenários edetalhes gráficos dos personagens.

Page 18: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

17

∙ Foi utilizado o programa de edição de áudio, Audacity para gravações de sons da atmosferae efeitos especiais do jogo.

∙ Foi utilizado o FL Studio Demo para as edições de loops e músicas que foram utilizadosna produção, pois o mesmo é um estúdio musical virtual.

∙ O capítulo seguinte abordou detalhamento do projeto ScareSupreme, desenvolvido emparalelo a este trabalho.

Page 19: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

18

2 PROCESSO DE DESENVOLVIMENTO DE JOGOS

Neste capítulo é descrito algumas fases do desenvolvimento de jogos, com o principalobjetivo de torna-los mais profissionais e competitivos no mercado atual.

Por que as pessoas gostam de games? A compreensão disso pode ajudá-lo adesenvolver games que satisfaçam essas necessidades. Alguns desenvolvedorescriam games sem considerar por que seu publico desejaria jogá-los; e seuscomponentes mais atraentes não são utilizados suficientemente para manter osjogadores interessados (NOVAK, 2010, p. 40).

2.1 Desenvolvimento de conceito

A fase de desenvolvimento de conceito inicia-se quando existe uma ideia de desenvolverum jogo pensando em seus aspectos, público-alvo, avaliar os recursos e quanto o tanto possa atrairos desenvolvedores. Está fase termina quando é concretizada a ideia de iniciar o planejamentodo projeto, consiste como principal objetivo transmitir a ideia do jogo para outras pessoas deforma escrita.

Desenvolver um game é como tentar montar um avião enquanto se aprendea voar nele. Para mim, o movimento mais difícil é integrar todas as partesdispares - modo de jogar, som, motor 3D - em um formato coerente dentro doque parece ser um prazo impossível. Acredito que o setor tem sido vítima do seupróprio sucesso. Os melhores designers e programadores de games disponíveisno mercado vêm surpreendendo as pessoas com tanta frequência que, quantoaparece um game realmente sólido que não tem algum aspecto inovador, os fãsse decepcionam (NOVAK, 2010, p. 341).

2.2 Pré-produção

A fase do planejamento (ou pré-produção) do desenvolvimento consiste em ter umaproposta, como o guia da arte e o plano de produção. Esta fase tem como principal objetivodesenvolver o documento de design do game e documento técnico do design.

Eu costumava pensar que finalizar um projeto era o processo mais difícil, masmudei de ideia. Depois de terminar alguns títulos, você já sabe que é necessáriopara finalizar um game. Agora acho que a parte mais difícil do projeto dedesenvolvimento é a pré-produção. Gerar nova ideias para um game é difícil,mas o verdadeiro desafio é determinar quais dessa ideias são realmente boa equais, utilizadas conjuntamente, poderão gerar um sucesso. Se os objetos dapré-produção não forem estabelecidos com precisão, mais adiante você acabaratendo de trabalhar muito para tornar o game divertido e bem-sucedido (NOVAK,2010, p. 342).

2.3 Definindo o gênero

Gêneros de games são baseados em diferente temas, ambiente, interface do jogador eplataformas. Para uma melhor definição precisa ser levado em conta o publico alvo desejado,

Page 20: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

19

pois os gêneros diferenciam entre eles.

2.3.1 Gênero Ação

O principal objetivo dos games do gênero de ação é destruir seus inimigos, evitando serdestruído. Geralmente não possuem muita história ou a necessidade de muito raciocínio, pois seaprofunda mais na velocidade dos movimentos e na adrenalina das sequências.

Os subgêneros dos games de ação serão brevemente definidos a seguir:

∙ Games de plataforma são jogos com personagens característicos que geralmente saltamsobre plataformas recolhendo itens e destruindo inimigos.

∙ Games de tiro são jogos que se concentra na disputa entre um jogador contra váriospersonagens, e geralmente utilizam-se armas de fogo nos jogos. Nos jogos de tiro emprimeira pessoa (FPS), o jogador visualiza somente a arma do personagem com a sensaçãode estar dentro do próprio jogo (Figura 1). Jogos em terceira pessoa permitem ter a visãodo personagem em vez de somente a arma como no FPS (Figura 2). O jogo ScareSupreme

que foi desenvolvido em paralelo com este trabalho, é um exemplo de jogo de ação comitens e aspectos de aventura em uma ambientação de terror.

∙ Games de corrida também utilizam a perspectiva de primeira ou terceira pessoa. O cenáriosempre abrange em controlar um veículo sendo uma moto ou um carro. Existem váriasmodalidades neste gênero, como disputas online, tempo de volta nas pistas e até percorreruma cidade inteira a procura de desafios.

∙ Games de luta são jogos na qual personagens distintos são controlados por jogadores oupela inteligência artificial do próprio jogo, com o objetivo de atacar o seu adversário pormeios de movimentos combinados.

Figura 1: Jogo de ação FPS - Left 4 Dead 2

Fonte: http://1.bp.blogspot.com/_hlRWVCzwczY/S_f3x96A_6I/AAAAAAAAACw/aPZL1Ed6hIM/s1600/165160fa.jpg(25/06/2011)

Page 21: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

20

Figura 2: Jogo de ação em terceira pessoa - God of War 3

Fonte: http://3.bp.blogspot.com/_sGJGR7YvdV4/TAwSiy41_NI/AAAAAAAAA90/zYn7uYbR7R8/s1600/god_of_war_iii_profilelarge.jpg(25/06/2011)

2.3.2 Gênero Aventura

Jogos do gênero aventura são geralmente criados conforme um filme, possuem roteiros euma historia convincente. Seu principal objetivo é solucionar enigmas em busca de tesouros oualgo importante. São apelidados de jogos point-and-click, porque a maioria utilizam apenas omouse no controle de todas as ações. A Figura 3 apresenta o jogo de aventura Full Throttle.

Hoje em dia, apenas alguns poucos games de aventura são lançados a cadaano, mas ainda há um nicho de mercado para os aficionados do gênero. Ascaracterísticas dos games de aventura incluem exploração, coleta de itens, solu-ção de quebra-cabeças, orientação em labirintos e decodificação de mensagens(NOVAK, 2010, p. 101).

Figura 3: Jogo de aventura - Full Throttle

Fonte: http://www.scummvm.org/data/screenshots/lec/ft/scummvm_0_9_1-full.png(25/06/2011)

Page 22: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

21

2.3.3 Gênero RPG

Os games de representação de papéis (RPG) originam-se da tradição iniciadana década de 1970 pela série de jogos de RPG Dungeons & Dragons, que eramjogados com papel e lápis. Neles, os jogadores assumiam papéis de guerreiros,magos, sacerdotes, elfos ou ladrões e exploram calabouços, matavam monstros(como dragões e ogros) e coletavam tesouros. Um dos jogadores, o Mestredos Calabouços (mais tarde designado Mestre do Jogo) configurava o mundodo jogo e assumia os papéis de outros personagens (não jogadores) (NOVAK,2010, p. 103).

Os games de RPG digitais não possuem um mestre, mais todo o aspecto do antigo RPGgeralmente está diretamente relacionado, que incluem mundo de fantasias, heróis e monstros. Ospersonagens podem fazer praticamente o que quiserem nesta modalidade, como criar alimentos,enfrentar dragões e diversas ações. A Figura 4 apresenta o jogo de RPG Dungeon Siege 2.

Figura 4: Jogo de RPG - Dungeon Siege 2

Fonte: http://www.escapistmagazine.com/images/display/67151.jpg(25/06/2011)

Os Jogos de interpretação online massivos (MMORPG) são aquelas aonde diversaspessoas se conectam e jogam simultaneamente em um mesmo mundo, formando grupos, inimigos,lideres, comércio de itens e guerras. Os MMORPG geralmente não possuem um final, masrecebem constantemente atualizações de novos mundos, inimigos e missões.

2.3.4 Gênero Simulação

O principal objetivo dos games do gênero de simulação é representar máquinas, sistemas,veículos e papeis do mundo real. Existem simuladores para treinamentos militares, motoristas,pilotos de avião e alguns são criados especialmente para entretenimento por proporcionarembaixo nível de dificuldade.

Os subgêneros dos games de simulação serão brevemente definidos a seguir:

Page 23: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

22

∙ Simulações de veículos - o jogador opera máquinas muito detalhadas em seu manuseio,podem necessitar algum tempo para a aprendizagem, eles geralmente são simuladores deautomóveis (Figura 5), navios, tanques e jatos de guerra.

∙ Simulações de processos - o jogador abrangem processos e sistemas do mundo real, podemser um prefeito de uma cidade que controla seus gastos e construções, ou um Deus em ummundo primata lutando contra a insatisfação das tribos que o idolatram.

∙ Simulação esportiva e participativa - envolvem o jogador como se fossem participantes deuma partida de futebol por exemplo. É um subgênero de simulação com grande sucesso erepercussão nos jogos digitais, pois o jogador tem a sensação de representar um ou maisatletas profissionais, com a possibilidade de alcançar o título de melhor jogador do mundo,desbloquear novos atletas com as características dos atletas do mundo real para a suaequipe, negociar vendas e compras destes personagens com outros jogadores do mundodigital.

Figura 5: Simulador de caminhão EuroTruck Simulator 2

Fonte: http://i1-games.softpedia-static.com/screenshots/Euro-Truck-Simulation-2_22.jpg(11/08/2014)

2.3.5 Gênero Estratégia

"Games de estratégia originam-se dos jogos clássicos de tabuleiro, como xadrez, emque os jogadores devem administrar um conjunto limitado de recursos para atingir uma metaespecifica"(NOVAK, 2010, p. 109).

A maioria dos games de estratégia desenrolam-se em um ambiente militar, controlandotropas, fabricando armas e adquirindo tecnologia. O seu principal objetivo é utilizar a inteligênciapara derrotar seus adversários (Figura 6).

2.4 Criando a história

Para o projeto ScareSupreme, a historia é sobre um escritor cientifico de fenômenosnaturais, que após uma sessão de autógrafos em uma cidade pequena e isolada, preferiu seguirum atalho para chegar mais rápido em sua residência. Após um período percorrendo a estradaprincipal, encontrou a mesma interditada em um certo trecho, restando apenas um caminho

Page 24: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

23

Figura 6: Jogo de estratégia - Company of Heroes

Fonte: http://m.mygames.pt/g4/images/impressions/shot_3_261.jpg(26/06/2011)

por dentro da floresta. Por coincidência, o combustível do seu carro acabou próximo a umaconstrução antiga e abandonada. Acreditando ter a resposta para todos os acontecimentos eirritado de tantos remédios que tomou para manter-se acordado, ele irá verificar a entrada daconstrução em busca de combustível ou até mesmo um abrigo para está noite chuvosa. A Figura7 apresenta uma parte da história do jogo de Max Paine.

Figura 7: Historia de vingança do jogo Max Paine

Fonte: http://3.bp.blogspot.com/_tNn9FRQNoUA/SorHKECyZJI/AAAAAAAAATY/HV2d0aUKhiA/s1600-h/Untitled-1.jpg(06/07/2011)

Nos meios de entretenimentos tradicionais, como cinema, literatura, televisãoe rádio, é comum que os redatores produzam histórias completas, com perso-nagens atraentes e ambientes especifica como base para o conteúdo. Emboramuitos games também incluam uma historia, isso não é essência para proporci-onar uma experiência de jogo satisfatória. Na outra extremidade do espectro,alguns games de representação de papéis (RPGs) dependem fundamentalmenteda narrativa. De fato, para alguns jogadores, um RPG é semelhante a um filme;nesses casos, o game pode tornar-se um mero veículo para o desenvolvimentoda história (NOVAK, 2010, p. 130).

Page 25: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

24

2.5 Criando a Identidade

Personagens de um jogo podem assumir características marcantes, atravessando barreirasalém do mundo dos jogos. Dividem-se em personagens jogáveis e não jogáveis (NPC), estessão muitos usados em jogos de RPG na função de ajudar os jogadores, contar historias, solicitarmissões e vender itens. Dependendo do gênero do jogo, é possível controlar vários personagensem conjunto; geralmente são encontrados em jogos de simulação esportiva. A Figura 8 apresentao personagem Kratos de God of War II e a figura 9 apresenta os dois maiores rivais da históriados jogos.

Para desenvolver um personagem com características marcantes, habilmente é recomen-dado levar em consideração a historia escolhida. Para o projeto ScareSupreme, o personagemprincipal é o cientista Robert, sobre o qual o jogador assume o controle em todo momento, mastambém foi criado um segundo personagem em forma de palhaço com o objetivo de perseguir ederrotar Robert.

Um efeito interessante, conhecido como interação parassocial, pode ocorrerquando o público torna-se tão ligado aos personagens que começa a acreditarque são pessoas reais. Esse efeito ocorre com telespectadores que estabelecemfortes vínculos com os personagens do mundo de faz-de-conta que observamsemana após semana em novelas. Os vilões são detestados pelos telespectadorese é comum que recebam cartas ameaçadoras (enviadas para os personagens, nãopara os atores). A interação parassocial é um fenômeno extremamente poderoso,embora os telespectadores não assumam o papel de nenhum dos personagensda novela e sejam apenas observadores passivos. Esse tipo de ligação com opersonagem não poderia ser ainda mais forte nos Games? (NOVAK, 2010, p.154, 155).

Figura 8: Personagem Kratos de God of War II

Fonte: http://i51.photobucket.com/albums/f362/Solidarchive/god-of-war-ii-kratos.jpg(06/07/2011)

Page 26: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

25

Figura 9: Personagens Sonic e Mario

Fonte: http://images.wikia.com/sonic/images/9/9c/Mario_e_sonic.jpg(06/07/2011)

2.6 Criando o Mundo

Não há muitos problemas de design específicos, contanto que você se limitea formula do game de representação de papéis (RPG); lembre-se de espalharbem suas cenouras pelo nível(aqui está um item exclusivo, aqui está um de-talhe do mistério da história a ser solucionado, aqui está um lugar em que ojogador pode obter uma vista panorâmica do nível); finalmente, se possível,tente proporcionar aos jogadores diferente opções para perseguir seus objeti-vos dependendo de como construíram seus personagens (por exemplo, ladrõesque podem entrar furtivamente em situações, diplomatas que podem sair desituações com uma argumentação convincente ou pistoleiros que podem matartudo o que encontram pela frente até o final). Um game deve apelar para o egodos jogadores, e não há melhor maneira de fazer isso do que oferecer níveis esituações que lhe permitam exercitar as habilidade e recursos em que gastarammais pontos (NOVAK, 2010, p. 224).

Existem muitas ferramentas para o desenvolvimento de mundos e a maioria dos fabri-cantes as disponibilizam gratuitamente, com o intuito de aumentar o número de modificações(MOD) em seus jogos lançados. Para o projeto ScareSupreme, o mundo foi desenvolvido comvárias ferramentas e limitado através da programação do Unity, ou seja, o personagem nãoconseguirá navegar pelo mundo da forma que quiser e dependerá de certas ações para prosseguirpelo mesmo. A Figura 10 apresenta o mundo do jogo Arma 3.

2.7 Criando o Áudio

Jogos de suspenses e terror, como Silent Hill 2 (Figura 11), possuem uma qualidadeimpactante em termos de músicas e efeitos sonoros, pois, em cada cena percorrida, o jogo setorna mais assustador, aumentando o envolvimento do jogador.

Page 27: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

26

Figura 10: Mundo do jogo Arma 3

Fonte: http://media.pcgamer.com/files/2013/08/altis-tour.jpg(17/08/2014)

O áudio para games pode consistir em sons sampleados(gravados), como vozese música; sons de interface, como ruídos eletrônicos e cliques de botão; e efeitossonoros do game, como explosões e passos. O áudio pode ser extremamenteimportante para a atmosfera do game, tanto para definir o clima como para alterá-lo. Pode-se usar áudio para fornecer indicações sonoras ao jogador, intensificarsua satisfação e aumentar a qualidade de um game (NOVAK, 2010, p. 272).

Figura 11: Jogo Silent Hill 2

Fonte: http://ui04.gamefaqs.com/1859/gfs_22655_2_2.jpg(06/07/2011)

2.8 Desenvolvendo o Protótipo

A fase de desenvolvimento do protótipo é essencial para todo o processo e pode ser oitem mais importante na decisão de ir para o próximo nível de desenvolvimento do jogo.

Usar várias tecnologias de criação de jogos no desenvolvimento de protótipo é bastantecomum, mesmo que a tecnologia empregada no final do jogo seja outra. Para a criação doprotótipo, em vários casos, são utilizados apenas rascunhos de lápis e papel, demonstrando avisão bastante simplificada do que o jogo possa se tornar, mas em algum momento o protótipopode ser descartado no desenvolvimento. A Figura 12 apresenta o protótipo usado no projetoScareSupreme.

Page 28: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

27

Figura 12: Protótipo ScareSupreme

Fonte: Elaborada pelo Autor

Criar um protótipo na fase preliminar significa concentrar a atenção da equipeem protótipos rudimentares, mas jogáveis, no inicio do processo de design,antes que uma equipe de produção completa esteja disponível. Um pequenogrupo de designers pode cria rapidamente uma versão jogável de uma ideiaconsumindo recursos de produção extremamente baixos. A ideia é testar erevisar seguidamente o protótipo redumentar utilizando a pequena equipe atédesenvolver um sistema de jogo realmente interessante. Só então a ideia deveraser colocada em produção e uma equipe completa, incorporada ao projeto(NOVAK, 2010, p. 345).

2.9 Produção

A fase de desenvolvimento mais extensa é a produção (Figura 13), ou seja, é quandoinicia-se realmente o desenvolvimento do jogo. Nesta fase, são desenvolvidos os efeitos sonoros,todo o código fonte, os modelos 3D, os testes e tudo que for necessário para concluir o jogo.Pode durar de 6 meses a 2 anos ou mais, desde que seja corretamente calculado o tempo de todasas etapas no planejamento.

O aspecto mais complexo do processo de produção de um game é equilibrar acriatividade com os requisitos comerciais e profissionais impostos à produção.É muito difícil criar um ambiente em que os artistas se divirtam e, ao mesmotempo, terminem seu trabalho dentro do prazo e do orçamento. Acredito, porémque é esse equilíbrio que leva à criação dos melhores games (NOVAK, 2010, p.346).

2.10 Fase Alfa

A fase alfa (Figura 14) é especialmente voltada para o acabamento e ajustes finais dojogo, como acabamentos artísticos, musicais, efeitos de som ou remover alguns detalhes quenão sejam necessários. É quando a interface do usuário está completa, ou seja, o jogo pode serjogado do começo ao fim, passando por cada etapa a procura de erros, falhas e desempenho. Estafase pode incluir testadores externos que não participaram de nenhuma das etapas anteriores.

Page 29: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

28

Figura 13: Produção ScareSupreme

Fonte: Elaborada pelo Autor

Como artista de games, você frequentemente estará criando projetos e esperandoque a tecnologia funcione como foi prometido - ou então você já criou boa partedo material e, quando o game está quase terminado, aparece algo novo quetorna supérfluo tudo o que foi feito até então. è nesse ponto que você precisadecidir: o plano original será mantido, mesmo correndo o risco de o gameparecer ultra-passado, ou você jogará fora todo o trabalho anterior e tentarádominar a nova técnica no tempo que lhe resta? Essa é sempre uma decisãodifícil (NOVAK, 2010, p. 347).

Figura 14: Minecraft na versão alfa

Fonte: http://games.planeta-informatica.com/wp-content/uploads/2011/04/MineCraftCastle_nosologeeks-635x465.jpg(20/06/2011)

2.11 Fase Beta

A fase beta (Figura 15) da ênfase na correção de problemas quando todos os matérias dojogo estejam terminados e a sua fase de produção esteja encerrada. A maioria dos fabricantesutilizam seus próprios testadores ou recrutam jogadores online para serem testadores betas dosjogos, na função de encontrar o máximo de defeitos, erros e ajustes de desempenhos antesque sejam publicados e comercializados. Algumas das principais melhorias durante a fase betaincluem o desenvolvimento da versão final de código, conteúdo e manual do jogo.

Page 30: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

29

Figura 15: Minecraft versão beta

Fonte: http://verrytechnical.com/wp-content/uploads/2010/12/Minecraft_Beta.jpg(20/04/2014)

Para mim, a parte mais difícil do desenvolvimento é decidir quando parar.Em última análise, qualquer game sempre pode ter um pouco mais disso oudaquilo e um ou dois recursos adicionais. Cabe a você estabelecer um limite,quando o título será dado por terminado e lançado no mercado. Isso sempregera um frenesi final de trabalho nas equipes mais dedicadas. Uma boa equipede administração canaliza essas horas extras para tornar um bom produto e nãopara simplesmente se livrar dele de qualquer maneira (NOVAK, 2010, p. 349).

2.12 Fase Ouro

Após concluir a fase Beta, inicia-se a fase ouro (Figura 16). Nesta fase o produto e ascorreções de erros foram avaliadas; é enviada uma cópia do jogo para a fábrica e pode durarsemanas a sua produção em mídias físicas, manuais e caixas. Este formato está perdendo espaçopara os jogos comercializados diretamente pela Internet, pois são disponibilizados através depagamentos online e posteriormente os usuários podem efetuar o download.

Figura 16: Loja online Steam

Fonte: Elaborada pelo Autor

Page 31: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

30

3 UNITY E OUTRAS FERRAMENTAS UTILIZADAS

Neste capítulo é descrito algumas características do Unity e as demais ferramentasutilizadas no desenvolvimento deste trabalho.

3.1 Unity

Para estúdios e desenvolvedores independentes, o democrático ecossistema daUnity derruba barreiras de tempo e custo para criar jogos exclusivamente lindos.Eles estão usando o Unity para viver do que adoram fazer - desenvolver jogosque cativam e encantam os jogadores em qualquer plataforma (UNITY, 2014).

Foi utilizado a versão 4.6.0b17 do software (UNITY, 2014) e encontra-se disponívelgratuitamente para download em https://unity3d.com/pt/unity/download.

3.2 Estrutura do Unity

Basicamente o Unity trabalha com o gerenciamento de GameObjects. Os GameObjects

representam objetos contidos no projeto e se estendem a objetos sólidos, objetos inanimados, eaté seres vivos como plantas, animais e seres humanos.

3.2.1 Interface

A interface Unity (Figura 17) é simples e de fácil aprendizagem para novos utilizadores.Em apenas um curto tempo de uso é possível conhecer as interações entre os visualizadores, quesão as partes da interface.

Figura 17: Interface do Unity

Fonte: Elaborada pelo Autor

3.2.1.1 Project

É um navegador que lista todos os itens e diretórios incluídos no projeto atual do Unity,possibilitando importar novos itens pelo menu ou simplesmente arrastando-os para a área de

Page 32: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

31

trabalho.

3.2.1.2 Inspector

Cada GameObject possui propriedades e detalhamentos de vários parâmetros no projeto,permitindo a possibilidade de alterar algumas informações antes da própria inclusão do item nacena. A manipulação das propriedades pode ser feita por meio da palheta Inspector e incluirnovos componentes no objeto, variáreis de tipos de valores e também de referencia para outrosGameObjects.

3.2.1.3 Hierarchy

O painel Hierarchy lista todos os objetos que estão sendo usados na cena atual. Paraincluir novos recursos neste painel, pode-se usar o menu de Create ou arrastá-los a partir do painelProject.A organização dos objetos são definidos pela hierarquia, ou seja, podem existir objetosque são filhos de outros, desta forma, ao arrastar um objeto em cima de outro, automaticamenteo mesmo se tornará filho, assumindo a movimentações e outras funcionalidades do pai.

3.2.1.4 Scene

Compõe a cena do jogo e onde tudo realmente é construído. É o local aonde todos osGameObjects e demais itens são inseridos. A manipulação é intuitiva e baseada no conceito drag

and drop (arrastar e largar), ou seja, selecionar o GameObject com o mouse e arrasta-lo para olugar desejado.

3.2.1.5 Game

Esta paleta apresenta o resultado final do jogo, permitindo que o desenvolvedor avalie ealtere as propriedades dos GamesObjets em tempo de execução. No Layout padrão do Unity,este visualizador está atrás de outro visualizador de nome Scene. É possível enxergar-lo quandoselecionado em sua aba na interface principal e quando é iniciado o jogo pelo botão (Start) dabarra de ferramentas, automaticamente o visualizar Game sobrepõem qualquer outro que estejaem destaque anteriormente.

3.2.1.6 Barra de Ferramentas ou toolbar

As características da Barra de Ferramentas do Unity definem-se em facilidade de aprendi-zagem, agilidade nas alterações e testes de desenvolvimento. Os botões do lado esquerdo sãopara manipulações dos objetos, como alterar o tamanho, rotação e posição. Os botões do meiosão controles de execução do jogo e para testar as suas etapas, alternando do ambiente de criaçãopara o ambiente do jogo. Referente aos botões da direita, um é para desabilitar ou habilitar as

Page 33: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

32

camadas no painel Scene, ou seja, na edição do jogo é possível desabilitar a camada de água e amesma ficará invisível. O outro botão manipula o layout de visualização dos painel, há váriostipos e possibilidade de alterar o layout conforme a preferencia do desenvolvedor.

3.2.2 Componentes

Ao vincular Componentes a um GameObject, você cria comportamento e movi-mento e define a aparência. Luzes, malhas, efeitos especiais, áudio, câmerase emissores de partículas são exemplos de Componentes. Por sua vez, cadaComponente tem um conjunto próprio de propriedades ajustáveis, alcance eintensidade para luz (UNITY, 2014).

Praticamente quase todos os itens do cenário são GameObjects, que podem ter váriostipos de componentes associados ao mesmo tempo, como, por exemplo, um script para alterarseus comportamentos em tempo real no jogo.

3.2.3 Prefabs

Uma instância, na maior parte do mundo 3D, é a ideia de exibir um objetomúltiplas vezes em vez de ter múltiplas copias do objeto. Em aplicativos como oMaya, isso significa que, se uma alteração foi feita no objeto original, a mudançaocorre automaticamente em cada instancia do objeto. No Unity, essa mesmaideia está presente, mas usa uma nomenclatura ligeiramente diferente. No Unity,a ideia de exibir um objeto várias vezes e fazer essas versões adicionalmenteexibidas herdarem as alterações chama-se prefab (WATKINS, 2012, p. 403).

Prefabs é a necessidade de ter o mesmo objeto repetido várias vezes em um cenário, ecaso ocorrer alterações especificas em algum deles, é possível propagar para os demais itensautomaticamente. Prefabs podem ser exportadas para outros projetos, caso necessário, ou seja, éa possibilidade de criar uma biblioteca de objetos reutilizáveis para novos jogos.

3.2.4 Materiais, Texturas e Shaders

Texturas são imagens; elas podem ser fotos ou imagens pintadas. Texturas sãoelementos 2D que definem determinado atributo de um material. Texturas podeser usadas para definir os elementos táteis visual ou coloridos de um material,como relevo. Quando um material é aplicado a um objeto, shader é usado paramostrar como esse material vai reagir a luz e ao angulo de visão do observador(WATKINS, 2012, p. 63).

Materiais, texturas e shaders são importados automaticamente quando é incluído umnovo objeto no projeto; são separados fisicamente os materiais e as texturas, ainda assim aassociação importada entre eles continua. Caso necessário, é possível atribuir outra textura nomaterial e alterar o seu tipo de shader, desta forma fica fácil a manipulação entre os mesmos.

O Unity permite criar materiais com diversos tipos de efeitos de shaders, sem a neces-sidade de atributos adicionais, e ainda a Asset Store disponibiliza muitos materiais e texturas

Page 34: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

33

para serem utilizadas. Os Assets são itens prontos para serem utilizados tais como modelos deobjetos, modelos de personagens 3D, kits de efeitos de sons, scripts e texturas. A Asset Store é acentralização online destes pacotes da comunidade Unity.

3.2.5 Terrenos

Os terrenos podem ser muito interessantes na situação certa. Um Terrain éum GameObject criado no Unity e pode conter mapas de textura e objetosinteligentes", como arvores e grama. Por inteligente"quero dizer que eles criamalgumas coisas realmente sofisticadas, como mudar o nível de detalhes a medidaque o jogador se aproxima ou se afasta deles (WATKINS, 2012, p. 121).

O Unity possui uma completa palheta de editar terrenos em suas ferramentas, comflexibilidade e eficiência na modelagem 3D de paisagens. É possível projetar superfícies planas eirregulares com diversos tipos de pinceis, adicionar rochas, árvores, gramas, e ainda permite apersonalização das distâncias e quantidades a serem desenhadas pelo pincel.

3.2.6 Linguagens de desenvolvimento

O Unity usa três linguagens de script: JavaScript(UnityScript), C# e Boo. Essastrês linguagens de script são maneiras muito diversas de acessar a mesmafuncionalidade básica do mecanismo do jogo; três ferramentas com o mesmoobjetivo (WATKINS, 2012, p. 334).

Para este projeto foi utilizada a linguagem JavaScript(UnityScript) por existir diversasdocumentações na comunidade Unity, e também é mais simples para iniciantes no desenvol-vimento do games. Para usuários mais experientes é recomendado utilizar o C#, pois este temacesso de baixo nível no sistema e no próprio Unity.

Constantemente citado neste trabalho, os Scripts "[...]contém comandos (instruções),organizados em blocos e funções[...] Uma coleção de comandos é chamada de blocos docódigo.[...]Os comandos podem estar em vários locais dentro de um script, mas geralmente osblocos de comandos são agrupados em uma função "(WATKINS, 2012, p. 337, grifo do autor).

3.2.7 Animação

Pense nas animações como componentes de GameObjects. Sempre que umobjeto deve ser animado no Unity, o Unity cria um arquivo separada edita-vel(com um rotulo .anim) que armazenará as informações. O que isso significaé que a animação pode ser usada repetidas vezes em outros objetos(o que éum poderoso recurso por sí só). Isso também significa que há um novo recursoarmazenado na pasta recursos.(WATKINS, 2012, p. 320)

Existem várias ferramentas para animação no mercado, mas o próprio Unity possui umpainel para editar animações de um objeto ou vários objetos desde que pertençam na hierarquia

Page 35: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

34

de pai e filho no painel Hierarchy. O Unity permite importar objetos com animações incluídasno mesmo e elas podem ser criadas em outras ferramentas 3D, como Maya, 3DStudio, Blender eetc.

3.2.8 Renderização

A teoria 3D possui uma vasta quantidade de informações e detalhes técnicos, mas paraeste trabalho serão citadas as definições mas relevantes para os jogos.

Formas tridimensionais em um aplicativo 3D são criadas quando as coleções depolígonos são agrupadas. Pense nos polígonos como folhas de metal inflexíveis.As folhas de metal podem dobrar onde se conectam, mas o polígono em sinão pode. Isso significa que, quando mais polígonos estão presentes, em maislugares a malha pode dobrar, portanto, mais complexa a forma pode ser.[...]Odesenho dos polígonos, texturas e iluminação associados a eles é chamado derenderização (WATKINS, 2012, p. 11/12).

Adam Watkins também explica como os jogos são renderizados na categoria via hardware.

Os jogos entram nessa categoria porque a placa de vídeo renderiza os polígonosdentro do espaço digital para representar o espaço 3D. O hardware desenha oque está na tela (incluindo todos os objetos, texturas e luzes), e precisa fazerisso muitas vezes por segundo, os jogadores perceberão um tremido na imagemdo jogo (WATKINS, 2012, p. 12).

A quantidade de polígonos é muito importante na renderização do jogo, ou seja, nomomento que os polígonos estão sendo desenhados no espaço 3D, quanto maior a quantidadede polígonos visualmente for, maior será o consumo de processamento e sucessivamente odesempenho do jogo poderá ser prejudicado. A Figura 18 apresenta formas tridimensionaiscom texturas criadas para o projeto ScareSupreme; o objeto a esquerda possui uma quantidaderazoável de polígonos e o da direta uma quantidade baixa de polígonos.

Figura 18: Formas tridimensionais com texturas

Fonte: Elaborada pelo Autor

Page 36: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

35

3.2.9 Iluminação

A criação de recursos de iluminação no Unity, a cada versão, está mais poderosa. Paradesenvolvedores que possuem a versão PRO, os recursos de iluminação são bem mais completosem relação a versão grátis. Um fator importante a ser considerado no desenvolvimento de umjogo, é a diferença visível de iluminação de um monitor para outro, em alguns casos mais claroou mais escuro.

Para alterar a luz do ambiente de todo o projeto é necessário editar as propriedades doRenderSettings. O projeto ScareSupreme, por ser um jogo de horror, foi definido utilizar a corpreta da luz do ambiente com o intuito de deixar o mais assustador possível. Existem quatrotipos de GameObjects de luz no Unity, estes são Point Light, SpotLight, Directional Light e Area

lights. Todos podem ser espalhados no projeto e possuem características distintas de iluminação,como, por exemplo, projetar a luz de uma Lanterna ou até a claridade do sol.

Também existe a técnica de Backing, que consiste em pintar a luz e sombras de objetos emoutros objetos; o processador de vídeo apenas desenha a textura e não a passagem de iluminaçãoe sombra. O principal objetivo do Backing é reduzir o custo de processamento e velocidade deexecução.

Baking é o processo de seleciona a iluminação que uma luz emite - e, maisimportante, as sombras que os objetos projetam em outros objetos - e pintaresses valores de cores ajustados nos objetos. Pense em pintar sombras que sãoprojetadas ao longo de uma superfície e pintar uma matriz em uma superfícieque mostra a luz amarelada do poste de iluminação suja (WATKINS, 2012, p.146).

3.2.10 Sistema de partículas

Essencialmente, partículas do Unity são minúsculos cartazes ou planos(emboraa malha possa ser mais complexa) que são emitidas na cena e sempre perma-necem na frente da câmera. Isso dá a ilusão de volume a coisas como fumaçaquando esse planos são texturizados com texturas semitransparentes. Como oobjeto de emissão-padrão é um lugar, a contagem de polígonos permanece baixa,mas grandes efeitos são acionados.[...]Partículas podem ser usadas eficazmentepara fumaça, fogo, faixas, vapor e etc (WATKINS, 2012, p. 137).

Partículas no Unity são simples de serem adicionadas no projeto e os resultados dentro dojogo sempre são atraentes. Na propriedade do GameObject especificamente no componente departículas é possível definir o tamanho, a quantidade, a transparência, o tempo de visibilidade, adireção e demais configurações do mesmo. O desenho da textura é criado em qualquer softwarede edição de imagem e, desde que contenham o fundo na cor preta, o Unity reconhece esta corcomo canal alpha, deixando-o transparente em tempo de execução, sendo assim, ficam visíveissomente as partículas como poeira, fumaças e etc.

Page 37: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

36

3.2.11 Rust

O único objetivo em Rust é sobreviver.Para fazer isso você terá que superardificuldades como fome, sede e frio. Construir uma fogueira. Construir umabrigo. Matar animais pela carne. Proteja-se contra outros jogadores. Criaralianças com outros jogadores e juntos criar uma fortaleza (STUDIOS, 2014).

Rust (Figura 19) é um jogo de FPS Multiplayer de acesso antecipado com o principalobjetivo de sobrevivência em terrenos perigosos que, ainda em fase de desenvolvimento naengine do Unity, superou a barreira de 1 milhão de cópias vendidas em fevereiro de 2014.

Figura 19: Interface do Jogo Rust

Fonte: http://leviathyn.com/wp-content/uploads/2014/01/rust-beta-gameplay-buildings.jpg(02 jun. 2014)

3.3 Outras Ferramentas Utilizadas

3.3.1 Autodesk Maya

O software de animação 3D, modelagem, simulação, renderização e composiçãoMaya oferece um conjunto completo de recursos para animação computadori-zada 3D, modelagem, simulação e renderização em uma plataforma de produçãocom alta capacidade de expansão. O Maya oferece conjuntos de ferramentasavançados de personagens e efeitos com maior produtividade em tarefas demodelagem, texturização e criação de graduador (AUTODESK, 2014b).

Para este projeto a ferramenta Maya (Figura 20) foi o software mais importante antesdo Unity, pois as teclas de atalhos e a interface dos comandos são muito parecidas em ambasferramentas. O desenvolvimento do jogo foi baseado no livro "Criando jogos com o Unity eMaya"de Adam Watkins e ele apresenta muitas vantagens para a geração de objetos e cenários quepodem ser convertidos para o Unity, embora apresente as desvantagens de ser muito complexae não gratuita, ainda sim várias versões são disponibilizadas para estudantes diretamente nosite do Autodesk. Foi utilizado a versão 2012 do software e está disponível para download emhttp://www.autodesk.com/products/maya/overview.

Page 38: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

37

Figura 20: Lanterna editada no Maya para o projeto ScareSupreme

Fonte: Elaborada pelo Autor

3.3.2 Autodesk Mudbox

Projetado por artistas profissionais das indústrias de cinema, jogos e design, osoftware de escultura digital e pintura texturizada Autodesk Mudbox oferece aosprofissionais de modelagem 3D e textura a liberdade de criar se a preocupaçãocom detalhes técnicos (AUTODESK, 2014a).

Para este projeto, a ferramenta Mudbox (Figura 21) foi a opção mais profissional na mo-delagem do monstro inimigo. Entre várias ferramentas esta se destaca pela interação com o Maya

e por possuir as teclas parecidas com o mesmo e as do Unity. Existem várias versões disponibili-zadas para estudantes diretamente no site do Autodesk. Foi utilizado a versão 2015 do software eestá disponível para download em http://www.autodesk.com/products/mudbox/overview.

Figura 21: Esculpindo monstro no Mudbox para o projeto ScareSupreme

Fonte: Elaborada pelo Autor

Page 39: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

38

3.3.3 Photoshop

O Photoshop (Figura 22) é uma ferramenta de edição gráfica para criação e alteração deimagem, sendo que é poderosa para texturas avançadas, além de possuir milhares de plugins

disponíveis gratuitamente.

Para este projeto o Photoshop foi essencial na edição de todas as imagens e cores,utilizando as técnicas de texturas sem costuras, mapeamento UV e Normal mapping. É disponi-bilizada na versão 30 dias de uso pela Creative Cloud, após o vencimento é possível adquirirdiversos planos para continuar a utilização da mesma. Foi utilizado a versão CS 11.0 do softwaree está disponível para download em https://creative.adobe.com/pt/products/download/photoshop.

O Adobe Photoshop é o editor gráfico mais avançado que existe, capaz de fazerdesde simples fotomontagens até complexas imagens 3D e ilustrações. Sãomuitíssimas as suas funções e possibilidades, e existem numerosos tutoriaispara você aprender a utilizá-lo (SOFTONIC, 2014).

Figura 22: Interface do Photoshop, editando mapa normal para o projeto ScareSupreme

Fonte: Elaborada pelo Autor

3.3.4 Audacity

"O Audacity é um programa que permite editar, gravar, importar e exportar diversosformatos diferentes de arquivos de áudio. É possível gravar músicas e sons ao vivo ou converterdiretamente material em fitas e CDs"(TECHTUDO, 2014).

Para este projeto o Audacity (Figura 23) foi utilizado nas gravações manuais de algunsefeitos sonoros, como abrir portas, ruído de chave arrastando e entre outros. Alguns efeitos esons naturais de ambientes foram adquiridos de sites sem copyright, e editados no Audacity paraa adaptação correta dentro do jogo. Foi utilizado a versão 2.0.2 do software e está disponívelpara download em http://audacity.sourceforge.net/download/windows.

Page 40: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

39

Figura 23: Interface do Audacity

Fonte: http://www.superdownloads.com.br/imagens/screenshots/9/3/93746,O.png(19 ago. 2014)

3.3.5 FL Studio Demo

FL Studio (Figura 24) é um software completo para editar e criar músicas, possui muitosefeitos sonoros em sua biblioteca.

Para o projeto ScareSupreme, foi utilizada a versão de demonstração para criar loops

de ambiente e passos do personagem. A sua única limitação é não poder salvar o projeto, masa exportação para o formato mp3 é liberada. Foi utilizado a versão 11.1.0 do software e estádisponível para download em http://www.image-line.com/downloads/flstudiodownload.html.

Figura 24: Interface do FL Studio 11 Demo

Fonte: Elaborada pelo Autor

Page 41: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

40

4 DESENVOLVIMENTO

Neste capítulo é descrito os processos de desenvolvimento do projeto ScareSupreme pormeio da descrição e explanação de seus componentes.

Para estúdios e desenvolvedores independentes, o democrático ecossistema daUnity derruba barreiras de tempo e custo para criar jogos exclusivamente lindos.Eles estão usando o Unity para viver do que adoram fazer - desenvolver jogosque cativam e encantam os jogadores em qualquer plataforma (UNITY, 2014).

4.1 Mundo do jogo

ScareSupreme é um jogo de terror em primeira pessoa, com o objetivo de escapar deum ambiente escuro e assustador. Após misteriosamente o combustível do carro do personagemacabar, a sua única alternativa é tentar localizar algo que solucione o seu problema em umaconstrução antiga e isolada. Com grandes corredores e uma atmosfera negativa, o jogador seráobrigado a explorar o lugar e sobreviver até o final.

4.2 Modelagem dos Cenários

Modelar o cenário foi um dos desafios deste projeto. O Unity disponibiliza objetospara criação de cenários, mas para a modelagem dos corredores e salas principais utilizou-se oAutodesk Maya, por ser uma ferramenta mais poderosa.

A exportação do resultado da modelagem é feita através de plugins da próprio Maya parao formato FBX. A Figura 25 apresenta a modelagem dos corredores do jogo ScareSupreme.

Figura 25: Modelagem dos corredores e salas

Fonte: Elaborada pelo Autor

4.3 Criando um Protótipo

Após a modelagem dos corredores e salas principais, o arquivo FBX é importado para oUnity e incluído no cena atual. Foi adicionado um First Person Controller, que é um objeto da

Page 42: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

41

assets padrão do Unity para controle de personagem com visão em primeira pessoa. O objetivoprincipal do protótipo foi realizar testes de proporção de tamanho, movimentação de jogabilidadeno ambiente criado e possível continuação do projeto.

4.4 Modelagem dos Objetos

Vários objetos foram criados diretamente no Maya para interagirem ou não com opersonagem do jogo, entre eles destacam-se caixas de madeiras, chaves, galão de gasolina, mesase diversos objetos. As Figuras 26 e 27 apresentam objetos modelados para o jogo ScareSupreme.

Figura 26: Modelagem dos objetos mesa e galão

Fonte: Elaborada pelo Autor

Figura 27: Modelagem de diversos objetos

Fonte: Elaborada pelo Autor

4.5 Inserção de texturas

Texturas de qualidades e uma boa inclusão nos modelos desenvolvidos proporcionamrealismo e perceptiva de profissionalismo que podem impressionar qualquer jogador. Após odesenvolvimento de todos os objetos do cenário, foram utilizadas técnicas de mapeamento UV etexturização dos mesmos no próprio Maya.

Page 43: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

42

4.5.1 Mapeamentos UV

Vários tipos de técnicas de mapeamento de UV (Figura 28) foram utilizadas para tex-turização e logo serão citadas; mapeamento UV é a técnica de desembrulhar todas as faces doobjeto para a aplicação correta das texturas em seu plano. Foi utilizado o próprio editor de UVdo Maya, aplicado uma textura xadrez(preto e branco) em todos os planos mapeados para ter aperspectiva do tamanho da UV e evitar imagens distorcidas após a aplicação da texturas.

Figura 28: Mapeamento UV de diversos objetos

Fonte: Elaborada pelo Autor

4.5.1.1 Automatic Mapping

Está função no Maya calcula e gera automaticamente o mapeamento UV do objeto emquestão, em casos de uma geometria que possuem faces para todos os eixos ou mais complexas,o mapeamento manual é o mais indicado. A Figura 29 apresenta o resultado do Automatic

Mapping.

Figura 29: Mapeamento UV de Objetos

Fonte: Elaborada pelo Autor

Page 44: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

43

4.5.1.2 Mapeamento Manual

Utilização do mapeamento manual é mais preciso nas superfícies por ser mais cuidadosoe trabalhoso. Foi utilizada a função Planar Mapping (Figura 30) para todas superfícies lisas nomesmo eixo. Por exemplo, pisos e paredes longas necessitam repetições de texturas. Para objetoscirculares foram utilizados a função Culindrical Mapping.

Figura 30: Planar Mapping

Fonte: Elaborada pelo Autor

4.5.2 Edição de materiais e texturas

Todos os materiais criados para este projeto são do tipo lambert e serão alterados somentequando necessário dentro do Unity. Após a criação do material, o mesmo é aplicado no objetoou plano correspondente, substituindo o formato anterior em xadrez, mas mantendo o mesmomapeamento UV, ou seja, as imagens não serão distorcidas. A Figura 31 apresenta uma texturaaplicada no jogo ScareSupreme.

Todos as texturas aplicadas foram editadas no tamanho múltiplos de 2, o Unity conse-gue converter imagens de tamanhos diferentes, mas precisaria de processamento adicional nomomento da execução do jogo.

Figura 31: Visualização de texturas aplicadas no projeto

Fonte: Elaborada pelo Autor

Page 45: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

44

Vários objetos podem receber o mesmo material. Na importação para o Unity sãoseparados os materiais e as texturas fisicamente (Figura 32), ambos podem ser atrelados a outrostipos de Objetos do projeto, mesmo que estes sejam diferentes dos modelos da importação.

Para Objetos que necessitam de repetição de textura, como pisos, paredes e tetos deextensos corredores, foi editada no Photoshop a textura no tamanho 512x512 e removidas assuas bordas utilizando a ferramenta Clone, na intenção de criar uma imagem contínua. Paraplanos maiores, foram criadas texturas de tamanho 2048x2048, pois estas imagens precisam deum detalhamento mais elaborado.

Figura 32: Visualização das texturas importadas automaticamente para o Unity juntamente com o modelo

Fonte: Elaborada pelo Autor

4.6 Criação de Terreno

Foram modelados dois terrenos no projeto Unity após a importação e posicionamento domodelo principal. Um destes foi posicionado na entrada da construção enquanto o outro ficou dolado oposto (Figura 34). A Figura 33 apresenta a inserção de rochas pelo editor de terreno.

Figura 33: Rochas criadas no editor de terreno do Unity

Fonte: Elaborada pelo Autor

Page 46: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

45

Figura 34: Floresta criada no editor de terreno do Unity

Fonte: Elaborada pelo Autor

4.7 Efeitos de renderização

Após a conclusão dos passos anteriores, foram adicionados alguns efeitos do próprioeditor do Unity no projeto. A princípio o Skybox foi adicionado apresentando uma noite de luacheia, mas para o propósito do jogo o mesmo foi removido e ativado a nebrina(Fog) (Figura 35)com a cor próxima ao preto. A luz de ambiente está na mesma cor da neblina, com o objetivode intensificar o ambiente noturno e também para o personagem não enxergar objetos a longadistância.

Figura 35: Ajustando o efeito neblina no Unity

Fonte: Elaborada pelo Autor

4.8 Assets e modelos Importados

Para este projeto foram importados vários assets da comunidade, e também as que vierampor padrões na instalação do Unity. Na criação de um novo projeto existe a possibilidade deselecionar quais destes pacotes serão importados, mas posteriormente podem ser acionadosmanualmente no projeto.

Foram utilizados os Assets padrões de terreno, controle de personagem, partículas, Sky-

boxes e Water (Figura 36). Assets da comunidade foram para árvores, chuvas e também foramadquiridos alguns modelos de sites externos, como carro e camas de dormir.

Page 47: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

46

Figura 36: Incluindo lago com o Assets Water

Fonte: Elaborada pelo Autor

4.8.1 Partículas

Após importar a Assets de partículas, as mesmas foram incluídas em diversos lugaresno projeto, como fumaça de um lago (Figura 37), fumaça de um gerador ligado e poeira de umantigo portão. Algumas estão visivelmente por padrão, ou esperando a sua ativação em umadeterminada ação do jogador.

As partículas foram editadas individualmente no Unity e a sua texturas foram personali-zadas no Photoshop.

Figura 37: Partículas de vapor totalmente personalizadas

Fonte: Elaborada pelo Autor

4.9 Shaders avançados e iluminação

Normal mapping é uma técnica de computação gráfica para simular imperfei-ções e rugosidades não presentes na geometria do modelo. Para isso, perturba-mos as normais do objeto e a usamos no cálculo das equações de iluminação. Ageometria do material não é alterada e isso implica que as silhuetas dos modelosnão sofreram alterações, apenas nos interiores que teremos a tradicional ilusãode aumento de polígonos (PASTOR, 2011).

Foi aplicado em quase todos os materiais deste projeto a técnica de shaders avançados(Figura 38), que é a criação de Normal mapping a partir das suas texturas e a alteração dos

Page 48: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

47

shaders para bumped Specular. Desta forma, as superfícies estarão mais táteis em suas aparências,úmidas e ainda mais realistas na presença de luz em sua direção. As Figuras 39 e 40 apresentamtexturas com e sem aplicação de shaders.

Figura 38: Material com shader avançado

Fonte: Elaborada pelo Autor

Com o auxilio do plugin da Nvidia, o mapa normal foi extraído a partir dos mapa decores das texturas de praticamente todos os objetos do jogo.

Figura 39: Comparação de Textura simples e textura com Shaders avançados

Fonte: Elaborada pelo Autor

A iluminação do jogo está principalmente na lanterna do jogador. Por ser um jogo deambiente escuro, foram utilizados poucos pontos de luzes. Quando todas as ações e tarefas foremexecutadas pelo jogador, a sala final e as luzes dos corredores da construção serão iluminados,indicando o caminho para a vitória. Foi utilizado o objeto SpotLight para dar alguma iluminaçãoao ambiente.

Page 49: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

48

Figura 40: Comparação de textura simples e textura com Shaders avançados

Fonte: Elaborada pelo Autor

4.10 Roteiro de eventos

Foram definidos todos os passos que o jogador precisa efetuar para conseguir avançar napartida. Em vários momentos o mesmo precisará encontrar determinados itens ou ações paraabrir uma porta ou portão. Este roteiro programado tem a vantagem de ter poucas chances defalhas no jogo, mas caso queira iniciar uma nova partida, praticamente o roteiro será parecido aoanterior, mesmo que foi programado para vários itens mudarem de lugar aleatoriamente.

4.11 Colisão

Foi usado o sistema padrão do próprio Unity para as colisões dos personagens, itens,mapa e triggers. O Character Controller define o raio de colisão do corpo do personagem. Paracada objeto importado é ativado o Generate Colliders em propriedades, antes ou depois deincluir na Cena, desta forma é possível colidir sem atravessar o mesmo. Cada objeto pode tero seu formato de colisão (Figura 41) editado manualmente no visualizador Inspector em suaspropriedades, e objetos criados diretamente no Unity recebem automaticamente o collider maisapropriado para o seu formato.

Figura 41: Componente de colisão do armário de madeira

Fonte: Elaborada pelo Autor

Page 50: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

49

4.12 Gatilhos e ações

Gatilhos no Unity são chamados de trigger (Figura 42), estes são um dos itens maisimportantes e usados em um desenvolvimento de jogos. Define quando determinado som deve sertocado, uma porta a ser aberta, um personagem teleportar, um monstro aparecer ou desaparecer.Foram usados cubos para os trigger, pois desta forma, o caminho que o jogador percorrerserá totalmente preenchido, impossibilitando o mesmo de não acionar os gatilhos plantados.O componente renderer esta desativado, tornando-o invisível na visualização do jogador e ocomponente de Colisão ativado como um trigger na propriedades deste GameObject. Tambémforam associados scripts personalizados para as ações dos trigger.

Figura 42: Gatilho de ação instalado dentro de sala

Fonte: Elaborada pelo Autor

Os triggers somente foram usados quando o raio raycast não encaixasse na ação emquestão. Pois podem consumir processamento com muitos Triggers em um cenário.

Para este projeto foi utilizado a técnica Raycast (Figura 43) que consiste em formar umraio invisível, e o mesmo acompanha a visão do jogador, identificando tudo aquilo que esteja emsua frente. Desta forma, é possível identificar qual objeto o personagem está olhando e ativaruma ação determinada. Foi criado apenas um Script com as regras do Raycast e associado acâmera de visualização principal. Este contém a maior quantidade de linha programada, poispossui muitos objetos do jogo associado em suas variáveis.

4.13 Personagens

Foi decidido criar dois personagens neste projeto. O primeiro é controlado pelo jogadorem 1o pessoa e é visível somente a lanterna do mesmo; o segundo personagem é um monstroque parece em diversos lugares aleatoriamente.

4.13.1 Modelagem dos Personagens

Apenas o personagem monstro possui uma forma física modelada, e inicialmente foidesenvolvido na ferramenta Maya (Figura 44) com poucos detalhes, mas com um certo aspecto

Page 51: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

50

Figura 43: Raio Raycast projetado

Fonte: Elaborada pelo Autor

assustador.

Figura 44: Personagem modelado no Maya e importado para o Unity

Fonte: Elaborada pelo Autor

Após várias pesquisas, foi decidido modelar novamente o personagem na ferramentaMudBox (Figuras 45 e 46), que também é do Autodesk e totalmente voltada para esculturas,objetos e personagens. Na importação do modelo, foi necessário diminuir a qualidade, poisdentro do jogo apresentava travamentos no momento de visibilidade na câmera do personagemcontrolável.

4.13.2 Movimentação do personagem jogável

As movimentações do personagem jogável estão inclusas nas assets padrões do Unity epodem ser importadas na criação do projeto ou posteriormente. Foram feitas algumas alteraçõesnas propriedades, como aceleração dos passos, altura do pulo e todos sendo controlados peloteclado; a visão que simula a movimentação da cabeça é feita pelo mouse.

Page 52: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

51

Figura 45: Rosto do monstro modelado no Mudbox

Fonte: Elaborada pelo Autor

Figura 46: Resultado final do monstro modelado no Mudbox

Fonte: Elaborada pelo Autor

4.13.3 Movimentação do personagem monstro e Inteligência Artificial

A movimentação do personagem monstro é definido por scripts em diferentes momentos;podem ser ativados por raycast em objetos e triggers. Um dos scripts é verificar o posicionamentoatual do personagem jogável e efetuar cálculos para criar um raio circular com o objetivo deteleportar o mostro nas proximidades. O outro script utiliza o algorítimo Pathfinding que vemintegrado no Unity para identificar o ambiente e os possíveis caminhos que o mostro deveperseguir.

4.14 Mecânica de Combate

Após concluído todas as movimentações, foram criadas as regras de combate entre os dospersonagens. O jogador não conseguirá derrotar o mostro, mas poderá morrer desde que a suasanidade alcance o valor 100. O script desenvolvido para o controle das ações do personagemjogável possui a função update, que é um método integrado no próprio Unity e qualquer códigoinserido dentro do mesmo é executado a cada quadro (ou frame) do jogo, ou seja, foi utilizado atécnica raycast em conjunto a função update para quando o personagem estiver olhando parao mostro a sua sanidade aumente (Figura 47), causando a morte instantânea do jogador caso

Page 53: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

52

alcançar o valor 100. Caso o jogador consiga escapar de um possível ataque do monstro, issoocorre quando existir uma pequena distância entre ambos ou não estiver mais olhando para omesmo, a sua sanidade voltará ao normal a cada update.

Figura 47: Jogador com sanidade alta e com risco de morte

Fonte: Elaborada pelo Autor

4.15 Músicas e Efeitos Sonoros

Para este projeto foi criada uma pasta Sound dentro do diretório principal no visualizadorProject, onde são arrastados todos os sons usados no jogo. O Unity suporta muitos tipos dearquivos de som e foram usados no formato mp3 e wav (WAVEform audio format).

Para cada som foi criado um Gameobject, incluído o componente Audio Source (Figura48) que manter as propriedades do som e arrastado-o até o lugar aonde deseja que o mesmo sejareproduzido. Sons de passos, abrir portas, ambientes e outros, foram adicionados na hierarquiado Player Controller na visualização Hierarchy, ou seja, sempre estará acompanhando o jogadorpara que sejam reproduzidos por algumas ações especificas, no mesmo volume frequente etambém podendo excluí-los quando necessário.

Quase todos os sons tiveram que ser editados no Audacity, principalmente para reduzir otempo de execução, remoção de ruído, cortar a faixa de áudio ou até desaceleração. Para sons depassos e repetitivos com pequenas diferenças no tempo, foi utilizado o FL Studio Demo que ébastante simples e não requer conhecimento profissional de edição.

Os sons de ambiente foram adquiridos no site www.freesound.org que é uma base dedados em áudio colaborativa de Creative Commons Licensed sounds que especialmente épara propósitos de áudio que não possuem copyright; muitos dos efeitos sonoros como chavearrastando, destrancando portas e etc. Foram gravados diretamente pelo microfone do Microsoft

Headset: LifeChat LX-3000.

Page 54: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

53

Figura 48: Objeto que simula som do mar

Fonte: Elaborada pelo Autor

4.16 Animações de objetos

O próprio Unity possui um editor de animações e alguns objetos dentro deste projetoforam editados com está ferramenta. A maioria das portas são movimentadas pressionando obotão esquerdo do mouse e outras arrastando-as para os lados, mas algumas são abertas oufechadas por animações criadas referente a este objeto, e acionadas pela distancia, clique domouse ou triggers. Algumas animações foram compartilhadas para o mesmo tipo de objeto.Foram criados várias animações para diversos objetos como caixas de madeira, travesseiro, pedra,monstro e botões de acionamento. As Figuras 49 e 50 apresentam a edição de animação da portainicial.

Figura 49: Animação da porta inicial

Fonte: Elaborada pelo Autor

4.17 Objetivos do jogo

O objetivo do jogo é explorar toda a construção abandonada e encontrar itens para acionarnovas ações para liberações de eventos bloqueados. É exibida a mensagem para retornar ao carroinicial após todas as tarefas serem concluídas com sucesso, quando ocorrer a aproximação comeste Objeto será finalizada a partida atual com vitória.

Page 55: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

54

Figura 50: Animação da porta inicial

Fonte: Elaborada pelo Autor

Para o jogo ficar mais desafiador, o personagem corre o risco de morte em determinadastrajetórias do caminho e quando visualizar o monstro inimigo a uma proximidade muito baixa.

4.18 Transições de telas e opções

Para este projeto as transições de telas ou Scenes são efetuadas entre o menu inicial(Figura 51), o jogo em si, que é o proposito principal, e a tela de vitória.

Figura 51: Tela Inicial do jogo

Fonte: Elaborada pelo Autor

A tela inicial é carregada automaticamente na execução do jogo e pode ser chamada natela de vitória; existe o botão de informações do jogo e o botão iniciar que é o responsável decarregar a tela do jogo. Dentro do jogo é possível abrir um menu de botões apertando a teclaEsc (Figura 52), não é uma transição de tela, ou seja, pode ser chamado a qualquer momento epossui apenas as opções de sair e reiniciar a partida.

O menu de vitoria é executado quando o jogador conclui com sucesso todas as tarefasdentro do jogo. A Figura 53 apresenta o código-fonte da transição da tela inicial para a tela dojogo.

Page 56: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

55

Figura 52: Menu aberto dentro do jogo

Fonte: Elaborada pelo Autor

Figura 53: Botão de chamada da tela de jogo

Fonte: Elaborada pelo Autor

4.19 Tutoriais e mensagens de ajuda

Na tela de carregamento do jogo existe o botão input que define os comandos de movi-mentação do personagem. Jogadores acostumados com jogos em primeira pessoa provavelmentenão terão problemas para se acostumarem. A cada movimento do personagem dentro do jogo,sempre são apresentadas algumas mensagens explicando ou alertando o que é necessário paraavançar nos eventos, desta forma o mesmo não ficará perdido dentro do ambiente.

4.20 Compilando o projeto

Obrigatoriamente para cada projeto criado no Unity é necessário a inclusão das cenasusadas na tela de configuração de compilação e escolher qual plataforma será destinada o jogoa ser compilado. Este projeto foi totalmente desenvolvido para ser jogado usando o mouse e oteclado, sucessivamente foi escolhido a compilação para PC com opção de Windows, MAC OS

e Linux. A Figura 54 apresenta as configurações da tela de compilação do jogo e a Figura 55apresenta a execução do jogo após a compilação.

4.21 Testes

Durante o desenvolvimento deste projeto várias etapas de testes foram efetuadas paraidentificar possíveis falhas no jogo, principalmente quando ocorriam alterações de códigos,sons ou demais objetos. Apenas o desenvolvedor do jogo têm acesso à aplicação e a execução

Page 57: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

56

Figura 54: Painel de propriedades da compilação

Fonte: Elaborada pelo Autor

Figura 55: Jogo compilado

Fonte: Elaborada pelo Autor

Page 58: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

57

diretamente na ferramenta de desenvolvimento. Na fase alfa, o jogo estará aberto para possíveistestadores.

4.22 Manutenção

Este jogo receberá atualizações e novas funcionalizadas em todos os aspectos. Desenvol-vimento de melhorias nos scripts dos principais controladores, com o objetivo de simplificar asmanutenções. Será criado um esqueleto para o personagem monstro, com o objetivo de tornar assuas movimentações mais realistas. Serão criados novos efeitos sonoros, animações de objetos,correções de bugs e melhorias na dificuldade do jogo.

4.23 Dificuldades do projeto

A maior dificuldade durante todo o estudo e criação deste trabalho estava na modelagemdos objetos no Maya, pois foi necessário muito tempo e dedicação para os detalhes, com oobjetivo de desenvolver um jogo mais atraente e divertido.

Page 59: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

58

5 CONCLUSÃO

De uma maneira geral, o projeto proposto em questão foi iniciado seguindo uma pequenaanálise sobre o crescimento mundial do mercado de jogos, pois estima-se que a receita daindustria de games ultrapasse 86 bilhões de dólares em 2016 (WARMAN, 2013). A fim decompreender todos os passos para o desenvolvimento de jogos profissionais, foi necessárioestudar algumas etapas dos processos em geral.

O estudo sobre a tecnologia Unity foi essencial para a realização deste trabalho, poisa simplicidade na codificação não requer conhecimentos específicos na área de games, desdeque o desenvolvedor tenha conhecimentos em programação. Há também redução no tempode desenvolvimento por prover a manipulação de praticamente todos os itens de uma formasimples e rápida. A versão grátis possui algumas limitações principalmente nos recursos deiluminação e efeitos, mesmo assim é possível a conversão do jogo para várias plataformas deconsoles, computadores pessoais e celulares. Com um estudo mais aprofundado na iluminação,pode-se diminuir o processamento em tempo real e uma visão mais realista das texturas quandocombinados com shaders avançados. O Unity dispõe de recursos padrões e prontos para seremutilizados e estão disponíveis pacotes para download em sua comunidade online.

Durante o desenvolvimento, o Unity apresentou limitações referente a modelagem deobjetos 3D. Várias ferramentas foram utilizadas em conjunto para o proposito final, como paraa modelagem da maioria dos objetos 3D, foi utilizado o Autodesk Maya; as texturas destesobjetos foram criadas e editadas na ferramenta Adobe Photoshop. Após a importação para oUnity, alguns destes itens foram trocados ou anexados a outros objetos 3D, o que possibilita amanipulação de matérias entre os objetos. A utilização das ferramentas Audacity e FL Studio

Demo na edição de áudio como um todo foram cruciais para a conclusão acelerada do projeto.Outro contratempo foi a modelagem do personagem inimigo do jogador, que inicialmente foicriado no Autodesk Maya. Como o resultado final ficou bastante abaixo do esperado, foi decididodesenvolver um novo modelo a partir da ferramenta Autodesk MudBox. Esta tem o objetivo detrabalhar nas modelagens de objetos, personagens e esculturas. Esta alternativa demandou novosestudos da modelagem 3D.

Conclui-se que o Unity é uma excelente ferramenta para desenvolvimento de jogosprofissionais para diversas plataformas do mercado, embora a necessidade do uso de outrasferramentas para o sucesso é visivelmente percebida no desenvolvimento de qualquer projeto.

Page 60: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

59

REFERÊNCIAS BIBLIOGRÁFICAS

2010 TOTAL CONSUMER SPEND ON ALL GAMES CONTENT IN THE U.S.ESTIMATED BETWEEN 15.4TO15.6 BILLION. NPD Group, n. 110113. Disponível em:<http://npd.com/lps/standard/EntertainmentTrends.html>. Acesso em: 04 abr. 2011. Nenhumacitação no texto.

3DMAGICMODELS. 3d Magic Models. 2014. Disponível em: <https://3dmagicmodels.com>.Acesso em: 08 jul. 2014. Nenhuma citação no texto.

ADL. ADL 3D Repository. 2014. Disponível em: <http://3dr.adlnet.gov/Public/Model.aspx?ContentObjectID=adl:640>. Acesso em: 11 ago. 2014. Nenhuma citação no texto.

AUTODESK. Autodesk mudbox. 2014. Disponível em: <http://www.autodesk.com.br/adsk/servlet/index?siteID=1003425&id=11485463>. Acesso em: 11 set. 2014. Citado na página 37.

AUTODESK. Software de animação computadorizada maya autodesk. 2014. Disponível em:<http://www.autodesk.com.br/products/maya/overview>. Acesso em: 19 ago. 2014. Citado napágina 36.

BERKEBILE, B. iTween for Unity by Bob Berkebile. 2014. Disponível em: <http://itween.pixelplacement.com/>. Acesso em: 10 mar. 2014. Nenhuma citação no texto.

BORGO. Pathfinder. 2014. Disponível em: <http://unity3dbrasil.com/showthread.php?tid=205>. Acesso em: 30 jun. 2014. Nenhuma citação no texto.

DISHFUNCTIONALDESIGNS. Dishfunctional Designs. 2014. Disponível em: <http://dishfunctionaldesigns.blogspot.com.br/2013/03/salvaged-repurposed-vintage-lockers.html>.Acesso em: 28 jul. 2014. Nenhuma citação no texto.

FFONTS. WoodenCasket. 2014. Disponível em: <http://pt.ffonts.net/WoodenCasket.font.download>. Acesso em: 22 jul. 2014. Nenhuma citação no texto.

GAME DEVELOPMENT. [S.l.], 2011. Disponível em: <http://create.msdn.com/en-US/education/gamedevelopment>. Acesso em: 28 fev. 2011. Nenhuma citação no texto.

HAINESM, E. DragObject. 2014. Disponível em: <http://wiki.unity3d.com/index.php?title=DragObject>. Acesso em: 11 set. 2014. Nenhuma citação no texto.

INTRODUCAO AO MICROSOFT XNA - Desenvolvendo Jogos em casa.Bruno Amaral. Disponível em: <http://brunoamaral.wordpress.com/2008/06/03/desenvolvendo-jogos-com-xna-microsoft-parte-1/>. Acesso em: 10 maio. 2011. Nenhumacitação no texto.

INTRODUCING FL Studio 11. Disponível em: <http://www.image-line.com/flstudio/l>. Acessoem: 19 ago. 2014. Nenhuma citação no texto.

KING, T. Texture King. 2014. Disponível em: <http://www.textureking.com/>. Acesso em: 20abr. 2014. Nenhuma citação no texto.

MANIACOSPORFILME. Blog dos Maníacos por Filme. 2011. Disponível em: <http://maniacosporfilme.files.wordpress.com/2011/08/amaldic3a7oados-pelo-demc3b4nio-3.png>.Acesso em: 07 jul. 2014. Nenhuma citação no texto.

Page 61: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

60

NAGAOKA, T. T. Desenvolvimento de um jogo integrado à rede social facebook.Universidade de São Paulo Instituto de matemática e estatística, 2013. Disponível em:<http://bcc.ime.usp.br/principal/tccs/2013/thiago/docs/Thiago_Nagaoka-Monografia.pdf>.Acesso em: 22 fev. 2014. Nenhuma citação no texto.

NEWS AND UPDATES. International Game Developers Association. Disponível em:<http://www.igda.org/>. Acesso em: 20 mai. 2014. Nenhuma citação no texto.

NOVAK, J. Desenvolvimento de Games. 2. ed. São Paulo: Cergage Learning, 2010. Citado 11vezes nas páginas 18, 20, 21, 22, 23, 24, 25, 26, 27, 28 e 29.

NVIDIA. Nvidia texture tools for adobe photoshop. Disponível em: <https://developer.nvidia.com/nvidia-texture-tools-adobe-photoshop>. Acesso em: 05 mar. 2014. Nenhuma citação notexto.

OPENGAMEART. Beds, mattresses. 2014. Disponível em: <http://opengameart.org/content/beds-mattresses>. Acesso em: 02 abr. 2014. Nenhuma citação no texto.

PALACE, T. CG Textures. 2014. Disponível em: <http://www.cgtextures.com/>. Acesso em:10 fev. 2014. Nenhuma citação no texto.

PALACE, T. Texture Palace - textures for photoshop free! 2014. Disponível em:<http://www.texturepalace.com/page/5/>. Acesso em: 02 fev. 2014. Nenhuma citação no texto.

PASTOR, T. D. Normal mapping com shaders. pontov, 2011. Disponível em: <http://www.pontov.com.br/site/xna/70-shaders/274-normal-mapping-com-shaders>. Acesso em: 10ago. 2014. Citado na página 46.

SKY. Scripts úteis para seus jogos na unity (java). 2012. Disponível em: <http://www.stageweb.com.br/forum/24-unity3d/24-scripts-uteis-para-seus-jogos-na-unity-java.html#axzz3AgcYTWAO>. Acesso em: 26 mai. 2014. Nenhuma citação no texto.

SMITH, W. Mayang’s Free Textures. 2014. Disponível em: <http://mayang.com/textures/>.Acesso em: 02 fev. 2014. Nenhuma citação no texto.

SOFTONIC. Adobe Photoshop 2014. 2014. Wiki do abnTeX2. Disponível em:<http://adobe-photoshop.softonic.com.br/>. Acesso em: 02 jun. 2014. Citado na página 38.

SPEEDTUTOR. Horror game series - Part 1: Creating a sanity meter in Unity3D.2014. Disponível em: <https://www.youtube.com/watch?v=ECd2a8c0Vco&list=UUwYuQIa9lgjvDiZryUVtFGw>. Acesso em: 25 mai. 2014. Nenhuma citação no texto.

SPEEDTUTOR. [Unity3D] Horror game series: Part 2B - Enemy Scare. 2014. Disponívelem: <https://www.youtube.com/watch?v=QtplzSEDu58&list=UUwYuQIa9lgjvDiZryUVtFGw>.Acesso em: 06 jun. 2014. Nenhuma citação no texto.

SPEEDTUTOR. [Unity3D] Horror game series: Part 4 - Fading Torch. 2014. Disponível em:<https://www.youtube.com/watch?v=IfJXttE3h04&list=UUwYuQIa9lgjvDiZryUVtFGw>.Acesso em: 02 jul. 2014. Nenhuma citação no texto.

STUDIOS, F. Rust. 2014. Disponível em: <hhttp://store.steampowered.com/app/252490/>.Acesso em: 02 maio. 2014. Citado na página 36.

TEAM, F. Freesound. 2014. Disponível em: <http://www.freesound.org/>. Acesso em: 05 ago.2014. Nenhuma citação no texto.

Page 62: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

61

TECHNOLOGIES, U. Asset Store. 2014. Disponível em: <https://www.assetstore.unity3d.com/en/>. Acesso em: 24 mai. 2014. Nenhuma citação no texto.

TECHNOLOGIES, U. Unity Community. 2014. Disponível em: <http://forum.unity3d.com>.Acesso em: 10 set. 2014. Nenhuma citação no texto.

TECHTUDO. Audacity 2.0.5. 2014. Disponível em: <http://www.techtudo.com.br/tudo-sobre/s/audacity.html>. Acesso em: 15 ago. 2014. Citado na página 38.

UNITY. Unity - game engine. 2014. Disponível em: <http://unity3d.com/>. Acesso em: 25 ago.2014. Citado 3 vezes nas páginas 30, 32 e 40.

VENTER, J. Rust sales top 1 million. Disponível em: <http://www.ign.com/articles/2014/02/10/rust-sales-top-1-million>. Acesso em: 04 maio. 2014. Nenhuma citação no texto.

WARMAN, P. Global games market grows to $86.1bn in 2016. Newzoo, 2013. Disponível em:<http://www.newzoo.com/press-releases/global-games-market-grows-to-86-1bn-in-2016/>.Acesso em: 22 abr. 2014. Citado 2 vezes nas páginas 15 e 58.

WATKINS, A. Criando Jogos Com Unity e Maya - Como Desenvolver Jogos 3D Divertidose de Sucesso. 1. ed. São Paulo: ED CAMPUS, 2012. Citado 4 vezes nas páginas 32, 33, 34 e 35.

WATKINS, A. Creating 3D Games with Unity & Maya. 2014. Disponível em:<http://www.creating3dgames.com/>. Acesso em: 02 Fev. 2014. Nenhuma citação no texto.

Page 63: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

ANEXOS

Page 64: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

63

ANEXO A – PRINCIPAIS SCRIPTS

Este projeto foi baseado no livro "Criando jogos com o Unity e Maya"de Adam Wat-

kins, ele incentiva o uso da linguagem JavaScrit para iniciar a aprendizagem da programação,e também muitas vezes é referenciado como UnityScript. Vários scripts foram escritos nodesenvolvimento deste jogo; entrem eles, RaycastFuncoesScript.js, GameController.js, Player-

Controller.js e o OpenSceneButtonsScript.js.

RaycastFuncoesScript.js: Responsável por criar o Raio Rayscast (Figura 43); este deter-mina qual objeto está a frente do personagem controlável e qual ação devera ser acionada. É oprincipal script do projeto, pois a maioria das interações estão incluídas em seu código. Tambémé mais leve para o processamento das ações em vez do uso de Triggers espalhados pelo jogo.

1 / / f un ca o Update do R a y c a s t2 f u n c t i o n Update ( ) {3

4 S c r ee n . showCursor = f a l s e ;5 d i s t a n c i a R a y c a s t = 100 ;6 d i s t a n c i a O b j e t o = 2 . 7 ;7

8 v a r h i t : R a y c a s t H i t ;9

10 i f ( P h y s i c s . R a y c a s t ( t r a n s f o r m . p o s i t i o n , t r a n s f o r m . forward , h i t ,d i s t a n c i a R a y c a s t ) ) { / / C r i a o r a i o a f r e n t e do j o g a d o r

11 Debug . DrawLine ( t r a n s f o r m . p o s i t i o n , h i t . p o i n t ) ; / / Desenha o r a i o p a r ao mecanismo de r a y c a s t i n g

12 / / Debug . Log ( " o Ob je to s e l e c i o n a d o eh " + h i t . c o l l i d e r . gameObject .name+ " d i s t a n c i a eh "+ h i t . d i s t a n c e ) ; / / E s c r e v e o nome do o b j e t o s o b r e or a i o que i n c i d e no c o n s o l e

13 }14 i f ( ! P h y s i c s . R a y c a s t ( t r a n s f o r m . p o s i t i o n , t r a n s f o r m . forward , h i t ,

d i s t a n c i a R a y c a s t ) ) / / melhora a p e r f o r m a n c e do s c r i p t15 r e t u r n ;16

17 P l a y e r C o n t r o l l e r . A t i v a C r o s s a h a i r s = f a l s e ;18

19 i f ( h i t . c o l l i d e r . gameObject . name == " g a l a o " && h i t . d i s t a n c e <=d i s t a n c i a O b j e t o && a b r i u P o r t a F i n a l && ! p e g o u G a l a o G a s o l i n a ) { / /v e r i f i c a r se o o b j e t o que i n c i d e tem o nome do o b j e t o d e s e j a d o

20 P l a y e r C o n t r o l l e r . A t i v a C r o s s a h a i r s = t r u e ; / / Aparece uma maozinha noc u r s o r do mouse

21 i f ( I n p u t . GetMouseButtonDown ( 0 ) ) { / / a p e r t a r o b o t a o do mouse22 p e g o u G a l a o G a s o l i n a = t r u e ;23 s u s t o G a l a o M o s t r o ( ) ;24 g u i T e x t O b j e c t . GetComponent ( E n t r a d a I n s t a l a c a o G U I T e x t S c r i p t ) .

p e g a r G a l a o ( ) ;25 D e s t r u i r O b j e t o s ( h i t . c o l l i d e r . gameObject ) ;

Page 65: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

64

26 }27 }28 . . .

GameController.js: responsável por controlar as mudanças de estado das variáveis napartida atual. Em sua função Update, quando o jogador apertar a tecla ESC, será aberto o menude opções e também quando a sua sanidade alcançar o valor 100, será chamada a função demorte dentro do próprio script, ou seja, aqui é a morte do personagem controlável.

1 v a r cam : GameObject ;2 v a r v o l t a r B u t t o n : GameObject ;3 v a r s a i J o g o B u t t o n : GameObject ;4 v a r s a i r P a r t i d a B u t t o n : GameObject ;5 v a r voceMorreuLogo : GameObject ;6 v a r e s t a M o r t o : b o o l e a n = f a l s e ;7 p r i v a t e v a r pauseMenu : b o o l e a n = f a l s e ;8

9 f u n c t i o n Awake ( ) {10 Time . t i m e S c a l e = 1 ;11 v o l t a r B u t t o n . S e t A c t i v e ( f a l s e ) ;12 s a i J o g o B u t t o n . S e t A c t i v e ( f a l s e ) ;13 s a i r P a r t i d a B u t t o n . S e t A c t i v e ( f a l s e ) ;14 voceMorreuLogo . S e t A c t i v e ( f a l s e ) ;15 }16 f u n c t i o n Update ( ) {17 i f ( I n p u t . GetKey ( KeyCode . Escape ) && ! pauseMenu && ! e s t a M o r t o ) {18 Escape ( ) ;19 } e l s e i f ( I n p u t . GetKey ( KeyCode . Escape ) && pauseMenu &&!e s t a M o r t o ) {20 Unpause ( ) ;21 }22 i f ( P l a y e r C o n t r o l l e r . c u r r e n t S a n i t y >= 100 .0 f ) {23 e s t a M o r t o = t r u e ;24 MenuDeMorte ( ) ;25 }26 }27 f u n c t i o n R e i n i c i a r P a r t i d a ( ) {28 S c r ee n . showCursor = f a l s e ;29 P l a y e r C o n t r o l l e r . c u r r e n t S a n i t y = 2 0 . 0 ;30 A p p l i c a t i o n . LoadLevel ( " ProjetoTCCgameCena " ) ;31 Time . t i m e S c a l e = 1 ;32 cam . GetComponent ( " C h a r a c t e r M o t o r " ) . e n a b l e d = t r u e ;33 cam . GetComponent ( " MouseLook " ) . e n a b l e d = t r u e ;34 cam . GetComponent ( " F P S I n p u t C o n t r o l l e r " ) . e n a b l e d = t r u e ;35 A n i m a c a o T r i g g e r S c r i p t . p o r t a F e c h a d a = f a l s e ;36 A n i m a c a o T r i g g e r S c r i p t . f i n a l i z a r S a l a S a n g r e n t a = f a l s e ;37 A n i m a c a o T r i g g e r S c r i p t . f i n a l i z a r F e c h a r S a l a S a n g r e n t a = f a l s e ;38 B a n h e i r o S c r i p t . j a A t i v o u M o n s t r o C o r r e d o r = t r u e ;

Page 66: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

65

39 M o n s t r o C o n t r o l l e r . A t ivaMons t ro = t r u e ;40 P o n t e T r i g g e r S c r i p t . j a A t i v o u M o n s t r o P o n t e = f a l s e ;41 P o n t e T r i g g e r S c r i p t . CairNaAaguar = f a l s e ;42 e s t a M o r t o = f a l s e ;43 }44 . . .

PlayerController.js: responsável por controlar a sanidade do jogador, movimentações dalanterna e está anexado no GameObject do personagem controlável em forma de componente dotipo script. Possui a função aumentarInsanidade que é chamada através do script RaycastFuncoes-Script.js, com o comando playerGame.GetComponent(PlayerController).aumentarInsanidade(),ou seja, está função é somente executada por ações decididas em outro script. Em sua funçãoUpdate é verificado o valor da variável currentSanity; a visão do jogador é prejudicada conformeeste valor ir aumentando, da mesma forma que a visão é melhorada caso este valor diminuir. Oscript GameController.js também monitora a variável currentSanity, para quando o seu valorchegar ao valor 100 e sucessivamente acionar a função de morte do jogador;

1

2 p r i v a t e v a r SomCl iqueLan te rna : GameObject ;3 p r i v a t e v a r l a n t e r n a J o g o : GameObject ;4 p r i v a t e v a r l a n t e r n a L i g a d a : b o o l e a n ;5 s t a t i c v a r c u r r e n t S a n i t y : f l o a t = 2 0 . 0 ;6 v a r maxSani ty : f l o a t = 1 0 0 . 0 ;7 v a r m i n S a n i t y : f l o a t = 0 . 0 ;8 v a r s c a r e P e r c : f l o a t = 2 0 . 0 ;9 p r i v a t e v a r E f e i t o S a n i d a d e : GameObject ;

10 v a r f eedbackM ons t ro : R e n d e r e r ;11 v a r B o t a o L a n t e r n a : GameObject ;12 s t a t i c v a r A t i v a C r o s s a h a i r s : b o o l e a n = f a l s e ;13 v a r C r o s s a h a i r s : GameObject ;14

15 f u n c t i o n Awake ( ) { / / Ca r regando16 SomCl iqueLan te rna = gameObject . F ind ( "Som−C l i q u e L a n t e r n a " ) ; / / a t r i b u i n d o

o b j e t o s nas v a r i a v e i s em vez de manualmente17 l a n t e r n a J o g o = gameObject . F ind ( " L a n t e r n a " ) ; / / a t r i b u i n d o o b j e t o s nas

v a r i a v e i s em vez de manualmente18 }19 f u n c t i o n S t a r t ( ) {20 l a n t e r n a L i g a d a = t r u e ;21 iTween . MoveBy ( Bo taoLan te rna , iTween . Hash ( " y " , −0.004 , " easeType " , "

l i n e a r " , " t ime " , 0 . 0 0 0 1 ) ) ;22 E f e i t o S a n i d a d e = GameObject . F ind ( " P l a y e r " ) ;23 }24 f u n c t i o n Update ( ) {25 i f ( A t i v a C r o s s a h a i r s ) {26 C r o s s a h a i r s . S e t A c t i v e ( t r u e ) ;

Page 67: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

66

27 } e l s e C r o s s a h a i r s . S e t A c t i v e ( f a l s e ) ;28 / / d e s l i g a e acende l a n t e r n a com animacao29 i f ( I n p u t . GetKeyUp ( KeyCode . F )&& l a n t e r n a L i g a d a ) {30 SomCl iqueLan te rna . a u d i o . P l ay ( ) ;31 l a n t e r n a J o g o . l i g h t . e n a b l e d = f a l s e ;32 l a n t e r n a L i g a d a = f a l s e ;33 iTween . MoveBy ( Bo taoLan te rna , iTween . Hash ( " y " , 0 . 0 0 4 , " easeType " , "

l i n e a r " , " t ime " , 0 . 0 0 0 1 ) ) ;34

35 } e l s e i f ( I n p u t . GetKeyUp ( KeyCode . F )&& ! l a n t e r n a L i g a d a ) {36 SomCl iqueLan te rna . a u d i o . P l ay ( ) ;37 l a n t e r n a J o g o . l i g h t . e n a b l e d = t r u e ;38 l a n t e r n a L i g a d a = t r u e ;39 iTween . MoveBy ( Bo taoLan te rna , iTween . Hash ( " y " , −0.004 , " easeType " , "

l i n e a r " , " t ime " , 0 . 0 0 0 1 ) ) ;40 }41 / / f im d e s l i g a e acende l a n t e r n a com animacao42 / / C o n t r o l e de s a n i d a d e43 i f ( c u r r e n t S a n i t y < 100)44 {45

46

47

48

49 c u r r e n t S a n i t y −= Time . d e l t a T i m e ;50 . . .

OpenSceneButtonsScript.js: responsável por controlar as ações da tela principal do jogo.Quando é clicado ou somente arrastar o mouse por cima de algum dos botões, o mesmo decidequal ação executar, desde clarear uma figura a carregamento do nível principal do jogo.

//atualiza posição do objeto

1 p r i v a t e v a r d a t a P a n e l B i o g r a p h y : GameObject ;2 p r i v a t e v a r d a t a P a n e l M i s s i o n : GameObject ;3 f u n c t i o n Awake ( ) { / / Ca r regando4 d a t a P a n e l B i o g r a p h y = gameObject . F ind ( " D a t a P a n e l _ B i o g r a p h y " ) ; / /

a t r i b u i n d o o b j e t o s nas v a r i a v e i s em vez de manualmente5 d a t a P a n e l M i s s i o n = gameObject . F ind ( " D a t a P a n e l _ M i s s i o n " ) ;6 }7

8

9 f u n c t i o n OnMouseEnter ( ) {10 g u i T e x t u r e . c o l o r = Colo r ( 1 , 1 , 1 ) ;11 }12 f u n c t i o n OnMouseExit ( ) { / / OnMouseExit P a s s a r o mouse13 g u i T e x t u r e . c o l o r = Colo r ( . 2 , . 2 , . 2 ) ; / / 0 . 2 no rg14 }

Page 68: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

67

15 f u n c t i o n OnMouseDown ( ) {16 i f ( name == " But ton_Bio " ) { / / nome do O bj e t o17 d a t a P a n e l B i o g r a p h y . g u i T e x t u r e . e n a b l e d = t r u e ;18 d a t a P a n e l M i s s i o n . g u i T e x t u r e . e n a b l e d = f a l s e ;19 }20 i f ( name == " B u t t o n _ M i s s i o n " ) {21 d a t a P a n e l B i o g r a p h y . g u i T e x t u r e . e n a b l e d = f a l s e ;22 d a t a P a n e l M i s s i o n . g u i T e x t u r e . e n a b l e d = t r u e ;23 }24 /* Pra i n i c i a r c o r r e t a m e n t e a chamada de t e l a , deve−se c o l o c a r na

c o n f i g u r a c o e s25 de c o m p l i c a c a o do p r o j e t o . f i l e > b u i l d S e t t i n g s * /26 i f ( name == " But ton_Beg in " ) {27 A p p l i c a t i o n . LoadLevel ( " ProjetoTCCgameCena " ) ;28 }29 }30 . . .

Page 69: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

68

ANEXO B – SCRIPT COMPLETO DE CONTROLE DAS AÇÕES DO JOGADOR

1

2 p r i v a t e var SomCl iqueLan te rna : GameObject ;3 p r i v a t e var l a n t e r n a J o g o : GameObject ;4 p r i v a t e var l a n t e r n a L i g a d a : boolean ;5 //variaveis de sanidade

6 s t a t i c var c u r r e n t S a n i t y : f l o a t = 2 0 . 0 ;7 var maxSani ty : f l o a t = 1 0 0 . 0 ;8 var m i n S a n i t y : f l o a t = 0 . 0 ;9 var s c a r e P e r c : f l o a t = 2 0 . 0 ;

10 p r i v a t e var E f e i t o S a n i d a d e : GameObject ;11 var f e ed backMons t ro : Renderer ;12

13 var B o t a o L a n t e r n a : GameObject ;14

15 s t a t i c var A t i v a C r o s s a h a i r s : boolean = f a l s e ;16 var C r o s s a h a i r s : GameObject ;17

18 f u n c t i o n Awake ( ) {//Carregando19 SomCl iqueLan te rna = gameObject . F ind ( "Som-CliqueLanterna" ) ; //atribuindo

objetos nas variaveis em vez de manualmente

20 l a n t e r n a J o g o = gameObject . F ind ( "Lanterna" ) ; //atribuindo objetos nas

variaveis em vez de manualmente

21 }22 f u n c t i o n S t a r t ( ) {23 l a n t e r n a L i g a d a = t rue ;24 iTween . MoveBy ( Bo taoLan te rna , iTween . Hash ( "y" , −0.004 ,"easeType" , "linear"

,"time" , 0 . 0 0 0 1 ) ) ;25 E f e i t o S a n i d a d e = GameObject . F ind ( "Player" ) ;26 }27

28 f u n c t i o n Update ( ) {29

30 i f ( A t i v a C r o s s a h a i r s ) {31 C r o s s a h a i r s . S e t A c t i v e ( t rue ) ;32 } e l s e C r o s s a h a i r s . S e t A c t i v e ( f a l s e ) ;33 //Controle de sanidade

34 i f ( c u r r e n t S a n i t y < 100)35 {36 c u r r e n t S a n i t y −= Time . d e l t a T i m e ;37 }38

39 i f ( c u r r e n t S a n i t y >= 100)40 {41 c u r r e n t S a n i t y = maxSani ty ;42 SetFeedBackAlpha ( 1 . 0 f ) ;

Page 70: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

69

43 }44

45 i f ( c u r r e n t S a n i t y <= 0)46 {47 c u r r e n t S a n i t y = m i n S a n i t y ;48 }49

50 i f ( P o n t e T r i g g e r S c r i p t . CairNaAaguar ) //Matando ao cair na agua da ponte

51 {52 c u r r e n t S a n i t y = maxSani ty ;53 }54 //Controle visual da Sanidade

55 i f ( c u r r e n t S a n i t y < 65)56 {57 SetFeedBackAlpha ( 0 . 0 f ) ;58 }59 i f ( c u r r e n t S a n i t y >= 65)60 {61 SetFeedBackAlpha ( 0 . 2 f ) ;62 }63

64 i f ( c u r r e n t S a n i t y >= 68)65 {66 SetFeedBackAlpha ( 0 . 3 f ) ;67 }68

69 i f ( c u r r e n t S a n i t y >= 70)70 {71 SetFeedBackAlpha ( 0 . 3 5 f ) ;72 }73

74 i f ( c u r r e n t S a n i t y >= 80)75 {76 SetFeedBackAlpha ( 0 . 4 0 f ) ;77 }78

79 i f ( c u r r e n t S a n i t y >= 90)80 {81 SetFeedBackAlpha ( 0 . 4 5 f ) ;82 }83 i f ( c u r r e n t S a n i t y >= 92)84 {85 SetFeedBackAlpha ( 0 . 5 f ) ;86 }87

88 //fim sanidade

89

90 //desliga e acende lanterna com animacao

Page 71: Tcc - Desenvolvimento de jogos eletrônicos utilizando a tecnologia Unity - Luis Henrique Ferreira

70

91 i f ( I n p u t . GetKeyUp ( KeyCode . F )&& l a n t e r n a L i g a d a ) {92 SomCl iqueLan te rna . a u d i o . P l ay ( ) ;93 l a n t e r n a J o g o . l i g h t . e n a b l e d = f a l s e ;94 l a n t e r n a L i g a d a = f a l s e ;95 iTween . MoveBy ( Bo taoLan te rna , iTween . Hash ( "y" , 0 . 0 0 4 , "easeType" , "linear

" ,"time" , 0 . 0 0 0 1 ) ) ;96

97 } e l s e i f ( I n p u t . GetKeyUp ( KeyCode . F )&& ! l a n t e r n a L i g a d a ) {98 SomCl iqueLan te rna . a u d i o . P l ay ( ) ;99 l a n t e r n a J o g o . l i g h t . e n a b l e d = t rue ;

100 l a n t e r n a L i g a d a = t rue ;101 iTween . MoveBy ( Bo taoLan te rna , iTween . Hash ( "y" , −0.004 , "easeType" , "

linear" ,"time" , 0 . 0 0 0 1 ) ) ;102 }103 // fim desliga e acende lanterna com animacao

104

105 }106 //funcao de visualizacao da sanidade.

107 f u n c t i o n OnGUI ( )108 {109 GUI . Box ( Rec t ( 5 , 5 , 55 , 25) , "Sanidade" ) ;110 GUI . Box ( Rec t ( 6 5 , 5 , 55 , 25) , c u r r e n t S a n i t y . T o S t r i n g ( "0" ) + "/" +

maxSani ty ) ;111 }112

113 f u n c t i o n a u m e n t a r I n s a n i d a d e ( ) {114 c u r r e n t S a n i t y += s c a r e P e r c * Time . d e l t a T i m e ;115 }116 f u n c t i o n SetFeedBackAlpha ( a l p h a : f l o a t ) {117

118 var c u r r e n t A l p h a : Co lo r = fe edbackM ons t ro . m a t e r i a l . c o l o r ;119 c u r r e n t A l p h a . a = a l p h a ;120 f e ed backMons t ro . m a t e r i a l . c o l o r = c u r r e n t A l p h a ;121 }

PlayerController.js