18
1 Revista Eletrônica da Faculdade Metodista Granbery http://re.granbery.edu.br - ISSN 1981 0377 Curso de Sistemas de Informação 2013 GAME ENGINE UNITY 3D *1 Fillipe Martins Van Keulen *1 Marcos Vinicius Grossi de Mattos *1 Vítor Daniel Rosa Cabral *2 Sérgio Muinhos Barroso Lima Resumo. O mercado de jogos eletrônicos vem apresentando um crescimento significativo nos últimos anos. O desenvolvimento da tecnologia e da própria engenharia de software tem permitido a criação de ferramentas que agilizam e aumentam a qualidade do processo de desenvolvimento de jogos, dentre elas, as game engines. Como resultado, surgem jogos com qualidade cada vez maior, oferecendo uma experiência cada vez mais realista, tornando-se mais atrativos para pessoas de diversas faixas etárias. Neste trabalho, é apresentada a estrutura básica da game engine Unity 3D. PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas de jogos. Abstract. The game market are showing a significative growing on the last years. The technology and engineering advances are supporting the development of tools that increase the speed and the quality of game development, among them, starring, the game engines. As result, are appearing several games with high quality, offering stunning and realistic experiences, being more attractive to the people of several ages. This work presents the game engine Unity 3D. KEY-WORDS: Unity 3D, eletronic games, game development, game tools, game engines. *1 Bacharel em Sistemas de Informação, Faculdade Metodista Granbery, [email protected]. *2 Mestre em Ciência da Computação, UNICAMP, [email protected].

FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

  • Upload
    dohanh

  • View
    225

  • Download
    0

Embed Size (px)

Citation preview

Page 1: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

1

Revista Eletrônica da Faculdade Metodista Granbery

http://re.granbery.edu.br - ISSN 1981 0377

Curso de Sistemas de Informação – 2013

GAME ENGINE UNITY 3D

*1 Fillipe Martins Van Keulen

*1 Marcos Vinicius Grossi de Mattos

*1 Vítor Daniel Rosa Cabral

*2 Sérgio Muinhos Barroso Lima

Resumo. O mercado de jogos eletrônicos vem apresentando um crescimento

significativo nos últimos anos. O desenvolvimento da tecnologia e da própria

engenharia de software tem permitido a criação de ferramentas que agilizam e

aumentam a qualidade do processo de desenvolvimento de jogos, dentre elas, as

game engines. Como resultado, surgem jogos com qualidade cada vez maior,

oferecendo uma experiência cada vez mais realista, tornando-se mais atrativos para

pessoas de diversas faixas etárias. Neste trabalho, é apresentada a estrutura básica da

game engine Unity 3D.

PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos,

ferramentas para jogos, máquinas de jogos.

Abstract. The game market are showing a significative growing on the last years.

The technology and engineering advances are supporting the development of tools

that increase the speed and the quality of game development, among them, starring,

the game engines. As result, are appearing several games with high quality, offering

stunning and realistic experiences, being more attractive to the people of several

ages. This work presents the game engine Unity 3D.

KEY-WORDS: Unity 3D, eletronic games, game development, game tools, game

engines.

*1 Bacharel em Sistemas de Informação, Faculdade Metodista Granbery,

[email protected].

*2 Mestre em Ciência da Computação, UNICAMP, [email protected].

Page 2: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

2

1 INTRODUÇÃO

Desde o início do processo de desenvolvimento de software, o avanço da tecnologia

vem possibilitando aos seres humanos reproduzir nas máquinas situações do mundo real. Essa

evolução contribuiu para a melhoria dos sistemas, que passaram a ser mais interativos e a

simular, cada vez melhor, situações reais com as quais os usuários poderiam se deparar. Logo,

as máquinas passaram a reproduzir fenômenos como força da gravidade, aceleração

centrífuga, efeitos de iluminação, luz, sombras, sons e começaram a surgir softwares com

grupos de funcionalidades específicas para domínios específicos, como, por exemplo, as

bibliotecas de funções matemáticas ou físicas. Surgiam assim as game engines.

A palavra engine significa motor, em português, e, de acordo com o dicionário

