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 [email protected]. *2 Mestre em Ciência da Computação, UNICAMP, [email protected]. Granbery, 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. 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 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) 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) 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 Dropdown 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 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. 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. 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). 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. 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). 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. 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. 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"))”. 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. 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 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. 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.