Como desenvolver jogos com o Unity 3D
Este artigo descreve os conceitos inicias para o desenvolvimento de jogos utilizando o motor de jogos (game engine) intitulado Unity 3D, utilizando a conhecida C# como umas das linguagens de programação disponíveis para a criação de scripts.
Este tema é útil, pois oferece uma alternativa para a criação de jogos electrónicos, com o intuito de apresentar também a lógica de programação utilizada na criação dos mesmos. https://www.youtube.com/embed/5zWwR2UJwJE
O Unity 3D é um software que possibilita o desenvolvimento de jogos. Assim como toda game engine, ele facilita o desenvolvimento de jogos pelo fato de não necessitar programar diretamente para DirectX ou OpenGL, pois ele executa isso automaticamente. O Unity pode fazer jogos para produtos da Apple (Mac, iPhone, iPod, iPad), da Microsoft (Xbox, Windows), da Google (dispositivos com Android), da Sony (Playstation 3), da Nintendo (Wii) e para navegadores Web (Internet Explorer, Mozilla Firefox, Google Chrome, Opera e Safari).
Além desta portabilidade, o Unity possui uma grande quantidade de ferramentas sendo fácil de trabalhar, a interface é bastante amigável. Possui uma ferramenta de scripts baseada no Mono (ferramenta para desenvolver e executar aplicações .NET em diferentes plataformas), possibilitando a programação em C#, UnityScript e Bool.
O Unity também permite a criação de Shaders com a linguagem SharderLab, Cg da NVidia, GLSL para o OpenGL e trabalha também com Shader Mode. O subsistema de simulação física é o PhysX, também da NVidia. Também utiliza bibliotecas Direct X, Open GL para renderização 3D e OpenAL para áudio.
Outro ponto forte do Unity é a importação de arquivos. Ele importa em vários formatos, tanto 2D quanto 3D, o que exclui o trabalho de ter que exportar alguma arte antes de importar na Unity. Ela aceita os arquivos dos seguintes programas:
- Blender: .blend;
- Autodesk 3DS Max: .max;
- Autodesk Maya: .mb or .ma;
- Maxon CINEMA 4D: .c4d;
- Cheetah3D: .jas;
- Luxology Modo 3D: .lxo – a partir do modo 501;
- NewTek LightWave: é necessário exportar para .fbx utilizando o plugin para exportar para fbx do LightWave.
Unity também lê arquivos .FBX, .dae, .3DS, .dxf, .obj e também aceita o .collada. Para arquivos de textura (arquivos 2D) ela aceita os formatos: PSD, TIFF, JPG, TGA, PNG, GIF, BMP, IFF, PICT.
O motor gráfico do Unity 3D utiliza Direct3D (Windows, Xbox 360), OpenGL (Mac, Windows, Linux, PS3), OpenGL ES (Android, iOS) e APIs proprietárias (Wii). Há suporte para mapeamento de relevo, mapeamento de reflexão, mapeamento de parallax, ambient occlusion (SSAO), sombras dinâmicas usando mapas de sombra, render-to-texture e efeitos de pós-processamento.
O Unity suporta conteúdo de arte e formatos de arquivos de 3ds Max, Maya, Softimage, Blender, modo, ZBrush, Cinema 4D, Cheetah3D, Adobe Photoshop, Adobe Fireworks e substância Allegorithmic. Esses assets podem ser adicionados ao projeto de jogo, e utilizados através da interface gráfica da Unity.
A linguagem ShaderLab é usada para shaders, escritos em GLSL e Cg. Um shader pode incluir múltiplas variantes e uma especificação fallback declarativa, permitindo que a Unity detecte a melhor variante para a placa de vídeo atual.
A partir do Unity 4.2, foi adicionado à versão free sombras em tempo real para luzes direcionais e também foi adicionado suporte ao DirectX11, o que dá às sombras uma resolução perfeita dos pixels, texturas para criar objetos 3D a partir de tons de cinza, gráficos, animações faciais mais suaves e um impulso para o frames per second.
A engine também conta com o Unity Asset Server – uma solução de controle de versão para os assets e scripts. Ele usa PostgreSQL como um backend, um sistema de áudio construído sobre a biblioteca FMOD (com capacidade de reprodução de áudio Ogg Vorbis comprimido), reprodução de vídeo usando o Theora codec, um motor de terreno e vegetação (que suporta Tree Billboarding, Occlusion Culling com Umbra), lightmapping embutido e iluminação global com Beast, rede multijogador usando RakNet, e pathfinding mesh navigation embutido.
Além disso, ela também foi construída com suporte para a engine de física Nvidia PhysX (a partir da Unity 3.0) com suporte adicional para a simulação de tecido em tempo real, raycasts e camadas de colisão.
O Unity3D além dessas características é free, apesar de ter a versão Pro.