Priberam da Língua Portuguesa (PRIBERAM, 2012), tem por definição “Que dá movimento;

Aquilo que induz ou instiga”.

Na área do desenvolvimento de sistemas, engines podem ser comparadas a grandes

bibliotecas que agrupam funcionalidades de um mesmo contexto. À medida que o

conhecimento envolvido neste contexto evolui, pode ser necessário alterar essas bibliotecas,

para acrescentar funcionalidades, e, por isso, as engines também estão sujeitas a princípios de

engenharia de software, como os padrões de projetos (EBERLY, 2005).

A utilização de engines agiliza o processo desenvolvimento de aplicações para

contextos específicos, pois concentra todas, ou a maior parte das funcionalidades que são

inerentes a esse contexto.

Muitas aplicações (inclusive outras engines) são desenvolvidas através da combinação

de funcionalidades de várias engines distintas. Esse trabalho aborda estrutura básica da game

engine UNITY 3D, que vem despontando como uma das mais importantes game engines do

mercado.

2 A UNITY 3D

Há, no mercado, diversas game engines, cada uma com seus pontos fortes e fracos, e

cada uma delas oferece vários tipos de licenças, que podem ser compradas e utilizadas pelos

desenvolvedores. Geralmente, o preço de cada licença varia de acordo com as funcionalidades

disponíveis em cada tipo de licença. A game engine Unity 3D, que, atualmente, se encontra na

sua versão 4, vem ganhando bastante visibilidade no mercado nos últimos anos.

Page 3: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

3

Quintella (2012) descreve a Unity3D como um motor gráfico que se destaca pelo

sucesso que vem alcançando e ainda alguns dos motivos responsáveis por este sucesso:

[...] Sua interface intuitiva, seu baixo custo comparativo, e sua grande de

gama de funcionalidades, podendo listar dentre elas: simulação física,

capacidade de importação de uma grande quantidade de formatos de

arquivos 3D, exportação para web, linguagem de scripts fácil e poderosa,

animações e suporte a diversos tipos de esqueletos, etc. Além disso o motor

possui um editor fácil e poderoso e uma ativa comunidade de

desenvolvedores independentes que engloba desde empresas a entusiastas.

(QUINTELLA, 2012)

Inicialmente, disponibilizava apenas duas versões: Unity Pro e Unity. A primeira pode

ser descrita como a versão completa, pois oferece todas as funcionalidades desenvolvidas pela

equipe Unity Technologies. A segunda é a versão gratuita, disponibilizada apenas em 2009,

com o intuito de divulgar a ferramenta e ampliar o público-alvo. Oferece funcionalidades

mais limitadas e pode ser usada para fins educacionais.

Devido à ascensão das tecnologias mobile e à crescente participação no mercado

conquistada pela ferramenta, atualmente a Unity 3D é oferecida ao mercado em cinco versões:

Unity Pro, Unity iOS, Unity iOS Pro, Unity Android Pro e Flash Unity Pro. Substituindo a

versão gratuita mencionada, a Unity Technologies oferece as versões Unity Pro e Unity iOS

Pro, com todas funcionalidades disponíveis para utilização gratuita durante trinta dias

(UNITY TECHNOLOGIES, 2012).

A Unity não fornece um sistema de criação de objetos 3D; quase todos os objetos são

criados fora da Unity (WATKINS, 2011) através de softwares como Blender, Maya, Cheetah

e outros.

As funcionalidades disponíveis nesta ferramenta, sua interface de fácil aprendizado e a

experiência prévia, nesta ferramenta, dos alunos (durante o grupo de estudos sobre o

desenvolvimento de jogos e aplicativos móveis da Faculdade Metodista Granbery)

influenciaram positivamente a escolha da mesma para o desenvolvimento deste trabalho.

Assim como outras engines e IDE’s1, a Unity3D possui um layout customizável

(GOLDSTONE, 2009), pois os painéis de sua interface podem ser reorganizados, permitindo

ao desenvolvedor encontrar a melhor foram de trabalhar, como pode ser observado na

ilustração 1. Possui também uma interface de fácil manipulação, onde se pode criar e

manipular objetos, scripts, importar arquivos de outros softwares, como objetos 3d, imagens,

