O termo “game engine” originou-se no meio dadécada de 1990, especialmente em conexão comjogos 3D, comotiro em primeira pessoa. O primeiromotor 3D a ser usado para criar jogos de computador foi oFreescape Engine, desenvolvido pelaIncentive Software em1986, usado para criar jogos de tiro em primeira pessoa a partir de1987.[2] Preços de motores de jogos variam muito, desde a gratuidade e valores baixos, comoUS$ 150,00,[3] até valoresexorbitantes como US$ 31 200,00[4] ou mais caros. O processo de desenvolvimento de jogos é frequentemente agilizado, quando um mesmo motor de jogo é usado para criar diferentes jogos.[5]
A maioria dos motores de jogo são distribuídos em forma deAPI, porém, alguns motores são distribuídos em conjunto de ferramentas, que agilizam e simplificam ainda mais odesenvolvimento do jogo, como por exemplo:IDEs,scripts pré-programados, e programas que “empacotam” e deixam pronto ojogo para distribuição. Esses motores “completos” são chamados deMiddleware, pelo fato de conectar diversossoftwares em um únicosoftware. Pelo fato de serem distribuídos com outras ferramentas, eles suprem a necessidade da compra de outras ferramentas, reduzindo os custos — todos fatores críticos na altamente competitivaindústria de jogos eletrônicos. Como exemplo, pode-se citar:Torque Game Engine,Unity,Blender,CryEngine eUnreal Engine.[5][6]
Um motor de jogo pode ser dividido em duas principais categorias:motor gráfico emotor de física. Motores gráficos lidam com osgráficos, sendo responsáveis de processar dados abstraídos de alto nível e gerar dados de baixo nível entendíveis pelohardware. Como exemplo, pode-se citar:OGRE,Crystal Space eOpenSceneGraph. Motores de física lidam com afísica, sendo responsáveis por simular ações reais, através de variáveis comogravidade,massa,atrito,força eflexibilidade. Como exemplo, pode-se citar:Havok,Bullet eODE.[1]
Apesar da especificidade do nome, motores de jogo são também usados para criar outros tipos de aplicações interativas com gráficos em tempo real, tais como demonstrações, visualizações arquiteturais, simulações de treinamento (como de pilotagem de aeronaves e manuseio de armas), ferramentas de modelagem, simulações físicas para a criação de animações e cenas de filmes realistas.[7]
Motores de jogo fornecemabstração dehardware, permitindo um programador desenvolver jogos sem a necessidade de conhecer a arquitetura daplataforma-alvo, que pode ser umvideogame ou umsistema operacional. Por esse motivo, muitos motores são desenvolvidos a partir de umaAPI existentes, comoOpenGL,DirectX,OpenAL eSDL, ou até mesmo a partir de outro motor, que pode facilitar o seu desenvolvimento. A abstração dehardware também é essencial para o desenvolvimento de motores de jogomultiplataforma.[8][9]
Antes dos gráficos 3D acelerados porhardware, renderizadores porsoftware eram usados. Renderização porsoftware é ainda usada em algumas ferramentas de modelagem e renderizadores de imagens, onde a qualidade gráfica é priorizada, ou quando ohardware não suporta determinada tecnologia, tal como suporte ashaders.[10]
Antes dos motores de jogo, os jogos eram tipicamente escritos como entidades singulares (não havia separação de áreas, como gráfica e física): um jogo para oAtari 2600, por exemplo, tinha que ser planejado do início, mantendo o código o mais simples possível, para fazer uso otimizado dohardware, por causa de suas limitações.[11] Mesmo em plataformas mais favoráveis, muito pouco podia ser reutilizado entre os jogos. O rápido avanço dohardware fez com que a maioria dos códigos tivessem que de qualquer maneira, serem jogados fora posteriormente, como as gerações posteriores de jogos devessem usardesigns completamente diferentes que tomassem vantagem de recursos extras e tecnologias mais novas.[12]
O termo “game engine” originou-se no meio dadécada de 1990, especialmente em conexão com jogos 3D, comotiro em primeira pessoa. Igual como, foi a popularidade dos jogosDoom eQuake, ao invés de construir o jogo do zero, outros desenvolvedores licenciaram os núcleos dos jogos, usando-os como base para seus próprios motores de jogo. Com o amadurecimento, os motores de jogo deixaram de se restringirem ao desenvolvimento de jogos. Eles são usados em outras áreas, como treinamento, uso médico e simulações militares.[13] Apesar do termo ser primeiramente usado nos anos 90, há alguns sistemas nosanos 80 que também são considerados motores de jogos, tais comoSierra's AGI eSCI Systems,LucasArts' SCUMM eIncentive Software's Freescape Engine. Entretanto, diferente da maioria dos motores de jogo modernos, esses motores de jogo nunca foram usados em quaisquer produtos de terceiros, com exceção doSCUMM System que foi licenciado e usado paraHumongous Entertainment. O primeiromotor 3D a ser usado para criar jogos de computador foi oFreescape Engine, desenvolvido pelaIncentive Software em1986, usado para criar jogos de tiro em primeira pessoa a partir de1987.[2]
Apesar de já serem criados jogos muito antes da criação de APIs comoDirectX eOpenGL, a criação dos mesmos impulsionou a evolução das tecnologias usadas nos jogos e ajudou a desenvolver esse mercado.[8] A primeira versão do DirectX foi lançada em30 de setembro de1995 como a Windows Games SDK. Ele foi o componente daWin32 API que substituiu a DCI[14] e WinG doWindows 3.1. Depois de criado, o DirectX permitiu todas as versões doMicrosoft Windows, iniciando com oWindows 95, a incorporar multimídia de alto desempenho. Eisler escreveu sobre a loucura para construir o DirectX 1 até o 5 em seu blog.[15] Apesar do OpenGL ter sido criado primeiro (janeiro de1992), o DirectX teve (e ainda tem) mais aceitação na área de desenvolvimento de jogos.[16]
Por muito tempo, as companhias fizeram seus próprios motores de jogo. Com o passar dos anos, o custo de se fazer motores de jogo cresceu muito, e por esse motivo, várias companhias começaram a se especializar em construir motores de jogo, ou componentes de motores, para vender para outras companhias. É muito caro (e demorado) para uma companhia ter que produzir seu próprio motor de jogo para depois construir o jogo.[5]
Motores de jogo modernos são umas das aplicações mais complexas já escritas. A contínua evolução dos motores de jogo tem criado uma forte separação entre renderização,scripting, arte, edesign de níveis. Atualmente, por exemplo, é comum para um típico time de desenvolvimento de um jogo ter muitos artistas quanto programadores.[17] Como a maioria dos jogos 3D estão, cada vez mais, se limitando ao poder daGPU ePPU, as perdas de desempenho daslinguagens de programação de alto nível, comoC#,Java ePython, deixam de ser válidas, enquanto os ganhos de produtividade oferecidos por essaslinguagens trabalham em benefício dos desenvolvedores de motores de jogo.[18][19]
Um bom e conhecido subconjunto de motores de jogo são os motores detiro em primeira pessoa 3D. Enquanto jogos deestratégia em tempo real esimuladores de voo apostam na qualidade gráfica, jogos deste gênero apostam naação. O motor mais conhecido deste gênero é oDoom. Motores de tiro em primeira pessoa são importantes pois marcam o início da criação e uso de motores de jogo na história. O primeiro motor 3D a ser usado para criar jogos de computador foi oFreescape Engine, desenvolvido pelaIncentive Software em 1986, usado para criar jogos de tiro em primeira pessoa a partir de 1987.[2]
As melhorias em GPUs comoShader Model 3 eShader Model 4, possibilitou melhorias em efeitos gráficos. A partir de2009, duas evoluções dos principais motores existentes foram anunciadas:id Tech 5 (que foi usado pela primeira vez comRage, e conta com uma nova tecnologia chamadaVirtual Texturing),[23] e oCryEngine 3, que foi usado na criação deCrysis 2.
Poucas empresas têm discutido os planos para o futuro de seus motores, porém, o id Tech 6, eventual sucessor do id Tech 5, é uma exceção. Informações preliminares sobre esse motor que ainda está em fases iniciais de desenvolvimento tendem a mostrar que aid Software está olhando para uma direção onderay tracing e gráficosraster clássicos se misturam.[24] No entanto, de acordo comJohn Carmack, ohardware capaz de aproveitar os recursos do id 6 Tech ainda não existe.[25]
Ele irá funcionar através da renderização dageometria representada porvoxels (em vez de triângulos) armazenados em umaoctree. John Carmack afirma que este formato também será uma maneira mais eficiente para armazenar os dados em 2D, bem como os dados de geometria 3D, por não ter problemas com armazenamento.[24] Ele irá virtualizar a geometria, como as texturas são virtualizados.[26]
↑abc«Freescape Engine» (em inglês). www.uvlist.net. Consultado em 14 de outubro de 2011
↑ab«Torque Game Engine (engine)» (em inglês). devmaster.net. 30 de setembro de 2011. Consultado em 17 de dezembro de 2011. Arquivado dooriginal em 2 de dezembro de 2011
↑ab«Q Engine (engine)» (em inglês). devmaster.net. 6 de agosto de 2004. Consultado em 17 de dezembro de 2011. Arquivado dooriginal em 2 de outubro de 2015
↑abcJeff Ward (29 de abril de 2008).«What is a Game Engine?» (em inglês). www.gamecareerguide.com. Consultado em 14 de outubro de 2011
↑John O'Neill (15 de janeiro de 2008).«O Real Custo de Middlewares» (em inglês). www.gamedaily.com. Consultado em 5 de abril de 2010. Arquivado dooriginal em 30 de agosto de 2009
↑Mihail Ivanchev; Hans Thörnquist (19 de outubro de 2003).«Software Rendering School: Part I» (em inglês). www.devmaster.net. Consultado em 17 de abril de 2010. Arquivado dooriginal em 16 de junho de 2010A referência emprega parâmetros obsoletos|coautores= (ajuda)
↑Mugunth Kumar (2 de março de 2008).«C# vs C/C++ Performance» (em inglês). Consultado em 9 de novembro de 2013
↑«Bastion FAQ» (em inglês). Supergiant Games. Consultado em 27 de julho de 2013
↑Moore, Michael E.; Novak, Jeannie (2010).Game Industry Career Guide (em inglês). [S.l.]: Delmar: Cengage Learning.ISBN1-4283-7647-X !CS1 manut: Nomes múltiplos: lista de autores (link)