Entendendo um Game Engine

 

Games, independentes da plataforma, são, em sua essência, softwares interativos. Para construir qualquer tipo de software, normalmente o desenvolvedor faz uso de alguma ferramenta que facilite esse trabalho. No caso dos games não é diferente. A ferramenta usada no auxílio ao desenvolvimento de games é o game engine.

A palavra engine significa motor, e é definida pelo dicionário da Apple como “máquina com partes que se movimentam que converte energia em movimento”. Um game engine, portanto, é uma máquina que faz o game andar. Essa máquina no entanto não é física (palpável), mas lógica (virtual). Um game engine (daqui pra frente chamado somente de engine) é uma ferramenta utilizada para criação e desenvolvimento de games. Um engine é composto por vários componentes, cada um responsável por fazer uma tarefa relacionada ao game. Dentre esses componentes, encontramos alguns como, renderização (desenho na tela), áudio, inteligência artificial, mecânica, física, animações etc. Esses componentes são muitas vezes chamados de subengines e possuem uma complexidade singular. Uma engine, no entanto, normalmente não fornece ferramentas para criação de conteúdo, como objetos, personagens, animações e texturas, por exemplo. Isso normalmente é feito por algum outro programa especialista nessa função, como 3dsMax, Maya, ZBrush, Photoshop entre outros.

 

O termo game engine surgiu em meados dos anos de 1990 devido a explosão dos jogos 3D, principalmente do gênero FPS. Um exemplo de jogo que foi produzido nessa época é o Quake, que ao invés de ser sido construído do zero, trouxe o conceito do game asset. Assim, a equipe podia fazer uso de coisas prontas evitando o retrabalho, e quem gerenciava esses assets era a engine usada, no caso, a Quake Engine. Antes das engines, games eram fabricados no modo hard-core. O programador tinha que construir o game do zero, de maneira a usar somente os recursos que a plataforma disponibilizava. Eram comum games inteiros serem feitos por uma ou duas pessoas no máximo. Essas pessoas, no entanto, tinham que entender o funcionamento da plataforma nos mínimos detalhes, ou não conseguiriam colocar o seu game para rodar. Com o aumento significativo no custo dos games, equipes inteiras trabalham na concepção e desenvolvimento. Uma engine deve, de preferência, ser preparada para trabalhar nesse tipo de ambiente.

 

Hoje em dia, para ser considerado um engine, um software de construção de games deve fornecer ferramentas visuais que auxiliem esse desenvolvimento. Um exemplo de engine completo, que tem ganhado muito espaço, principalmente entre os desenvolvedores indies é a Unity.

Por se tratar de uma engine completa e que pode ser usada de graça, tem ganhado bastante visibilidade e adeptos. Apesar de ferramentas assim existirem, alguns desenvolvedores optam por fazer seu próprio engine. Um exemplo é Tommy Refenes, desenvolvedor do jogo Super Meat Boy, que declarou em uma entrevista ao site Gamasutra: “Meus amigos da FlashBang tentam empurrar a Unity pela minha garganta toda que converso com eles, mas eu mantenho minha decisão de fazer minhas próprias ferramentas e engine.”. É um opção que pode ser tomada por qualquer um, mas é recomendável somente para desenvolvedores experientes. Fazer uma engine é um trabalho complexo e demorado.

 

Duas das engines mais conhecidas no mercado de jogos são a Unreal Engine da Epic Games e a CryEngine, da Crytek. A Unreal Engine, também conhecida como UDK, é usada na série Unreal, Gears of War, Mass Effect, Batman – Arkhran Asylum entre outros. A CryEngine ficou famosa pelos altos requisitos computacionais exigidos pelo jogo Crysis. Uma engine muito conhecida também é a Source Engine, da Valve, usada na série Half-Life 2, Portal e Team-Fortress. Apesar de ser relativamente antiga (2004), ainda está sendo usada em jogos atuais e com resultados muito bons, vide exemplo de Portal 2.  Existem também opções de engines open-source, como é o caso da IrrLicht. Uma lista com alguns jogos completos feitos usando IrrLicht está disponível no próprio site.

 

A maioria das engines é normalmente construída pensando em um gênero de game. Apesar de, em teoria, ser possível fazer qualquer tipo de jogo na UDK, por exemplo, ela se sai muito melhor em games do gênero FPS, já que ela foi construída para fazer games desse tipo. Esse tipo de especialidade, as vezes, pode ser facilmente notada em alguns títulos, a exemplo de Fallout 3 e The Elder Scrolls IV: Oblivion, ambos feitos pela Bethesda Studios usando a Gamebryo Engine. Esses dois jogos foram feitos pela mesma empresa e usando a mesma engine. Games de mesmo gênero e mesma jogabilidade, mudando ambientação e história. Era de se esperar que, para evitar re-trabalho, a empresa iria usar tudo o que pudesse de um game para outro. As similaridades entre Oblivion e Fallout 3 podem ser conferidas no vídeo a seguir.

Dentre as sub-engines que compõe uma engine, existem as engines de física, cujos expoentes máximos são o PhysX da NVIDIA e Havok Physics, da Havok. Engines de áudio incluem o OpenAL, que é open-source e irrKlang, que faz parte da irrLicht mas pode ser usada separadamente e sem custo para aplicações não comerciais.

Uma lista enorme dos componentes de uma game engine completa poderia ocupar facilmente várias páginas e em somente um post não é possível passar por tudo. Esta foi uma conversa inicial sobre o mundo das game engines, nos próximos posts, tentarei falar de algumas engines com mais profundidade, seus recursos, vantagens e desvantagens.

 

Gamer e entusiasta de novas tecnologias, caiu na Cidade Gamer de para-quedas onde espera poder contribuir para o desenvolvimento sustentável das moradas pixeladas.

Compartilhe a Cidade

Comments

comments