texturas, animações, entre outros. A seguir, as principais funcionalidades da Unity3D são

exploradas.

1 Sigla para Interface de desenvolvimento

Page 4: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

4

Ilustração 1 - Interface da Unity 3D.

FONTE: (MANUAL, 2012)

Na ilustração 1, a região marcada com o texto Project representa o painel Project

Browser da interface. A região marcada com o texto Scene representa o painel Scene View. A

região marcada com o texto Toolbar representa a barra de ferramentas. O texto Inspector

representa o painel Object Inspector da ferramenta. E o texto Hierarchy representa o painel

Hierarchy da ferramenta. A seguir serão explicadas as funções de cada um desses painéis.

Através da aba Scene View, é possível manipular os objetos da cena e navegar por ela

com as Transform Tools. No canto superior direito da ilustração 2, há um botão parecido com

uma cruz, com os eixos X, Y e Z marcados de vermelho, azul e verde, respectivamente. Este

objeto é o Scene Gizmo. Ele mostra a orientação atual da cena e permite ao usuário alterar o

ângulo de visão da Scene View (UNITY, 2012).

Ilustração 2 - Scene View.

FONTE: (UNITY, 2012)

Page 5: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

5

A aba Hierarchy (ilustração 3) exibe todos os objetos que se encontram na cena atual

(WATKINS, 2011) de forma hierárquica, como o nome sugere. À medida que objetos são

adicionados ou removidos da cena, eles, respectivamente, aparecem ou desaparecem dessa

aba.

Ilustração 3 - Aba Hierarchy da Unity.

FONTE: (UNITY, 2012)

Os objetos relacionados hierarquicamente na cena são representados nesta aba pelas

setas localizadas à esquerda de cada nome de objeto. Clicando em uma destas setas, a

ferramenta exibe os objetos subordinados ao objeto principal, por exemplo, o objeto

roofing_a, que tem como subordinado o objeto metal, conforme exibido na ilustração 3.

A aba Inspector (ilustração 4) exibe as informações, atributos físicos, componentes e

scripts adicionados, de um objeto selecionado. Essa aba permite ainda alterar os atributos

físicos e até algumas variáveis dos scripts e componentes adicionados a esse objeto (UNITY,

2012).

Ilustração 4 - Aba Inspector da Unity.

FONTE: (UNITY, 2012)

Page 6: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

6

Na aba Project Browser, encontram-se todas as pastas e arquivos do diretório onde o

jogo está sendo desenvolvido. O Project Browser é basicamente a pasta de Assets2, que se

encontra no diretório do jogo (WATKINS, 2011).

A barra de ferramentas da Unity (ilustração 5) é formada por cinco grupos de botões:

Transform Tools, Transform Gizmo Toggles, Play/Pause/Step Buttons Layers Drop-Down e

Layout Drop-down (UNITY TECHNOLOGIES, 2012).

Ilustração 5 - Barra de ferramentas da Unity 3D.

FONTE: (UNITY, 2012).

As Transform Tools servem para alterar a forma de um objeto e sua posição. Seu

primeiro botão é a ferramenta “mão”. Esta ferramenta permite navegar pelo cenário. Pode ser

usada junto com a tecla Alt, permitindo a rotação do cenário, ou com a tecla Shift, permitindo

dar zoom na scene view. Seu segundo botão corresponde à ferramenta de movimentação. Esta

função habilita a movimentação de um objeto já alocado no cenário. A movimentação é

realizada através dos eixos em ordem de reposicionar o objeto na cena. O terceiro botão

corresponde à ferramenta de rotação, e funciona da mesma forma como a ferramenta de

movimentação, mas, ao invés de movimentá-lo, irá girá-lo em seus eixos. O último botão, a

ferramenta de escala, serve para aumentar o tamanho ou a escala de um objeto no cenário

(GOLDSTONE, 2009).

A barra Transform Gizmo Toggle possui botões que afetam a Scene View de forma que

altere as setas dos três eixos cartesianos. Os botões Play/Pause/Step servem para controlar a

pré-visualização do jogo na Game View. A combobox Layer Drop-down controla quais

objetos serão visíveis na Scene View, atribuindo nomes a eles. Já a combobox Layout Drop-

