Motores de Jogos (Game Engine)
Motor de jogo (game engine ou apenas engine) é um programa de computador e/ou conjunto de bibliotecas para simplificar e abstrair o desenvolvimento de jogos. A funcionalidade tipicamente fornecida por um motor de jogo inclui: um motor gráfico para renderizar gráficos 2D e/ou 3D, um motor de física para simular a física, uma linguagem de script, suporte a animação, sons, inteligência artificial, networking, e outros.
Os motores procuram simplificar a utilização de funções bastantes utilizadas no desenvolvimento de um jogo. Um motor é composto de sub-sistemas que controlam determinadas partes das funções comuns dos jogos. A maioria dos jogos possuem os seguintes sub-sistemas como os descritos a seguir:
- Núcleo Gráfico: são as funções necessárias para desenhar os elementos gráficos na tela, animações, janelas, etc. Porém, desenvolver um núcleo gráfico geral que suporte tudo que é necessário não é uma tarefa fácil. Algumas das funções mais básicas que podem ser listadas são texturas, animações, fontes e câmera.
- Núcleo de Entrada: são as funções para capturar informações do usuário provindas de dispositivos tais quais mouse, teclado, joystick, etc.
- Núcleo de Som: responsável por tratar as funções para a trilha sonora do jogo e demais sons.
- Núcleo do Sistema: responsável pelos detalhos da criação de janela, gerenciamento do estado do jogo e dos processos do jogo. De qualquer forma, a organização do núcleo dependerá do projeto do jogo.
A maioria dos motores de jogo são distribuídos em forma de API, porém, alguns motores são distribuídos em conjunto de ferramentas que agilizam e simplificam ainda mais o desenvolvimento do jogo, como por exemplo: IDEs, scripts pré-programados, e programas que “empacotam” e deixam pronto o jogo para distribuição. Esses motores "completos" são chamados de Middleware. Pelo fato de serem distribuídos com outras ferramentas, eles suprem a necessidade da compra de outras ferramentas, reduzindo os custos. Como exemplo, pode-se citar: Blender, Gamebryo, Havok, RAD Game Tools, RenderWare e, Unreal Engine.
O termo "game engine" originou-se no meio da década de 1990, especialmente com os jogos 3D de tiro em primeira pessoa. Foi a popularidade de jogos como o Doom e o Quake que alavancou a utilização dos motores. Ao invés de construir o jogo do zero, outros desenvolvedores licenciaram os núcleos dos jogos, usando eles como base para seus próprios motores de jogo.
A classificação de bom motor é bastante exigente, pois o que é considerado avançado em um ano, no ano seguinte pode ser considerado padrão. É comum serem criados novos motores com base em velhos motores, agregamdp novas funções e mantendo algumas antigas. Quando um motor mantém desenvolvimento focado nos gráficos, o jogo pode perder, no requisito ação. Um bom exemplo disto é o jogo CellFactor: Revolution, que teve seu desenvolvimento parado; o jogo agora está disponível para baixa completa e gratuita.
Vantages da utilização de motores de jogos
Existem algumas vantagens visíveis para a utilização dos motores de jogos. A seguir são listadas algumas delas:
- Um motor de jogos pode simplificar o desenvolvimento dos jogos. A utilização de chamadas à bibliotecas que executam funções que facilitam ao desenvolvedor como por exemplo uma função de desenhar imagens que pode abstrair diversas operações que de outra forma seriam necessárias.
- Um motor de jogos pode deixar seu jogo mais portável. Dessa forma, você pode portar seu jogo mais facilmente para outra biblioteca gráfica ou até outra plataforma. Para isso, você apenas modifica as chamadas as bibliotecas gráficas que estão sendo utilizadas na própria engine, sem qualquer modificação ou com o mínimo possível de modificações no jogo propriamente dito. Portar apenas o motor do jogo para outra biblioteca ou plataforma deixa o trabalho mais simples.
- Um motor de jogos provê uma organização e gerencialmento do código. Novas funcionalidades podem ser agregadas ao motor do jogo facilmente.
- O motor de jogos auxilia na abstração do trabalho e para o desenvolvedor do jogo não precisar se preocupar com detalhes de baixo nível. Quando se desenvolve um jogo, o desenvolvedor não quer se preocupar com um conjunto de configurações que deve ser perfeitamente configurada para o desenvolvimento, ou mesmo não quer ter que se preocupar em chamar diversas funções para ler um arquivo de som ou imagem ou outros recursos. Ao desenvolver um jogo utilizando um motor de jogos, torna-se apenas necessário saber trabalhar com o motor, que é normalmente mais simples e de pensamento de mais auto nível.
[voltar]