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.

 

Compartilhe a Cidade

Comments

comments

  • Sec. Brunno Ellias

    Esclarecedor. Tinha problemas para explicar o que é game engine, mas sua maneira de “estrutura virtual, lógica, e não palpável” ficou excelente. Parabéns pelo texto!

  • vinicius maciel

    fantástico o texto, super explicativo e com vários detalhes, ao mesmo tempo que é simples de entender

  • Thyago Athayde

    As engines realmente são uma mão na roda para o desenvolvimento de games! O nível de abstração alcançado com o uso das engines possibilita um aumento significativo na produtividade da equipe de produção! 😀

    E se você leu, gostou do assunto, mas não tem conhecimento necessário para uma engine e produzir seu game. Procure por Game Makers como Multimedia Fusion, RPG Maker, que são ferramentas com um nível de abstração tão grande que torna a tarefa de criar um game praticamente algo intuitivo. Lembre-se de que estamos falando de games simples, não pense que com um Game Maker fará um Halo, God of War ou um Mass Effect.

  • Diego Santos

    Fico muito feliz em ser colega do McLeary aqui na Fábrica Gamer. Explicação simples e fácil para entender o que é Game Engine. Adorei.

    E como o Thyago disse acima, para quem quiser brincar um pouco com engines, usar Game Makers é muito divertido. Lembro-me de ficar brincando no RPG Maker. Pena que nenhum jogo chegou ao fim. 🙁

    • A quantidade de idéias e possibilidades realmente fazia com que nos perdêssemos e com isso muitos dos nossos RPGs do RPG maker nunca viram a luz do dia.

      • Diego Santos

        Mas o meu principal projeto,q ue era um RPG de Sonic, eu tenho o meu "Game Design Document" até hoje e inclusive alguns materiais de arte.

        O que faltou mesmo foi mão de obra interessada. Mas quem sabe um dia eu retomo.

  • MickaelSM

    Vocês da Cidade Gamer estão de parabéns. Estou vendo bons textos que me acrescentaram boas informações.

    Falando sobre o início do uso das engines, lembrei da história de um livro que estou lendo, o "Masters of Doom", na parte que conta como John Carmack, um dos criadores do Doom, fez o Wolfenstein 3D. A engine fazia todo o trabalho de criar as tiles e personagens na memória e exibí-los parte por parte e tentar economizar nos processamentos do computador (foi mais ou menos o que entendi :P)

    Abraços.