down permite alterar / reorganizar a apresentação visual da interface (MANUAL, 2012),

dividindo as telas de acordo com as opções oferecidas, enquanto a aba de visualização de cena

(Scene View) é o local onde todo o projeto é construído na Unity (GOLDSTONE, 2009).

A Unity3D é organizada em torno dos game objects. Segundo Creighton (2010), game

objects são todos os elementos que ajudam a melhorar a aparência do seu jogo (câmeras,

2 Assets são os recursos disponíveis (bibliotecas, imagens) no projeto, e podem ser acessados na

aba Project

Page 7: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

7

luzes, modelos, prefabs3, etc.). Podem ser tanto coisas tangíveis, tais como objetos que o

jogador poderá manipular, ou com os quais ele poderá interagir, como objetos da cena,

personagens, dentre outros, quanto intangíveis, itens que só os desenvolvedores podem

manipular, como câmeras, luzes, partículas. É possível adicionar componentes como scripts,

atributos físicos, efeitos especiais aos game objects, para que eles deixem de ser apenas

simples objetos na cena. São o tipo mais importante de objetos na Unity, ou seja, o

desenvolvimento de jogos com Unity depende do entendimento do conceito de game objects.

A ilustração 6 mostra um cubo como exemplo básico de game object, no caso, um

cubo, em uma cena.

Ilustração 6 - Exemplo básico de game object na Unity.

FONTE: (UNITY, 2012).

Um game object pode receber mais de um componente, por exemplo, um corpo físico,

um collider, que realiza o contato do objeto com outros, gerando ações dependentes dos

scripts utilizados; também pode-se usar um componente de áudio, adicionando um efeito

sonoro ao objeto.

Quando os componentes são adicionados a um game object, podem ser alterados na

aba Inspector quando seu respectivo objeto estiver selecionado, uma vez que passam a ser

propriedades deste objeto.

Já um prefab é um game object reutilizável (WATKINS, 2011), que fica localizado na

aba Project. Quando um prefab é colocado na cena, é criada uma instância do mesmo,

preservando-se o prefab sempre em Project. Essas instâncias adquirem a relação de herança

com o prefab. Em situações em que objetos precisam ser utilizados várias vezes no jogo ou na

cena, o uso de prefab é essencial. Além disso, devido á relação de herança existente entre as

3 Prefab É um conceito utilizado pela Unity que permite instanciar um game object diversas vezes

criando uma relação de herança entre as instâncias e o prefab. Prefabs serão explicados com mais detalhes adiante.

Page 8: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

8

instâncias e o prefab, ao modificar um ou mais atributos do prefab todos os objetos

“herdeiros” são alterados ao mesmo tempo (UNITY, 2012).

A iluminação é crucial para qualquer cena de um jogo. Ela ajuda a perceber os

detalhes de toda a cena, cores de objetos, texturas. Na Unity3D, as luzes podem ser tanto

game objects quanto componentes (MANUAL, 2012).

Projetistas mais experientes conseguem utilizar mais de uma luz em um mesmo local

da cena, garantindo um melhor visual da mesma. Mudar as propriedades de uma luz, como a

cor, o alcance, pode alterar completamente o modo como a cena é visualizada. A ilustração 7

mostra a utilização de dois tipos diferentes de luz na mesma cena.

A Unity oferece quatro tipos de luzes: área, directional, spot e point lights. Area Lights

são usadas na construção de lightmaps4 e, quando utilizadas, são vistas como um retângulo.

Sua iluminação se estende por toda a área deste triângulo. Luzes do tipo directional light são

colocadas muito distantes da cena e afetam todo o cenário. Não importa o posicionamento

onde se encontra a luz direcional, ela sempre tomará todo o cenário, mesmo que esteja

embaixo da cena. A Spot Light é um tipo de iluminação que funciona através de um cone, isto

é, tudo o que estiver dentro deste cone, será iluminado. Já um Point Light (ponto de luz, em

português) ilumina todas as direções com um brilho semelhante, porém este brilho possui um

alcance máximo (MANUAL, 2012).

Ilustração 7 - Exemplo de utilização de mais de uma luz na mesma cena.

