SISTEMAS DE INFORMAO
ARARAQUARA
2015
Trabalho de Concluso de Curso (TCC) apresentado ao Departamento de Cincias da Administrao e Tecnologia, do Centro Universitrio
de Araraquara - UNIARA, como parte dos requisitos para obteno do ttulo de Bacharel em
Sistemas de Informao.
Orientador: Prof. Me. Saulo Svio Leite Santos
Araraquara
2015
TERMO DE AUTENTICIDADE
Eu, LUIS HENRIQUE FERREIRA, RG: XX.XXX.XXX-X, aluno regularmente matriculado no Curso de SISTEMAS DE INFORMAO do Centro Universitrio de Araraquara
- UNIARA, declaro ser o autor do texto apresentado como Trabalho de Concluso de Curso TCC com o ttulo Desenvolvimento de Jogos Eletrnicos utilizando a tecnologia Unity.
Afirmo, tambm, ter seguido as normas da ABNT referentes s citaes textuais que
utilizei e das quais eu no sou autor, dessa forma, creditando a autoria a seus verdadeiros autores
(Lei n 9.610, 19/02/1998).
Atravs dessa declarao dou cincia de minha responsabilidade sobre o texto apresentado
e assumo qualquer responsabilidade por eventuais problemas legais, no tocante aos direitos
autorais e originalidade do texto.
Assinatura:
Para disponibilizao online foram removidos dados pessoais do autor no termo de autenticidade
e a folha de aprovao.
Contato para informaes:
E-mail Principal: tecnoluisao@hotmail.com. Secundrio: luisaohf@gmail.com
Linkedin: https://br.linkedin.com/in/luishenriqueferreira
AGRADECIMENTOS
Primeiramente agradeo Deus por mais um dia de vida, sade e alegria. Os agradecimentos principais so direcionados minha me, ao meu pai por sempre estarem lembrando
que tenho um trabalho a terminar, a Maynara Mercaldi, ao Eric Delamodarme e ao Saulo por
contribuir na produo deste trabalho acadmico.
RESUMO
O presente trabalho tem como objetivo demonstrar a eficincia da tecnologia Unity como um
instrumento importante no desenvolvimento de jogos profissionais, atraentes e sofisticados. A
utilizao desta diminui a necessidade de cdigos complexos, sendo possvel obter resultados
satisfatrios em curto prazo. Foi realizada uma breve anlise do mercado atual no entretenimento
dos games e a sua expectativa para o futuro. Em seguida, so destacados e discutidos os
principais processos no desenvolvimento de jogos, desde o planejamento da concepo inicial
ao lanamento do produto final. Sero apresentadas aqui a tecnologia Unity e as diversas
ferramentas utilizadas em conjunto neste trabalho, destacando-se suas funes para a modelagem
3D, tratamento de imagem, gravao e edio de udio. Em seguida, sero demonstradas as
decises e metodologias tcnicas utilizadas na modelagem dos objetos, prottipo, texturizao
avanada, renderizao, iluminao, personagens, mecnica de combate, animaes, efeitos
sonoros e etc. Por fim, so apresentadas algumas qualidades encontradas na pratica deste estudo,
assim como as limitaes do uso da tecnologia e as solues na criao de jogos mais atraentes.
Palavras-chave: Unity. games. 3D. jogos. desenvolvimento. entretenimento. metodologia.
ABSTRACT
The objective of the present work is to demonstrate the efficiency of technology Unity as an
important 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 results
in the short term. There was a brief analysis of the current market in entertainment of games
and their expectations for the future. Then are highlighted and discussed the main processes
in the developments of games, from the planning of the initial design for the launch of the
final product. Will be presented here, technology Unity and the various tools used together
in this work, highlighting its functions for the 3D modeling, image processing, recording and
editing of audio. Then will be demonstrated the decisions methodologies and techniques used in
the modeling of objects, prototype, advanced texturing, rendering, lighting, characters, combat
mechanics, animations, sound effects, etc. Finally, there are some qualities found in practice this
study, as well as the limitations of the use of technology and solutions in the creation of games
more attractive.
Key-words: Unity. games. 3D. games. development. entertainment. methodology.
LISTA DE ILUSTRAES
Figura 1
Figura 2
Figura 3
Figura 4
Figura 5
Figura 6
Figura 7
Figura 8
Figura 9
Figura 10
Figura 11
Figura 12
Figura 13
Figura 14
Figura 15
Figura 16
Figura 17
Figura 18
Figura 19
Figura 20
Figura 21
Figura 22
Figura 23
Figura 24
Figura 25
Figura 26
Figura 27
Figura 28
Figura 29
Figura 30
Figura 31
Figura 32
Figura 33
Figura 34
Figura 35
Figura 36
Figura 37
19
20
20
21
22
23
23
24
25
26
26
27
28
28
29
29
30
34
36
37
37
38
39
39
40
41
41
42
42
43
43
44
44
45
45
46
46
Figura 38
Figura 39
Figura 40
Figura 41
Figura 42
Figura 43
Figura 44
Figura 45
Figura 46
Figura 47
Figura 48
Figura 49
Figura 50
Figura 51
Figura 52
Figura 53
Figura 54
Figura 55
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
47
47
48
48
49
50
50
51
51
52
53
53
54
54
55
55
56
56
FPS
First-Person Shooters
RPG
Role-Playing Games
MMORPG
NPC
Non-Player Characters
MOD
Modification
3D
3a Dimension
MP3
UV
Unpleasant Visual
FBX
Filmbox
ESC
Escape
PC
Personal Computer
MAC OS
SUMRIO
1
1.1
1.2
1.3
1.4
1.5
INTRODUO . . . . . . . . .
Contextualizao . . . . . . . . .
Justificativa . . . . . . . . . . . .
Objetivos . . . . . . . . . . . . .
Problema e Hiptese da Pesquisa
Metodologia . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
15
15
16
16
16
2
2.1
2.2
2.3
2.3.1
2.3.2
2.3.3
2.3.4
2.3.5
2.4
2.5
2.6
2.7
2.8
2.9
2.10
2.11
2.12
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
18
18
18
18
19
20
21
21
22
22
24
25
25
26
27
27
28
29
3
3.1
3.2
3.2.1
3.2.1.1
3.2.1.2
3.2.1.3
3.2.1.4
3.2.1.5
3.2.1.6
3.2.2
3.2.3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
30
30
30
30
30
31
31
31
31
31
32
32
3.2.4
3.2.5
3.2.6
3.2.7
3.2.8
3.2.9
3.2.10
3.2.11
3.3
3.3.1
3.3.2
3.3.3
3.3.4
3.3.5
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
32
33
33
33
34
35
35
36
36
36
37
38
38
39
4
4.1
4.2
4.3
4.4
4.5
4.5.1
4.5.1.1
4.5.1.2
4.5.2
4.6
4.7
4.8
4.8.1
4.9
4.10
4.11
4.12
4.13
4.13.1
4.13.2
4.13.3
4.14
4.15
4.16
DESENVOLVIMENTO . . . . . . . . . . . . . . . . . . . . . .
Mundo do jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modelagem dos Cenrios . . . . . . . . . . . . . . . . . . . . . .
Criando um Prottipo . . . . . . . . . . . . . . . . . . . . . . . .
Modelagem dos Objetos . . . . . . . . . . . . . . . . . . . . . . .
Insero de texturas . . . . . . . . . . . . . . . . . . . . . . . . .
Mapeamentos UV . . . . . . . . . . . . . . . . . . . . . . . . . .
Automatic Mapping . . . . . . . . . . . . . . . . . . . . . . . . .
Mapeamento Manual . . . . . . . . . . . . . . . . . . . . . . . .
Edio de materiais e texturas . . . . . . . . . . . . . . . . . . .
Criao de Terreno . . . . . . . . . . . . . . . . . . . . . . . . . .
Efeitos de renderizao . . . . . . . . . . . . . . . . . . . . . . .
Assets e modelos Importados . . . . . . . . . . . . . . . . . . . .
Partculas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Shaders avanados e iluminao . . . . . . . . . . . . . . . . . . .
Roteiro de eventos . . . . . . . . . . . . . . . . . . . . . . . . . .
Coliso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gatilhos e aes . . . . . . . . . . . . . . . . . . . . . . . . . . .
Personagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modelagem dos Personagens . . . . . . . . . . . . . . . . . . .
Movimentao do personagem jogvel . . . . . . . . . . . . . .
Movimentao do personagem monstro e Inteligncia Artificial
Mecnica de Combate . . . . . . . . . . . . . . . . . . . . . . . .
Msicas e Efeitos Sonoros . . . . . . . . . . . . . . . . . . . . . .
Animaes de objetos . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
40
40
40
40
41
41
42
42
43
43
44
45
45
46
46
48
48
49
49
49
50
51
51
52
53
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.17
4.18
4.19
4.20
4.21
4.22
4.23
Objetivos do jogo . . . . . . .
Transies de telas e opes . .
Tutoriais e mensagens de ajuda
Compilando o projeto . . . . .
Testes . . . . . . . . . . . . . .
Manuteno . . . . . . . . . .
Dificuldades do projeto . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
53
54
55
55
55
57
57
CONCLUSO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
REFERNCIAS BIBLIOGRFICAS . . . . . . . . . . . . . . . . . . .
59
ANEXOS
62
63
68
15
1 INTRODUO
1.1
Contextualizao
Justificativa
O interesse principal deste trabalho desenvolver um jogo eletrnico utilizando a tecnologia Unity tendo como metas: simplificar a codificao para o programador, mesmo que
no trabalhe na rea de games; reduzir tempo no desenvolvimento do game pelo motivo de
vrias funes estarem previamente implementadas e custos, por existir a opo da ferramenta
na verso grtis.
Inclui classes de bibliotecas especficas para o desenvolvimento de jogos permitindo reuso
de cdigo e materiais para plataformas diferentes. O Unity engine simplifica elementos grficos,
udio, entrada, armazenamento, loops de desenho e modelagem. Tambm na sua comunidade
online so disponibilizados muitas documentaes, materiais, modelos e texturas disponveis
gratuitamente.
16
1.3
Objetivos
Metodologia
A metodologia utilizada na execuo deste trabalho apresentou basicamente as seguintes
etapas:
Foram utilizadas pesquisas bibliogrfica em revistas, artigos cientficos, Internet e livros
relacionados ao tema.
Participao em fruns de discusses no intuito de abstrair informaes para as tcnicas
envolvidas na estrutura dos jogos.
Primeiro captulo apresentou como so os processos de desenvolvimento de jogos desde
planejamento, personagem, ambiente, produo e lanamento.
O captulo seguinte apresentou as ferramentas utilizadas no desenvolvimento deste trabalho.
Foi utilizado o Unity para a criao de animaes, vegetao, scripts e demais itens.
Foi utilizado o programa Autodesk Maya para os desenvolvimentos de animaes, parte
do cenrio, modelos e personagens 3D.
Foi utilizado o Autodesk Mudbox para o desenvolvimento e detalhamento mais profissional
do personagem.
Foi utilizado o editor de imagens Photoshop para editar as texturas dos objetos, cenrios e
detalhes grficos dos personagens.
17
Foi utilizado o programa de edio de udio, Audacity para gravaes de sons da atmosfera
e efeitos especiais do jogo.
Foi utilizado o FL Studio Demo para as edies de loops e msicas que foram utilizados
na produo, pois o mesmo um estdio musical virtual.
O captulo seguinte abordou detalhamento do projeto ScareSupreme, desenvolvido em
paralelo a este trabalho.
18
2.1
Desenvolvimento de conceito
2.2
Pr-produo
2.3
Definindo o gnero
19
Gnero Ao
O principal objetivo dos games do gnero de ao destruir seus inimigos, evitando ser
destrudo. Geralmente no possuem muita histria ou a necessidade de muito raciocnio, pois se
aprofunda mais na velocidade dos movimentos e na adrenalina das sequncias.
Os subgneros dos games de ao sero brevemente definidos a seguir:
Games de plataforma so jogos com personagens caractersticos que geralmente saltam
sobre plataformas recolhendo itens e destruindo inimigos.
Games de tiro so jogos que se concentra na disputa entre um jogador contra vrios
personagens, e geralmente utilizam-se armas de fogo nos jogos. Nos jogos de tiro em
primeira pessoa (FPS), o jogador visualiza somente a arma do personagem com a sensao
de estar dentro do prprio jogo (Figura 1). Jogos em terceira pessoa permitem ter a viso
do 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 ao com
itens e aspectos de aventura em uma ambientao de terror.
Games de corrida tambm utilizam a perspectiva de primeira ou terceira pessoa. O cenrio
sempre abrange em controlar um veculo sendo uma moto ou um carro. Existem vrias
modalidades neste gnero, como disputas online, tempo de volta nas pistas e at percorrer
uma cidade inteira a procura de desafios.
Games de luta so jogos na qual personagens distintos so controlados por jogadores ou
pela inteligncia artificial do prprio jogo, com o objetivo de atacar o seu adversrio por
meios de movimentos combinados.
20
2.3.2
Gnero Aventura
21
2.3.3
Gnero RPG
Os games de representao de papis (RPG) originam-se da tradio iniciada
na dcada de 1970 pela srie de jogos de RPG Dungeons & Dragons, que eram
jogados com papel e lpis. Neles, os jogadores assumiam papis de guerreiros,
magos, sacerdotes, elfos ou ladres e exploram calabouos, matavam monstros
(como drages e ogros) e coletavam tesouros. Um dos jogadores, o Mestre
dos Calabouos (mais tarde designado Mestre do Jogo) configurava o mundo
do jogo e assumia os papis de outros personagens (no jogadores) (NOVAK,
2010, p. 103).
Os games de RPG digitais no possuem um mestre, mais todo o aspecto do antigo RPG
geralmente est diretamente relacionado, que incluem mundo de fantasias, heris e monstros. Os
personagens podem fazer praticamente o que quiserem nesta modalidade, como criar alimentos,
enfrentar drages e diversas aes. A Figura 4 apresenta o jogo de RPG Dungeon Siege 2.
Gnero Simulao
22
2.3.5
Gnero Estratgia
Criando a histria
23
por dentro da floresta. Por coincidncia, o combustvel do seu carro acabou prximo a uma
construo antiga e abandonada. Acreditando ter a resposta para todos os acontecimentos e
irritado de tantos remdios que tomou para manter-se acordado, ele ir verificar a entrada da
construo em busca de combustvel ou at mesmo um abrigo para est noite chuvosa. A Figura
7 apresenta uma parte da histria do jogo de Max Paine.
24
2.5
Criando a Identidade
25
2.6
Criando o Mundo
No h muitos problemas de design especficos, contanto que voc se limite
a formula do game de representao de papis (RPG); lembre-se de espalhar
bem suas cenouras pelo nvel(aqui est um item exclusivo, aqui est um detalhe do mistrio da histria a ser solucionado, aqui est um lugar em que o
jogador pode obter uma vista panormica do nvel); finalmente, se possvel,
tente proporcionar aos jogadores diferente opes para perseguir seus objetivos dependendo de como construram seus personagens (por exemplo, ladres
que podem entrar furtivamente em situaes, diplomatas que podem sair de
situaes com uma argumentao convincente ou pistoleiros que podem matar
tudo o que encontram pela frente at o final). Um game deve apelar para o ego
dos jogadores, e no h melhor maneira de fazer isso do que oferecer nveis e
situaes que lhe permitam exercitar as habilidade e recursos em que gastaram
mais pontos (NOVAK, 2010, p. 224).
Existem muitas ferramentas para o desenvolvimento de mundos e a maioria dos fabricantes as disponibilizam gratuitamente, com o intuito de aumentar o nmero de modificaes
(MOD) em seus jogos lanados. Para o projeto ScareSupreme, o mundo foi desenvolvido com
vrias ferramentas e limitado atravs da programao do Unity, ou seja, o personagem no
conseguir navegar pelo mundo da forma que quiser e depender de certas aes para prosseguir
pelo 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 qualidade
impactante em termos de msicas e efeitos sonoros, pois, em cada cena percorrida, o jogo se
torna mais assustador, aumentando o envolvimento do jogador.
26
2.8
Desenvolvendo o Prottipo
27
2.9
Produo
2.10
Fase Alfa
A fase alfa (Figura 14) especialmente voltada para o acabamento e ajustes finais do
jogo, como acabamentos artsticos, musicais, efeitos de som ou remover alguns detalhes que
no sejam necessrios. quando a interface do usurio est completa, ou seja, o jogo pode ser
jogado do comeo ao fim, passando por cada etapa a procura de erros, falhas e desempenho. Esta
fase pode incluir testadores externos que no participaram de nenhuma das etapas anteriores.
28
2.11
Fase Beta
A fase beta (Figura 15) da nfase na correo de problemas quando todos os matrias do
jogo estejam terminados e a sua fase de produo esteja encerrada. A maioria dos fabricantes
utilizam seus prprios testadores ou recrutam jogadores online para serem testadores betas dos
jogos, na funo de encontrar o mximo de defeitos, erros e ajustes de desempenhos antes
que sejam publicados e comercializados. Algumas das principais melhorias durante a fase beta
incluem o desenvolvimento da verso final de cdigo, contedo e manual do jogo.
29
2.12
Fase Ouro
Aps concluir a fase Beta, inicia-se a fase ouro (Figura 16). Nesta fase o produto e as
correes de erros foram avaliadas; enviada uma cpia do jogo para a fbrica e pode durar
semanas a sua produo em mdias fsicas, manuais e caixas. Este formato est perdendo espao
para os jogos comercializados diretamente pela Internet, pois so disponibilizados atravs de
pagamentos online e posteriormente os usurios podem efetuar o download.
30
Unity
Para estdios e desenvolvedores independentes, o democrtico ecossistema da
Unity derruba barreiras de tempo e custo para criar jogos exclusivamente lindos.
Eles esto usando o Unity para viver do que adoram fazer - desenvolver jogos
que cativam e encantam os jogadores em qualquer plataforma (UNITY, 2014).
Estrutura do Unity
Interface
A interface Unity (Figura 17) simples e de fcil aprendizagem para novos utilizadores.
Em apenas um curto tempo de uso possvel conhecer as interaes entre os visualizadores, que
so as partes da interface.
3.2.1.1
Project
um navegador que lista todos os itens e diretrios includos no projeto atual do Unity,
possibilitando importar novos itens pelo menu ou simplesmente arrastando-os para a rea de
31
trabalho.
3.2.1.2
Inspector
Hierarchy
O painel Hierarchy lista todos os objetos que esto sendo usados na cena atual. Para
incluir novos recursos neste painel, pode-se usar o menu de Create ou arrast-los a partir do painel
Project.A organizao dos objetos so definidos pela hierarquia, ou seja, podem existir objetos
que so filhos de outros, desta forma, ao arrastar um objeto em cima de outro, automaticamente
o mesmo se tornar filho, assumindo a movimentaes e outras funcionalidades do pai.
3.2.1.4
Scene
Compe a cena do jogo e onde tudo realmente construdo. o local aonde todos os
GameObjects e demais itens so inseridos. A manipulao intuitiva e baseada no conceito drag
and drop (arrastar e largar), ou seja, selecionar o GameObject com o mouse e arrasta-lo para o
lugar desejado.
3.2.1.5
Game
Esta paleta apresenta o resultado final do jogo, permitindo que o desenvolvedor avalie e
altere as propriedades dos GamesObjets em tempo de execuo. No Layout padro do Unity,
este visualizador est atrs de outro visualizador de nome Scene. possvel enxergar-lo quando
selecionado em sua aba na interface principal e quando iniciado o jogo pelo boto (Start) da
barra de ferramentas, automaticamente o visualizar Game sobrepem qualquer outro que esteja
em destaque anteriormente.
3.2.1.6
As caractersticas da Barra de Ferramentas do Unity definem-se em facilidade de aprendizagem, agilidade nas alteraes e testes de desenvolvimento. Os botes do lado esquerdo so
para manipulaes dos objetos, como alterar o tamanho, rotao e posio. Os botes do meio
so controles de execuo do jogo e para testar as suas etapas, alternando do ambiente de criao
para o ambiente do jogo. Referente aos botes da direita, um para desabilitar ou habilitar as
32
camadas no painel Scene, ou seja, na edio do jogo possvel desabilitar a camada de gua e a
mesma ficar invisvel. O outro boto manipula o layout de visualizao dos painel, h vrios
tipos 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 movimento e define a aparncia. Luzes, malhas, efeitos especiais, udio, cmeras
e emissores de partculas so exemplos de Componentes. Por sua vez, cada
Componente tem um conjunto prprio de propriedades ajustveis, alcance e
intensidade para luz (UNITY, 2014).
Praticamente quase todos os itens do cenrio so GameObjects, que podem ter vrios
tipos de componentes associados ao mesmo tempo, como, por exemplo, um script para alterar
seus comportamentos em tempo real no jogo.
3.2.3
Prefabs
Uma instncia, na maior parte do mundo 3D, a ideia de exibir um objeto
mltiplas vezes em vez de ter mltiplas copias do objeto. Em aplicativos como o
Maya, isso significa que, se uma alterao foi feita no objeto original, a mudana
ocorre automaticamente em cada instancia do objeto. No Unity, essa mesma
ideia est presente, mas usa uma nomenclatura ligeiramente diferente. No Unity,
a ideia de exibir um objeto vrias vezes e fazer essas verses adicionalmente
exibidas herdarem as alteraes chama-se prefab (WATKINS, 2012, p. 403).
33
para serem utilizadas. Os Assets so itens prontos para serem utilizados tais como modelos de
objetos, modelos de personagens 3D, kits de efeitos de sons, scripts e texturas. A Asset Store a
centralizao online destes pacotes da comunidade Unity.
3.2.5
Terrenos
Os terrenos podem ser muito interessantes na situao certa. Um Terrain
um GameObject criado no Unity e pode conter mapas de textura e objetos
inteligentes", como arvores e grama. Por inteligente"quero dizer que eles criam
algumas coisas realmente sofisticadas, como mudar o nvel de detalhes a medida
que o jogador se aproxima ou se afasta deles (WATKINS, 2012, p. 121).
O Unity possui uma completa palheta de editar terrenos em suas ferramentas, com
flexibilidade e eficincia na modelagem 3D de paisagens. possvel projetar superfcies planas e
irregulares com diversos tipos de pinceis, adicionar rochas, rvores, gramas, e ainda permite a
personalizao das distncias e quantidades a serem desenhadas pelo pincel.
3.2.6
Linguagens de desenvolvimento
O Unity usa trs linguagens de script: JavaScript(UnityScript), C# e Boo. Essas
trs linguagens de script so maneiras muito diversas de acessar a mesma
funcionalidade bsica do mecanismo do jogo; trs ferramentas com o mesmo
objetivo (WATKINS, 2012, p. 334).
Para este projeto foi utilizada a linguagem JavaScript(UnityScript) por existir diversas
documentaes na comunidade Unity, e tambm mais simples para iniciantes no desenvolvimento do games. Para usurios mais experientes recomendado utilizar o C#, pois este tem
acesso de baixo nvel no sistema e no prprio Unity.
Constantemente citado neste trabalho, os Scripts "[...]contm comandos (instrues),
organizados em blocos e funes[...] Uma coleo de comandos chamada de blocos do
cdigo.[...]Os comandos podem estar em vrios locais dentro de um script, mas geralmente os
blocos de comandos so agrupados em uma funo "(WATKINS, 2012, p. 337, grifo do autor).
3.2.7
Animao
Pense nas animaes como componentes de GameObjects. Sempre que um
objeto deve ser animado no Unity, o Unity cria um arquivo separada editavel(com um rotulo .anim) que armazenar as informaes. O que isso significa
que a animao pode ser usada repetidas vezes em outros objetos(o que
um poderoso recurso por s s). Isso tambm significa que h um novo recurso
armazenado na pasta recursos.(WATKINS, 2012, p. 320)
Existem vrias ferramentas para animao no mercado, mas o prprio Unity possui um
painel para editar animaes de um objeto ou vrios objetos desde que pertenam na hierarquia
34
de pai e filho no painel Hierarchy. O Unity permite importar objetos com animaes includas
no mesmo e elas podem ser criadas em outras ferramentas 3D, como Maya, 3DStudio, Blender e
etc.
3.2.8
Renderizao
A teoria 3D possui uma vasta quantidade de informaes e detalhes tcnicos, mas para
este trabalho sero citadas as definies mas relevantes para os jogos.
Formas tridimensionais em um aplicativo 3D so criadas quando as colees de
polgonos so agrupadas. Pense nos polgonos como folhas de metal inflexveis.
As folhas de metal podem dobrar onde se conectam, mas o polgono em si
no pode. Isso significa que, quando mais polgonos esto presentes, em mais
lugares a malha pode dobrar, portanto, mais complexa a forma pode ser.[...]O
desenho dos polgonos, texturas e iluminao associados a eles chamado de
renderizao (WATKINS, 2012, p. 11/12).
Adam Watkins tambm explica como os jogos so renderizados na categoria via hardware.
Os jogos entram nessa categoria porque a placa de vdeo renderiza os polgonos
dentro do espao digital para representar o espao 3D. O hardware desenha o
que est na tela (incluindo todos os objetos, texturas e luzes), e precisa fazer
isso muitas vezes por segundo, os jogadores percebero um tremido na imagem
do jogo (WATKINS, 2012, p. 12).
35
3.2.9
Iluminao
A criao de recursos de iluminao no Unity, a cada verso, est mais poderosa. Para
desenvolvedores que possuem a verso PRO, os recursos de iluminao so bem mais completos
em relao a verso grtis. Um fator importante a ser considerado no desenvolvimento de um
jogo, a diferena visvel de iluminao de um monitor para outro, em alguns casos mais claro
ou mais escuro.
Para alterar a luz do ambiente de todo o projeto necessrio editar as propriedades do
RenderSettings. O projeto ScareSupreme, por ser um jogo de horror, foi definido utilizar a cor
preta da luz do ambiente com o intuito de deixar o mais assustador possvel. Existem quatro
tipos de GameObjects de luz no Unity, estes so Point Light, SpotLight, Directional Light e Area
lights. Todos podem ser espalhados no projeto e possuem caractersticas distintas de iluminao,
como, por exemplo, projetar a luz de uma Lanterna ou at a claridade do sol.
Tambm existe a tcnica de Backing, que consiste em pintar a luz e sombras de objetos em
outros objetos; o processador de vdeo apenas desenha a textura e no a passagem de iluminao
e sombra. O principal objetivo do Backing reduzir o custo de processamento e velocidade de
execuo.
Baking o processo de seleciona a iluminao que uma luz emite - e, mais
importante, as sombras que os objetos projetam em outros objetos - e pintar
esses valores de cores ajustados nos objetos. Pense em pintar sombras que so
projetadas ao longo de uma superfcie e pintar uma matriz em uma superfcie
que mostra a luz amarelada do poste de iluminao suja (WATKINS, 2012, p.
146).
3.2.10
Sistema de partculas
Essencialmente, partculas do Unity so minsculos cartazes ou planos(embora
a malha possa ser mais complexa) que so emitidas na cena e sempre permanecem na frente da cmera. Isso d a iluso de volume a coisas como fumaa
quando esse planos so texturizados com texturas semitransparentes. Como o
objeto de emisso-padro um lugar, a contagem de polgonos permanece baixa,
mas grandes efeitos so acionados.[...]Partculas podem ser usadas eficazmente
para fumaa, fogo, faixas, vapor e etc (WATKINS, 2012, p. 137).
36
3.2.11
Rust
O nico objetivo em Rust sobreviver.Para fazer isso voc ter que superar
dificuldades como fome, sede e frio. Construir uma fogueira. Construir um
abrigo. Matar animais pela carne. Proteja-se contra outros jogadores. Criar
alianas com outros jogadores e juntos criar uma fortaleza (STUDIOS, 2014).
Rust (Figura 19) um jogo de FPS Multiplayer de acesso antecipado com o principal
objetivo de sobrevivncia em terrenos perigosos que, ainda em fase de desenvolvimento na
engine do Unity, superou a barreira de 1 milho de cpias vendidas em fevereiro de 2014.
3.3
3.3.1
Para este projeto a ferramenta Maya (Figura 20) foi o software mais importante antes
do Unity, pois as teclas de atalhos e a interface dos comandos so muito parecidas em ambas
ferramentas. O desenvolvimento do jogo foi baseado no livro "Criando jogos com o Unity e
Maya"de Adam Watkins e ele apresenta muitas vantagens para a gerao de objetos e cenrios que
podem ser convertidos para o Unity, embora apresente as desvantagens de ser muito complexa
e no gratuita, ainda sim vrias verses so disponibilizadas para estudantes diretamente no
site do Autodesk. Foi utilizado a verso 2012 do software e est disponvel para download em
http://www.autodesk.com/products/maya/overview.
37
3.3.2
Autodesk Mudbox
Projetado por artistas profissionais das indstrias de cinema, jogos e design, o
software de escultura digital e pintura texturizada Autodesk Mudbox oferece aos
profissionais de modelagem 3D e textura a liberdade de criar se a preocupao
com detalhes tcnicos (AUTODESK, 2014a).
Para este projeto, a ferramenta Mudbox (Figura 21) foi a opo mais profissional na modelagem do monstro inimigo. Entre vrias ferramentas esta se destaca pela interao com o Maya
e por possuir as teclas parecidas com o mesmo e as do Unity. Existem vrias verses disponibilizadas para estudantes diretamente no site do Autodesk. Foi utilizado a verso 2015 do software e
est disponvel para download em http://www.autodesk.com/products/mudbox/overview.
38
3.3.3
Photoshop
O Photoshop (Figura 22) uma ferramenta de edio grfica para criao e alterao de
imagem, sendo que poderosa para texturas avanadas, alm de possuir milhares de plugins
disponveis gratuitamente.
Para este projeto o Photoshop foi essencial na edio de todas as imagens e cores,
utilizando as tcnicas de texturas sem costuras, mapeamento UV e Normal mapping. disponibilizada na verso 30 dias de uso pela Creative Cloud, aps o vencimento possvel adquirir
diversos planos para continuar a utilizao da mesma. Foi utilizado a verso CS 11.0 do software
e est disponvel para download em https://creative.adobe.com/pt/products/download/photoshop.
O Adobe Photoshop o editor grfico mais avanado que existe, capaz de fazer
desde simples fotomontagens at complexas imagens 3D e ilustraes. So
muitssimas as suas funes e possibilidades, e existem numerosos tutoriais
para 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 diversos
formatos diferentes de arquivos de udio. possvel gravar msicas e sons ao vivo ou converter
diretamente material em fitas e CDs"(TECHTUDO, 2014).
Para este projeto o Audacity (Figura 23) foi utilizado nas gravaes manuais de alguns
efeitos sonoros, como abrir portas, rudo de chave arrastando e entre outros. Alguns efeitos e
sons naturais de ambientes foram adquiridos de sites sem copyright, e editados no Audacity para
a adaptao correta dentro do jogo. Foi utilizado a verso 2.0.2 do software e est disponvel
para download em http://audacity.sourceforge.net/download/windows.
39
3.3.5
FL Studio Demo
FL Studio (Figura 24) um software completo para editar e criar msicas, possui muitos
efeitos sonoros em sua biblioteca.
Para o projeto ScareSupreme, foi utilizada a verso de demonstrao para criar loops
de ambiente e passos do personagem. A sua nica limitao no poder salvar o projeto, mas
a exportao para o formato mp3 liberada. Foi utilizado a verso 11.1.0 do software e est
disponvel para download em http://www.image-line.com/downloads/flstudiodownload.html.
40
4 DESENVOLVIMENTO
Neste captulo descrito os processos de desenvolvimento do projeto ScareSupreme por
meio da descrio e explanao de seus componentes.
Para estdios e desenvolvedores independentes, o democrtico ecossistema da
Unity derruba barreiras de tempo e custo para criar jogos exclusivamente lindos.
Eles esto usando o Unity para viver do que adoram fazer - desenvolver jogos
que cativam e encantam os jogadores em qualquer plataforma (UNITY, 2014).
4.1
Mundo do jogo
Modelar o cenrio foi um dos desafios deste projeto. O Unity disponibiliza objetos
para criao de cenrios, mas para a modelagem dos corredores e salas principais utilizou-se o
Autodesk Maya, por ser uma ferramenta mais poderosa.
A exportao do resultado da modelagem feita atravs de plugins da prprio Maya para
o formato FBX. A Figura 25 apresenta a modelagem dos corredores do jogo ScareSupreme.
4.3
Criando um Prottipo
Aps a modelagem dos corredores e salas principais, o arquivo FBX importado para o
Unity e includo no cena atual. Foi adicionado um First Person Controller, que um objeto da
41
assets padro do Unity para controle de personagem com viso em primeira pessoa. O objetivo
principal do prottipo foi realizar testes de proporo de tamanho, movimentao de jogabilidade
no ambiente criado e possvel continuao do projeto.
4.4
4.5
Insero de texturas
42
4.5.1
Mapeamentos UV
Vrios tipos de tcnicas de mapeamento de UV (Figura 28) foram utilizadas para texturizao e logo sero citadas; mapeamento UV a tcnica de desembrulhar todas as faces do
objeto para a aplicao correta das texturas em seu plano. Foi utilizado o prprio editor de UV
do Maya, aplicado uma textura xadrez(preto e branco) em todos os planos mapeados para ter a
perspectiva do tamanho da UV e evitar imagens distorcidas aps a aplicao da texturas.
4.5.1.1
Automatic Mapping
43
4.5.1.2
Mapeamento Manual
Utilizao do mapeamento manual mais preciso nas superfcies por ser mais cuidadoso
e trabalhoso. Foi utilizada a funo Planar Mapping (Figura 30) para todas superfcies lisas no
mesmo eixo. Por exemplo, pisos e paredes longas necessitam repeties de texturas. Para objetos
circulares foram utilizados a funo Culindrical Mapping.
4.5.2
Todos os materiais criados para este projeto so do tipo lambert e sero alterados somente
quando necessrio dentro do Unity. Aps a criao do material, o mesmo aplicado no objeto
ou plano correspondente, substituindo o formato anterior em xadrez, mas mantendo o mesmo
mapeamento UV, ou seja, as imagens no sero distorcidas. A Figura 31 apresenta uma textura
aplicada no jogo ScareSupreme.
Todos as texturas aplicadas foram editadas no tamanho mltiplos de 2, o Unity consegue converter imagens de tamanhos diferentes, mas precisaria de processamento adicional no
momento da execuo do jogo.
44
Figura 32: Visualizao das texturas importadas automaticamente para o Unity juntamente com o modelo
Fonte: Elaborada pelo Autor
4.6
Criao de Terreno
45
4.7
Efeitos de renderizao
Aps a concluso dos passos anteriores, foram adicionados alguns efeitos do prprio
editor do Unity no projeto. A princpio o Skybox foi adicionado apresentando uma noite de lua
cheia, mas para o propsito do jogo o mesmo foi removido e ativado a nebrina(Fog) (Figura 35)
com a cor prxima ao preto. A luz de ambiente est na mesma cor da neblina, com o objetivo
de intensificar o ambiente noturno e tambm para o personagem no enxergar objetos a longa
distncia.
4.8
Para este projeto foram importados vrios assets da comunidade, e tambm as que vieram
por padres na instalao do Unity. Na criao de um novo projeto existe a possibilidade de
selecionar quais destes pacotes sero importados, mas posteriormente podem ser acionados
manualmente no projeto.
Foram utilizados os Assets padres de terreno, controle de personagem, partculas, Skyboxes e Water (Figura 36). Assets da comunidade foram para rvores, chuvas e tambm foram
adquiridos alguns modelos de sites externos, como carro e camas de dormir.
46
4.8.1
Partculas
4.9
Foi aplicado em quase todos os materiais deste projeto a tcnica de shaders avanados
(Figura 38), que a criao de Normal mapping a partir das suas texturas e a alterao dos
47
shaders para bumped Specular. Desta forma, as superfcies estaro mais tteis em suas aparncias,
midas e ainda mais realistas na presena de luz em sua direo. As Figuras 39 e 40 apresentam
texturas com e sem aplicao de shaders.
Com o auxilio do plugin da Nvidia, o mapa normal foi extrado a partir dos mapa de
cores das texturas de praticamente todos os objetos do jogo.
48
4.10
Roteiro de eventos
Foram definidos todos os passos que o jogador precisa efetuar para conseguir avanar na
partida. Em vrios momentos o mesmo precisar encontrar determinados itens ou aes para
abrir uma porta ou porto. Este roteiro programado tem a vantagem de ter poucas chances de
falhas no jogo, mas caso queira iniciar uma nova partida, praticamente o roteiro ser parecido ao
anterior, mesmo que foi programado para vrios itens mudarem de lugar aleatoriamente.
4.11
Coliso
Foi usado o sistema padro do prprio Unity para as colises dos personagens, itens,
mapa e triggers. O Character Controller define o raio de coliso do corpo do personagem. Para
cada objeto importado ativado o Generate Colliders em propriedades, antes ou depois de
incluir na Cena, desta forma possvel colidir sem atravessar o mesmo. Cada objeto pode ter
o seu formato de coliso (Figura 41) editado manualmente no visualizador Inspector em suas
propriedades, e objetos criados diretamente no Unity recebem automaticamente o collider mais
apropriado para o seu formato.
49
4.12
Gatilhos e aes
Gatilhos no Unity so chamados de trigger (Figura 42), estes so um dos itens mais
importantes e usados em um desenvolvimento de jogos. Define quando determinado som deve ser
tocado, 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 percorrer
ser totalmente preenchido, impossibilitando o mesmo de no acionar os gatilhos plantados.
O componente renderer esta desativado, tornando-o invisvel na visualizao do jogador e o
componente de Coliso ativado como um trigger na propriedades deste GameObject. Tambm
foram associados scripts personalizados para as aes dos trigger.
Personagens
Foi decidido criar dois personagens neste projeto. O primeiro controlado pelo jogador
em pessoa e visvel somente a lanterna do mesmo; o segundo personagem um monstro
que parece em diversos lugares aleatoriamente.
1o
4.13.1
Apenas o personagem monstro possui uma forma fsica modelada, e inicialmente foi
desenvolvido na ferramenta Maya (Figura 44) com poucos detalhes, mas com um certo aspecto
50
assustador.
51
4.13.3
Mecnica de Combate
Aps concludo todas as movimentaes, foram criadas as regras de combate entre os dos
personagens. O jogador no conseguir derrotar o mostro, mas poder morrer desde que a sua
sanidade alcance o valor 100. O script desenvolvido para o controle das aes do personagem
jogvel possui a funo update, que um mtodo integrado no prprio Unity e qualquer cdigo
inserido dentro do mesmo executado a cada quadro (ou frame) do jogo, ou seja, foi utilizado a
tcnica raycast em conjunto a funo update para quando o personagem estiver olhando para
o mostro a sua sanidade aumente (Figura 47), causando a morte instantnea do jogador caso
52
alcanar o valor 100. Caso o jogador consiga escapar de um possvel ataque do monstro, isso
ocorre quando existir uma pequena distncia entre ambos ou no estiver mais olhando para o
mesmo, a sua sanidade voltar ao normal a cada update.
4.15
Para este projeto foi criada uma pasta Sound dentro do diretrio principal no visualizador
Project, onde so arrastados todos os sons usados no jogo. O Unity suporta muitos tipos de
arquivos de som e foram usados no formato mp3 e wav (WAVEform audio format).
Para cada som foi criado um Gameobject, includo o componente Audio Source (Figura
48) que manter as propriedades do som e arrastado-o at o lugar aonde deseja que o mesmo seja
reproduzido. Sons de passos, abrir portas, ambientes e outros, foram adicionados na hierarquia
do Player Controller na visualizao Hierarchy, ou seja, sempre estar acompanhando o jogador
para que sejam reproduzidos por algumas aes especificas, no mesmo volume frequente e
tambm podendo exclu-los quando necessrio.
Quase todos os sons tiveram que ser editados no Audacity, principalmente para reduzir o
tempo de execuo, remoo de rudo, cortar a faixa de udio ou at desacelerao. Para sons de
passos e repetitivos com pequenas diferenas no tempo, foi utilizado o FL Studio Demo que
bastante simples e no requer conhecimento profissional de edio.
Os sons de ambiente foram adquiridos no site www.freesound.org que uma base de
dados em udio colaborativa de Creative Commons Licensed sounds que especialmente
para propsitos de udio que no possuem copyright; muitos dos efeitos sonoros como chave
arrastando, destrancando portas e etc. Foram gravados diretamente pelo microfone do Microsoft
Headset: LifeChat LX-3000.
53
4.16
Animaes de objetos
O prprio Unity possui um editor de animaes e alguns objetos dentro deste projeto
foram editados com est ferramenta. A maioria das portas so movimentadas pressionando o
boto esquerdo do mouse e outras arrastando-as para os lados, mas algumas so abertas ou
fechadas por animaes criadas referente a este objeto, e acionadas pela distancia, clique do
mouse ou triggers. Algumas animaes foram compartilhadas para o mesmo tipo de objeto.
Foram criados vrias animaes para diversos objetos como caixas de madeira, travesseiro, pedra,
monstro e botes de acionamento. As Figuras 49 e 50 apresentam a edio de animao da porta
inicial.
4.17
Objetivos do jogo
O objetivo do jogo explorar toda a construo abandonada e encontrar itens para acionar
novas aes para liberaes de eventos bloqueados. exibida a mensagem para retornar ao carro
inicial aps todas as tarefas serem concludas com sucesso, quando ocorrer a aproximao com
este Objeto ser finalizada a partida atual com vitria.
54
Para o jogo ficar mais desafiador, o personagem corre o risco de morte em determinadas
trajetrias do caminho e quando visualizar o monstro inimigo a uma proximidade muito baixa.
4.18
Para este projeto as transies de telas ou Scenes so efetuadas entre o menu inicial
(Figura 51), o jogo em si, que o proposito principal, e a tela de vitria.
55
4.19
Na tela de carregamento do jogo existe o boto input que define os comandos de movimentao do personagem. Jogadores acostumados com jogos em primeira pessoa provavelmente
no tero problemas para se acostumarem. A cada movimento do personagem dentro do jogo,
sempre so apresentadas algumas mensagens explicando ou alertando o que necessrio para
avanar nos eventos, desta forma o mesmo no ficar perdido dentro do ambiente.
4.20
Compilando o projeto
Obrigatoriamente para cada projeto criado no Unity necessrio a incluso das cenas
usadas na tela de configurao de compilao e escolher qual plataforma ser destinada o jogo
a ser compilado. Este projeto foi totalmente desenvolvido para ser jogado usando o mouse e o
teclado, sucessivamente foi escolhido a compilao para PC com opo de Windows, MAC OS
e Linux. A Figura 54 apresenta as configuraes da tela de compilao do jogo e a Figura 55
apresenta a execuo do jogo aps a compilao.
4.21
Testes
Durante o desenvolvimento deste projeto vrias etapas de testes foram efetuadas para
identificar possveis falhas no jogo, principalmente quando ocorriam alteraes de cdigos,
sons ou demais objetos. Apenas o desenvolvedor do jogo tm acesso aplicao e a execuo
56
57
diretamente na ferramenta de desenvolvimento. Na fase alfa, o jogo estar aberto para possveis
testadores.
4.22
Manuteno
Este jogo receber atualizaes e novas funcionalizadas em todos os aspectos. Desenvolvimento de melhorias nos scripts dos principais controladores, com o objetivo de simplificar as
manutenes. Ser criado um esqueleto para o personagem monstro, com o objetivo de tornar as
suas movimentaes mais realistas. Sero criados novos efeitos sonoros, animaes de objetos,
correes de bugs e melhorias na dificuldade do jogo.
4.23
Dificuldades do projeto
A maior dificuldade durante todo o estudo e criao deste trabalho estava na modelagem
dos objetos no Maya, pois foi necessrio muito tempo e dedicao para os detalhes, com o
objetivo de desenvolver um jogo mais atraente e divertido.
58
5 CONCLUSO
De uma maneira geral, o projeto proposto em questo foi iniciado seguindo uma pequena
anlise sobre o crescimento mundial do mercado de jogos, pois estima-se que a receita da
industria de games ultrapasse 86 bilhes de dlares em 2016 (WARMAN, 2013). A fim de
compreender todos os passos para o desenvolvimento de jogos profissionais, foi necessrio
estudar algumas etapas dos processos em geral.
O estudo sobre a tecnologia Unity foi essencial para a realizao deste trabalho, pois
a simplicidade na codificao no requer conhecimentos especficos na rea de games, desde
que o desenvolvedor tenha conhecimentos em programao. H tambm reduo no tempo
de desenvolvimento por prover a manipulao de praticamente todos os itens de uma forma
simples e rpida. A verso grtis possui algumas limitaes principalmente nos recursos de
iluminao e efeitos, mesmo assim possvel a converso do jogo para vrias plataformas de
consoles, computadores pessoais e celulares. Com um estudo mais aprofundado na iluminao,
pode-se diminuir o processamento em tempo real e uma viso mais realista das texturas quando
combinados com shaders avanados. O Unity dispe de recursos padres e prontos para serem
utilizados e esto disponveis pacotes para download em sua comunidade online.
Durante o desenvolvimento, o Unity apresentou limitaes referente a modelagem de
objetos 3D. Vrias ferramentas foram utilizadas em conjunto para o proposito final, como para
a modelagem da maioria dos objetos 3D, foi utilizado o Autodesk Maya; as texturas destes
objetos foram criadas e editadas na ferramenta Adobe Photoshop. Aps a importao para o
Unity, alguns destes itens foram trocados ou anexados a outros objetos 3D, o que possibilita a
manipulao de matrias entre os objetos. A utilizao das ferramentas Audacity e FL Studio
Demo na edio de udio como um todo foram cruciais para a concluso acelerada do projeto.
Outro contratempo foi a modelagem do personagem inimigo do jogador, que inicialmente foi
criado no Autodesk Maya. Como o resultado final ficou bastante abaixo do esperado, foi decidido
desenvolver um novo modelo a partir da ferramenta Autodesk MudBox. Esta tem o objetivo de
trabalhar nas modelagens de objetos, personagens e esculturas. Esta alternativa demandou novos
estudos da modelagem 3D.
Conclui-se que o Unity uma excelente ferramenta para desenvolvimento de jogos
profissionais para diversas plataformas do mercado, embora a necessidade do uso de outras
ferramentas para o sucesso visivelmente percebida no desenvolvimento de qualquer projeto.
59
REFERNCIAS BIBLIOGRFICAS
2010 TOTAL CONSUMER SPEND ON ALL GAMES CONTENT IN THE U.S.
ESTIMATED BETWEEN 15.4T O15.6 BILLION. NPD Group, n. 110113. Disponvel em:
<http://npd.com/lps/standard/EntertainmentTrends.html>. Acesso em: 04 abr. 2011. Nenhuma
citao no texto.
3DMAGICMODELS. 3d Magic Models. 2014. Disponvel em: <https://3dmagicmodels.com>.
Acesso em: 08 jul. 2014. Nenhuma citao no texto.
ADL. ADL 3D Repository. 2014. Disponvel em: <http://3dr.adlnet.gov/Public/Model.aspx?
ContentObjectID=adl:640>. Acesso em: 11 ago. 2014. Nenhuma citao no texto.
AUTODESK. Autodesk mudbox. 2014. Disponvel em: <http://www.autodesk.com.br/adsk/
servlet/index?siteID=1003425&id=11485463>. Acesso em: 11 set. 2014. Citado na pgina 37.
AUTODESK. Software de animao computadorizada maya autodesk. 2014. Disponvel em:
<http://www.autodesk.com.br/products/maya/overview>. Acesso em: 19 ago. 2014. Citado na
pgina 36.
BERKEBILE, B. iTween for Unity by Bob Berkebile. 2014. Disponvel em: <http:
//itween.pixelplacement.com/>. Acesso em: 10 mar. 2014. Nenhuma citao no texto.
BORGO. Pathfinder. 2014. Disponvel em: <http://unity3dbrasil.com/showthread.php?tid=
205>. Acesso em: 30 jun. 2014. Nenhuma citao no texto.
DISHFUNCTIONALDESIGNS. Dishfunctional Designs. 2014. Disponvel em: <http:
//dishfunctionaldesigns.blogspot.com.br/2013/03/salvaged-repurposed-vintage-lockers.html>.
Acesso em: 28 jul. 2014. Nenhuma citao no texto.
FFONTS. WoodenCasket. 2014. Disponvel em: <http://pt.ffonts.net/WoodenCasket.font.
download>. Acesso em: 22 jul. 2014. Nenhuma citao no texto.
GAME DEVELOPMENT. [S.l.], 2011. Disponvel em: <http://create.msdn.com/en-US/
education/gamedevelopment>. Acesso em: 28 fev. 2011. Nenhuma citao no texto.
HAINESM, E. DragObject. 2014. Disponvel em: <http://wiki.unity3d.com/index.php?title=
DragObject>. Acesso em: 11 set. 2014. Nenhuma citao no texto.
INTRODUCAO AO MICROSOFT XNA - Desenvolvendo Jogos em casa.
Bruno Amaral. Disponvel em: <http://brunoamaral.wordpress.com/2008/06/03/
desenvolvendo-jogos-com-xna-microsoft-parte-1/>. Acesso em: 10 maio. 2011. Nenhuma
citao no texto.
INTRODUCING FL Studio 11. Disponvel em: <http://www.image-line.com/flstudio/l>. Acesso
em: 19 ago. 2014. Nenhuma citao no texto.
KING, T. Texture King. 2014. Disponvel em: <http://www.textureking.com/>. Acesso em: 20
abr. 2014. Nenhuma citao no texto.
MANIACOSPORFILME. Blog dos Manacos por Filme. 2011. Disponvel em: <http:
//maniacosporfilme.files.wordpress.com/2011/08/amaldic3a7oados-pelo-demc3b4nio-3.png>.
Acesso em: 07 jul. 2014. Nenhuma citao no texto.
60
61
ANEXOS
63
/ / f u n c a o U p d a t e do R a y c a s t
f u n c t i o n Update ( ) {
Screen . showCursor = f a l s e ;
d i s t a n c i a R a y c a s t = 100;
distanciaObjeto = 2.7;
4
5
6
7
var h i t : RaycastHit ;
8
9
10
11
12
13
14
15
//
16
17
18
19
20
21
22
23
24
25
64
26
27
28
...
v a r cam : GameObject ;
v a r v o l t a r B u t t o n : GameObject ;
v a r s a i J o g o B u t t o n : GameObject ;
v a r s a i r P a r t i d a B u t t o n : GameObject ;
v a r voceMorreuLogo : GameObject ;
var estaMorto : boolean = f a l s e ;
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
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
f u n c t i o n Awake ( ) {
Time . t i m e S c a l e = 1 ;
voltarButton . SetActive ( false ) ;
saiJogoButton . SetActive ( false ) ;
sairPartidaButton . SetActive ( false ) ;
voceMorreuLogo . S e t A c t i v e ( f a l s e ) ;
}
f u n c t i o n Update ( ) {
i f ( I n p u t . GetKey ( KeyCode . E s c a p e ) && ! pauseMenu && ! e s t a M o r t o ) {
Escape ( ) ;
} e l s e i f ( I n p u t . GetKey ( KeyCode . E s c a p e ) && pauseMenu &&! e s t a M o r t o ) {
Unpause ( ) ;
}
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 >= 1 0 0 . 0 f ) {
estaMorto= true ;
MenuDeMorte ( ) ;
}
}
function ReiniciarPartida () {
Screen . showCursor = f a l s e ;
PlayerController . currentSanity =20.0;
A p p l i c a t i o n . L o a d L e v e l ( " ProjetoTCCgameCena " ) ;
Time . t i m e S c a l e = 1 ;
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 ;
cam . GetComponent ( " MouseLook " ) . e n a b l e d = t r u e ;
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 ;
AnimacaoTriggerScript . portaFechada
= false ;
AnimacaoTriggerScript . finalizarSalaSangrenta
= false ;
AnimacaoTriggerScript . finalizarFecharSalaSangrenta
= false ;
BanheiroScript . jaAtivouMonstroCorredor
= true ;
65
MonstroController . AtivaMonstro
PonteTriggerScript . jaAtivouMonstroPonte
P o n t e T r i g g e r S c r i p t . CairNaAaguar
estaMorto= f a l s e ;
39
40
41
42
43
44
= true ;
= false ;
= false ;
}
...
p r i v a t e v a r S o m C l i q u e L a n t e r n a : GameObject ;
p r i v a t e v a r l a n t e r n a J o g o : GameObject ;
p r i v a t e var lanternaLigada : boolean ;
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 = 20.0;
var maxSanity : f l o a t = 1 0 0 . 0 ;
var minSanity : f l o a t = 0 . 0 ;
var scarePerc : f l o a t = 20.0;
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 ;
var feedbackMonstro : Renderer ;
v a r B o t a o L a n t e r n a : GameObject ;
s t a t i c var AtivaCrossahairs : boolean= f a l s e ;
v a r C r o s s a h a i r s : GameObject ;
14
15
16
17
18
19
20
21
22
23
24
25
26
f u n c t i o n Awake ( ) { / / C a r r e g a n d o
S o m C l i q u e L a n t e r n a = g a m e O b j e c t . F i n d ( "SomC 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 n a s v a r i a v e i s em v e z de m a n u a l m e n t e
l a n t e r n a J o g o = gameObject . Find ( " 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 v e z de m a n u a l m e n t e
}
function Start () {
lanternaLigada = true ;
iTween . MoveBy ( B o t a o L a n t e r n a , iTween . Hash ( " y " , 0.004 , " e a s e T y p e " , "
l i n e a r " , " time " ,0.0001) ) ;
E f e i t o S a n i d a d e = GameObject . F i n d ( " P l a y e r " ) ;
}
f u n c t i o n Update ( ) {
if ( AtivaCrossahairs ){
Crossahairs . SetActive ( true ) ;
66
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
c u r r e n t S a n i t y = Time . d e l t a T i m e ;
49
50
...
5
6
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 ;
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 ;
f u n c t i o n Awake ( ) { / / C a r r e g a n d o
d a t a P a n e l B i o g r a p h y = gameObject . Find ( " DataPanel_Biography " ) ; / /
a t r i b u i n d o o b j e t o s n a s v a r i a v e i s em v e z de m a n u a l m e n t e
dataPanelMission
= gameObject . Find ( " DataPanel_Mission " ) ;
}
7
8
9
10
11
12
13
14
f u n c t i o n OnMouseEnter ( ) {
guiTexture . c o l o r = Color (1 ,1 ,1) ;
}
f u n c t i o n OnMouseExit ( ) {
/ / OnMouseExit P a s s a r o mouse
g u i T e x t u r e . c o l o r = C o l o r ( . 2 , . 2 , . 2 ) ; / / 0 . 2 no r g
}
67
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
f u n c t i o n OnMouseDown ( ) {
i f ( name == " B u t t o n _ B i o " ) { / / nome do O b j e t o
dataPanelBiography . guiTexture . enabled = true ;
dataPanelMission . guiTexture . enabled = f a l s e ;
}
i f ( name == " B u t t o n _ M i s s i o n " ) {
dataPanelBiography . guiTexture . enabled = f a l s e ;
dataPanelMission . guiTexture . enabled = true ;
}
/ * P r a 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 , deves e c o l o c a r na
configuracoes
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
*/
i f ( name == " B u t t o n _ B e g i n " ) {
A p p l i c a t i o n . L o a d L e v e l ( " ProjetoTCCgameCena " ) ;
}
}
...
68
p r i v a t e var S o m C l i q u e L a n t e r n a : GameObject ;
p r i v a t e var l a n t e r n a J o g o : GameObject ;
p r i v a t e var l a n t e r n a L i g a d a : b o o l e a n ;
// variaveis de sanidade
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 ;
var m a x S a n i t y : f l o a t = 1 0 0 . 0 ;
var m i n S a n i t y : f l o a t = 0 . 0 ;
var s c a r e P e r c : f l o a t = 2 0 . 0 ;
p r i v a t e var E f e i t o S a n i d a d e : GameObject ;
var f e e d b a c k M o n s t r o : Renderer ;
12
13
var B o t a o L a n t e r n a : GameObject ;
14
15
16
s t a t i c var 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 ;
var C r o s s a h a i r s : GameObject ;
17
18
19
20
21
22
23
24
25
26
f u n c t i o n Awake ( ) { // Carregando
S o m C l i q u e L a n t e r n a = gameObject . F i n d ( "Som - CliqueLanterna " ) ; // atribuindo
objetos nas variaveis em vez de manualmente
l a n t e r n a J o g o = gameObject . F i n d ( "Lanterna " ) ; // atribuindo objetos nas
variaveis em vez de manualmente
}
function S t a r t () {
lanternaLigada = true ;
iTween . MoveBy ( B o t a o L a n t e r n a , iTween . Hash ( "y" , 0.004 , "easeType " , "linear"
, "time" , 0 . 0 0 0 1 ) ) ;
E f e i t o S a n i d a d e = GameObject . F i n d ( "Player" ) ;
}
27
28
f u n c t i o n Update ( ) {
29
30
31
32
33
34
35
36
37
if ( AtivaCrossahairs ){
Cro ssahai rs . SetActive ( true ) ;
} else Crossahairs . SetActive ( false ) ;
// Controle de sanidade
i f ( c u r r e n t S a n i t y < 100)
{
c u r r e n t S a n i t y = Time . d e l t a T i m e ;
}
38
39
40
41
42
i f ( c u r r e n t S a n i t y >= 1 0 0 )
{
c u r r e n t S a n i t y = maxSanity ;
SetFeedBackAlpha ( 1 . 0 f ) ;
69
43
44
45
46
47
48
i f ( c u r r e n t S a n i t y <= 0 )
{
c u r r e n t S a n i t y = minSanity ;
}
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
i f ( c u r r e n t S a n i t y >= 6 8 )
{
SetFeedBackAlpha ( 0 . 3 f ) ;
}
68
69
70
71
72
i f ( c u r r e n t S a n i t y >= 7 0 )
{
SetFeedBackAlpha ( 0 . 3 5 f ) ;
}
73
74
75
76
77
i f ( c u r r e n t S a n i t y >= 8 0 )
{
SetFeedBackAlpha ( 0 . 4 0 f ) ;
}
78
79
80
81
82
83
84
85
86
i f ( c u r r e n t S a n i t y >= 9 0 )
{
SetFeedBackAlpha ( 0 . 4 5 f ) ;
}
i f ( c u r r e n t S a n i t y >= 9 2 )
{
SetFeedBackAlpha ( 0 . 5 f ) ;
}
87
88
// fim sanidade
89
90
70
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
function aumentarInsanidade () {
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 ;
}
function SetFeedBackAlpha ( alpha : f l o a t ) {
117
var c u r r e n t A l p h a : C o l o r = f e e d b a c k M o n s t r o . m a t e r i a l . c o l o r ;
currentAlpha . a = alpha ;
feedbackMonstro . m a t e r i a l . color = currentAlpha ;
118
119
120
121
}
PlayerController.js