FONTE: (UNITY, 2012).

4 Lightmaps são mapas bidimensionais que guardam um tipo de informação, a luz, que quando

usados sob um local do jogo, irá iluminar e/ou escurecer alguns pontos.

Page 9: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

9

Em jogos eletrônicos, as câmeras são essenciais para descrever o mundo para o

jogador. Podem ser colocadas em qualquer parte do jogo, animadas, aplicadas a personagens

ou apenas como objetos da cena (GOLDSTONE, 2009), como mostra a ilustração 8.

Um jogo necessita apenas de uma câmera, embora o uso de mais câmeras possa criar

uma visão para plataformas multi-jogador (WATKINS, 2011), dividindo a imagem em duas

ou mais visualizações, representando a visão de cada jogador. Podem ser usadas, também,

para criar eventos durante o jogo. As câmeras, assim como as luzes, também podem ser tanto

game object quanto um componente.

Ilustração 8 - Exemplo de utilização de câmera na Unity.

FONTE: (UNITY, 2012).

A base geomorfológica de um jogo é o terreno onde ele se desenvolve. Terrenos são

game object que só podem conter texturas e objetos como grama e árvores (WATKINS,

2011). Eles são a base de todo cenário, onde ficarão os objetos, onde o personagem irá se

locomover. A ilustração 9 mostra um exemplo de terreno na Unity.

Ilustração 9 - Exemplo de terreno na Unity.

FONTE: (UNITY, 2012).

Page 10: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

10

Um terreno precisa de um contexto aéreo. As Skyboxes servem para criar um céu para

a cena (WATKINS, 2011), provocando uma impressão mais realística. Na Unity todos os

skyboxes são inanimados.

A ilustração 10 mostra a qualidade da cena provocada pela aplicação de um Skybox.

Ilustração 10 - Exemplo de aplicação de um skybox em uma cena.

FONTE: (VIMALTUTS).

Na construção de qualquer jogo que envolve um ambiente ao ar livre, um editor de

terreno é um requisito obrigatório (GOLDSTONE, 2009). No editor de terrenos da Unity,

pode-se criar ou alterar terrenos e todos os seus componentes, árvores, rochas, plantas e

texturas. Quando um terreno é criado, é adicionado uma toolbar dentro da aba Inspector,

exibida na ilustração 11, logo abaixo.

Ilustração 11 - Terrain Engine.

FONTE: (UNITY, 2012).

Essa ferramenta serve para se trabalhar a superfície (GOLDSTONE, 2009), nivelando,

aumentando ou reduzindo a altura do terreno (ilustração 11). Para aumentar a altura da

superfície marcada pelo pincel da ferramenta, basta clicar no local desejado. Para reduzir a

altura, deve segurar o botão SHIFT e clicar no local desejado.

Page 11: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

11

Ilustração 11 - definição da topologia do terreno.

FONTE: (UNITY, 2012).

Além disso, é possível a definição e uma cobertura vegetal, fornecendo meios para

adicionar, editar ou remover árvores (GOLDSTONE, 2009). Para adicionar novas árvores,

como mostrado na ilustração 12, deve-se clicar em Edit Trees, e, logo após, na opção Add

Trees. Feito isto, basta selecionar o modelo desejado e aplicar no terreno através do pincel. A

Unity vem com dois modelos básicos de árvores. Também é permitido colocar diversos tipos

de árvores no terreno. Na aba Inspector pode se definir a quantidade de árvores que serão

adicionadas por clique, a proximidade de uma árvore para outra e a variação de tamanho e

largura das árvores que serão adicionadas.

Ilustração 12 - Árvores inseridas em um terreno.

FONTE: (PARKER, 2011).

Bastante similar à ferramenta Place Trees, esta opção permite adicionar e editar

detalhes como pedras, plantas e outros tipos de folhagens (GOLDSTONE, 2009).

Page 12: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

12

Cenários aquáticos também são possíveis. A Unity possui vários tipos de água no

pacote Standard Assets (MANUAL, 2012). Os modelos de água presentes são diferentes,

dependendo da versão utilizada.

A única forma de adicionar água ao cenário é localizando-a na aba Project, Standard

Assets, na pasta Water (Basics). Após selecionar o tipo desejado de água, basta arrastá-lo para

a Scene View no local desejado, como mostra a ilustração 13.

Para configurar a escala da água, basta editar os atributos na aba Inspector. Na Unity,

não é possível alterar a forma da água, como para a construção de um rio. Existem vários

plugins para a Unity que realizam esta tarefa, como o Smart Water, que facilita a criação de

água no cenário, definindo efeitos a níveis profissionais em poucos minutos.

Ilustração 13 - Água na Unity Pro.

FONTE: (UNITY, 2012).

Partículas, também usadas em outros meios de entretenimento, como filmes e

animações, são responsáveis por gerar qualquer tipo de efeito especial, como fumaça,

tempestades, chuvas e até explosões. Caracterizam-se como pequenos planos ou outro tipo de

forma (dependendo da configuração de seus atributos), que são emitidos por objetos

(WATKINS, 2011) ou pelo cenário.

O “emissor de partículas” é o responsável por instanciar as partículas na cena

(GOLDSTONE, 2009). Também é o responsável por definir de que forma estas partículas

serão emitidas, sua energia, rotação, direção e velocidade de emissão nos três eixos, além do

seu alcance de emissão.

O “animador de partículas” é responsável por configurar como as partículas reagirão

de acordo com o tempo em que são instanciadas (GOLDSTONE, 2009) e as cores das

partículas que serão exibidas.

Page 13: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

13

A opção Particle Renderer configura a aparência das partículas (GOLDSTONE,

2009). Nessas configurações pode-se alterar a forma da partícula, que inicialmente é um

pequeno cubo, para esferas, ou uma forma alongada, como a usada para executar a chuva no

estudo de caso deste trabalho.

Quando um sistema de partículas é usado próximo a um objeto sólido, as partículas,

por padrão, irão atravessar este objeto. Para evitar que isto ocorra é necessário utilizar o

World Particle Collider. O World Particle Collider é usado para colidir as partículas contra

tudo que possua um corpo físico (MANUAL, 2012). A ilustração 14 mostra um exemplo de

utilização do World Particle Collider:

Ilustração 14 - Exemplo de utilização do World Particle Collider.

FONTE: (UNITY, 2012).

O áudio é um elemento indispensável nos jogos de hoje, pois ajuda a melhorar a

qualidade de animações e dos efeitos especiais, sem contar os diálogos dos personagens.

Segundo Rouse (2005), os áudios fornecem complementos para as cenas. Para lidar com sons,

a Unity precisa de três estruturas: audio clip, audio source e audio listener. Todo som

importado para a Unity fica disponível para os scripts como um Audio Clip. Suporta os

formatos .wav, .mp3, .aif e .ogg, e será utilizado pelo Audio Source para executar o som

(MANUAL, 2012).

O Audio Source é utilizado para reproduzir um som específico no cenário (MANUAL,

2012). Para adicionar um Audio Source, que é um componente, deve-se selecionar este

componente no menu Component, no sub-menu Audio. Suas opções de configuração são

baseadas no Audio Clip, ajustando seu volume, distância da origem do som que será ouvido,

se será tocado em loop, se será escutado apenas quando o jogador passar sobre a zona do

áudio entre outras.

Page 14: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

14

O Audio Listener funciona exatamente como um microfone; sem ele não tem como

ouvir um Audio Source. O melhor local para que este componente seja colocado é como

objeto filho da câmera do jogador, pois para onde o jogador estiver olhando, qualquer som

presente no cenário será captado. (MANUAL, 2012).

Também de extrema importância em um jogo é a forma como o usuário controla e

interpreta os game objects. GUI’s são as formas como o usuário interage com o computador

ou programa. Usuários de computador e web estão muito familiarizados com GUI, e, de fato,

a maioria dos usuários estaria perdida sem ela (WATKINS, 2011). Em jogos, as GUI são as

informações que o jogador visualiza durante o jogo, como quantidade de vida, pontuação,

menus.

Para se adicionar uma GUI, pode-se criá-la através do menu game object -> Create

Other e selecionar o tipo de GUI necessária. Outra opção para criar uma GUI, é utilizá-la

como Component de um game object, selecionando a GUI que será usada no menu

Component, no sub-menu Rendering.

As GUIs podem ser usadas como imagens constantes que o jogador terá, como barra

de vida e outras informações necessárias ao longo do jogo, como mostra a ilustração 15.

Ilustração 15 - Exemplos de GUIs.

FONTE: (UNITY, 2012).

A única forma de adicionar botões GUI é através de códigos. Um bom exemplo de uso

de botões é na construção e no uso de menus antes e durante o jogo. Podem ser usados para

iniciar um novo jogo, carregar um jogo já iniciado, para sair do jogo, modificar suas opções,

entre muitas outras funções.

O código para gerar um GUI button é bem simples e pode ser resumido a uma simples

linha: “if (GUI.Button(Rect(10,70,50,30),"Início"))”.

Page 15: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

15

A Unity fornece, também, suporte nas linguagens JavaScript, C# e Boo (Python). Para

este trabalho, a linguagem C# foi escolhida por ter a possibilidade de criar melhores

funcionalidades para o desenvolvimento e jogabilidade. Os scripts definem as ações do

personagem, sua interação com o ambiente, com os objetos e com todo o jogo, definindo toda

a jogabilidade, transformando o jogo em um único. No menu da ferramenta, em Assets, é

possível criar scripts das três linguagens fornecidas. Estes scripts, quando finalizados, são

aplicados em objetos, de acordo com sua utilidade. Por exemplo, se for um script de interação

do personagem, quando este colidir com certo objeto, deverão ser adicionados N pontos para

o jogador; o script deverá ser aplicado no objeto do personagem.

Para criar um novo script, basta clicar com o botão direito na aba Project, selecionar a

opção Create, e escolher a linguagem desejada.

Ao criar um novo script, este virá com algumas funções já construídas, que são a Start

e a Update. Todo o código contido na função Start só será executado quando o jogo for

iniciado ou o objeto for instanciado. Por sua vez, a função Update é executada a cada quadro

do jogo, isto é, a função é executada constantemente até que as condições do código não

sejam mais necessárias, ou que objeto ao qual o script esteja acoplado não exista mais.

Um Rigidbody é responsável por simular atributos reais aos game objects, como

massa, gravidade, que podem ser vistos na ilustração 16. A utilização de Rigidbody requer

muito processamento, e seu excesso de aplicação pode causar lentidão em um jogo. O uso de

Rigidbody nem sempre é atribuído a todos os game objects de um jogo, como por exemplo,

num jogo onde o personagem segue por um caminho vendo a área ao seu redor, mas sem

poder acessá-la. Neste caso, não há razão de atribuir um Rigidbody aos objetos que o jogador

não poderá alcançar.

Rigidbodies são componentes; logo para aplicar este componente a um game object,

deve ser localizado primeiramente no menu Components, e, na opção de sub-menu Physics,

selecionar o Rigidbody.

Page 16: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

16

Ilustração 16 - Os atributos de Rigidbody.

FONTE: (UNITY, 2012).

A detecção de colisão é a maneira como analisamos nosso mundo 3D para a colisão de

objetos, como estes irão reagir quando um outro objeto colide contra eles. A Unity fornece

diferentes tipo de detecção, sendo um para cada tipo de objeto 3D que ela fornece, como

cubo, cápsula, cilindro, etc. e também fornece o Mesh Collider, que será adaptado para

qualquer forma que tenha o objeto.

Para adicionar o detector de colisão, este deve ser selecionado no menu Component,

através do sub-menu Physics.

Como a Unity não tem suporte para modelagem de objetos 3D, é necessário utilizar

outros softwares, próprios para realizar este tipo de modelagem. Um destes softwares,

bastante recomendado e cada vez crescendo mais no mercado, é o Blender. Existem muitos

livros sobre o Blender no mercado. A Unity possui um suporte muito bom para receber

arquivos feitos no Blender, que quando finalizados, devem ser salvos com a extensão *.blend,

dentro da pasta Assets, localizada na pasta onde se encontra o projeto do jogo. Uma vez que

este arquivo for modificado pelo Blender, contando que o arquivo *.blend esteja corretamente

na pasta Assets, ele será imediatamente modificado na Scene View, da Unity (MANUAL,

2012).

Além de importar objetos de outros softwares, como o Blender, a Unity também

oferece a opção de importar objetos usados em outros projetos feitos também na ferramenta.

Para adicionar objetos de outros projetos, basta alocá-los na pasta Asset do projeto atual

(MANUAL, 2012). Outra forma de adicionar assets de outros projetos é clicar com o botão

Page 17: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

17

direito do mouse na aba Project, selecionar a opção Import New Asset, e, na janela que será

aberta, selecionar o projeto e o objeto que deverá ser importado.

3 CONSIDERAÇÕES FINAIS

Através da realização deste trabalho, foi possível perceber que as game engines são

ferramentas muito úteis, pois agilizam e "simplificam" o processo de desenvolvimento de

jogos. Devido à sua complexidade, seu custo de produção é muito elevado, o que faz com que

algumas empresas optem por adquirir apenas uma dentre as licenças de utilização das game

engines disponíveis no mercado. O uso de game engines, no entanto, não substitui o

conhecimento específico nas áreas abordadas por essas ferramentas, pois a ausência deste

conhecimento limita a equipe de desenvolvimento e a qualidade do produto final às

funcionalidades disponíveis na ferramenta escolhida. Há no mercado diversos tipos de

licenças e preços, que variam de acordo com as funcionalidades disponíveis em cada licença.

Dentre as game engines mais acessíveis, está a Unity 3D, que foi escolhida como objeto

principal de observação deste trabalho.

A Unity 3D, por possuir uma interface prática, com funcionalidades simples e

eficazes, além de apresentar baixo custo em relação a outras engines com funções

semelhantes, é uma boa game engine para qualquer nível de experiência de desenvolvedores,

resultando em ganho de tempo de produção e custo/benefício, além de ter uma excelente

compatibilidade com a ferramenta de modelagem Blender, que complementa a Unity em

questões como a geração de modelos 3D, por exemplo.

Como extensões futuras, sugere-se a exploração mais detalhada de cada

funcionalidade da engine Unity3D, o estudo de outras engines, a implementação de um jogo

completo, bem como um maior aprofundamento das potencialidades da ferramenta de

modelagem gráfica Blender, e no estudo de sotfwares similares. Enfim, o presente trabalho

abre rico espaço para experimentação e estudos no excitante campo do desenvolvimento de

jogos eletrônicos.

REFERÊNCIAS

EBERLY, David H. 3D Game Engine Architecture: Engineering Real-Time Applications

with Wild Magic. Elsevier, 2005.

Page 18: FACULDADE METODISTA GRANBERY - FMGre.granbery.edu.br/artigos/NDkx.pdf · PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos, ferramentas para jogos, máquinas

18

GOLDSTONE, Will. Unity Game Development Essentials. Packt Publishin, 2009.

MANUAL, Unity. Learning the interface. Unity Technologies, 2012. Disponível em: <

http://docs.unity3d.com/Documentation/Manual/LearningtheInterface.html >. Acesso em: 28

de novembro de 2012.

PARKER, Matt Stuattrd. Getting Started with Unity. Active Tuts, 2011. Disponível em: <

http://active.tutsplus.com/tutorials/unity/getting-started-with-unity/ >. Acesso em: 28 de

novembro de 2012.

PRIBERAM. Dicionário Priberam da Língua Portuguesa. Disponível em: <

http://www.priberam.pt/DLPO/default.aspx?pal=motor >. Acesso em: 24 de novembro de

2012.

QUINTELLA, Felipe Ferreira. DWeb3D Um Toolkit para Facilitar a Criação de

Manipulação de Cenas 3D usando X3D. Dissertação de Mestrado PUC Rio. Disponível em:

http://www2.dbd.puc-rio.br/pergamum/tesesabertas/0711281_09_pretextual.pdf. Acesso em

maio de 2012.

UNITY, Technologies. Unity 3D. Unity Technologies, 2012. Disponível em: <

http://unity3d.com/unity/licenses >. Acesso em: 28 de novembro de 2012.

WATKINS, Adam. Creating Games with Unity and Maya: How to Develop Fun and

Marketable 3D Games. 2011.