Motor de jogo
Motor de jogo, também conhecido pelo termo em inglês, game engine, ou simplesmente engine, é um programa de computador e/ou conjunto de bibliotecas, para simplificar e abstrair o desenvolvimento de jogos eletrônicos ou outras aplicações com gráficos em tempo real, para videogames e/ou computadores rodando sistemas operacionais. As funcionalidades tipicamente fornecidas por um motor de jogo incluem: um motor gráfico para renderizar gráficos 2D e/ou 3D; um motor de física para simular a física ou simplesmente para fazer detecção de colisão; suporte a animação; sons; inteligência artificial; networking; gerência de memória; gerência de arquivos; gerência de linha de execução; suporte a grafos de cena e entidades; e suporte a uma linguagem de script.[1]
O termo “game engine” originou-se no meio da década de 1990, especialmente em conexão com jogos 3D, como tiro em primeira pessoa. O primeiro motor 3D a ser usado para criar jogos de computador foi o Freescape Engine, desenvolvido pela Incentive Software em 1986, usado para criar jogos de tiro em primeira pessoa a partir de 1987.[2] Preços de motores de jogos variam muito, desde a gratuidade e valores baixos, como US$ 150,00,[3] até valores exorbitantes 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]
Definição
[editar | editar código-fonte]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 conectar diversos softwares em um único software. 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 competitiva indústria de jogos eletrônicos. Como exemplo, pode-se citar: Torque Game Engine, Unity, Blender, CryEngine e Unreal Engine.[5][6]
Um motor de jogo pode ser dividido em duas principais categorias: motor gráfico e motor de física. Motores gráficos lidam com os gráficos, sendo responsáveis de processar dados abstraídos de alto nível e gerar dados de baixo nível entendíveis pelo hardware. Como exemplo, pode-se citar: OGRE, Crystal Space e OpenSceneGraph. Motores de física lidam com a física, sendo responsáveis por simular ações reais, através de variáveis como gravidade, massa, atrito, força e flexibilidade. Como exemplo, pode-se citar: Havok, Bullet e ODE.[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]
Abstração de hardware
[editar | editar código-fonte]Motores de jogo fornecem abstração de hardware, permitindo um programador desenvolver jogos sem a necessidade de conhecer a arquitetura da plataforma-alvo, que pode ser um videogame ou um sistema operacional. Por esse motivo, muitos motores são desenvolvidos a partir de uma API existentes, como OpenGL, DirectX, OpenAL e SDL, ou até mesmo a partir de outro motor, que pode facilitar o seu desenvolvimento. A abstração de hardware também é essencial para o desenvolvimento de motores de jogo multiplataforma.[8][9]
Antes dos gráficos 3D acelerados por hardware, renderizadores por software eram usados. Renderização por software é ainda usada em algumas ferramentas de modelagem e renderizadores de imagens, onde a qualidade gráfica é priorizada, ou quando o hardware não suporta determinada tecnologia, tal como suporte a shaders.[10]
História
[editar | editar código-fonte]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 o Atari 2600, por exemplo, tinha que ser planejado do início, mantendo o código o mais simples possível, para fazer uso otimizado do hardware, 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 do hardware 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 usar designs completamente diferentes que tomassem vantagem de recursos extras e tecnologias mais novas.[12]
O termo “game engine” originou-se no meio da década de 1990, especialmente em conexão com jogos 3D, como tiro em primeira pessoa. Igual como, foi a popularidade dos jogos Doom e Quake, 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 nos anos 80 que também são considerados motores de jogos, tais como Sierra's AGI e SCI Systems, LucasArts' SCUMM e Incentive 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 do SCUMM System que foi licenciado e usado para Humongous Entertainment. O primeiro motor 3D a ser usado para criar jogos de computador foi o Freescape Engine, desenvolvido pela Incentive Software em 1986, usado para criar jogos de tiro em primeira pessoa a partir de 1987.[2]
Apesar de já serem criados jogos muito antes da criação de APIs como DirectX e OpenGL, 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 em 30 de setembro de 1995 como a Windows Games SDK. Ele foi o componente da Win32 API que substituiu a DCI[14] e WinG do Windows 3.1. Depois de criado, o DirectX permitiu todas as versões do Microsoft Windows, iniciando com o Windows 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 de 1992), 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, e design 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 da GPU e PPU, as perdas de desempenho das linguagens de programação de alto nível, como C#, Java e Python, deixam de ser válidas, enquanto os ganhos de produtividade oferecidos por essas linguagens trabalham em benefício dos desenvolvedores de motores de jogo.[18][19]
Preços de motores de jogos variam muito, desde a gratuidade e valores baixos, como US$ 150,00,[3] até valores exorbitantes como US$ 31 200,00[4] ou mais caros. A indústria de jogos eletrônicos tem constantemente se expandido. O lucro dessa indústria, em 2007, foi de US$ 9,5 bilhões, ultrapassando a indústria cinematográfica.[20] A receita bruta em 2007 alcançou US$ 18,8 bilhões,[21] e dez anos depois, em 2017, alcançou US$ 36 bilhões.[22]
Motores de tiro em primeira pessoa
[editar | editar código-fonte]Um bom e conhecido subconjunto de motores de jogo são os motores de tiro em primeira pessoa 3D. Enquanto jogos de estratégia em tempo real e simuladores de voo apostam na qualidade gráfica, jogos deste gênero apostam na ação. O motor mais conhecido deste gênero é o Doom. 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 o Freescape Engine, desenvolvido pela Incentive Software em 1986, usado para criar jogos de tiro em primeira pessoa a partir de 1987.[2]
As melhorias em GPUs como Shader Model 3 e Shader Model 4, possibilitou melhorias em efeitos gráficos. A partir de 2009, duas evoluções dos principais motores existentes foram anunciadas: id Tech 5 (que foi usado pela primeira vez com Rage, e conta com uma nova tecnologia chamada Virtual Texturing),[23] e o CryEngine 3, que foi usado na criação de Crysis 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 a id Software está olhando para uma direção onde ray tracing e gráficos raster clássicos se misturam.[24] No entanto, de acordo com John Carmack, o hardware capaz de aproveitar os recursos do id 6 Tech ainda não existe.[25]
Ele irá funcionar através da renderização da geometria representada por voxels (em vez de triângulos) armazenados em uma octree. 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]
Ver também
[editar | editar código-fonte]- Lista de motores de jogo
- Ciência da computação
- Computação gráfica
- Desenvolvimento de jogos eletrônicos
- DirectX
- Editor de mapas
- Jogo eletrônico
- Linguagem de programação
- Linguagem de script
- Motor de física
- Motor gráfico
- OpenGL
- Programação de jogos eletrônicos
- SDL (biblioteca)
- Sistema de câmeras virtuais
- Sistema de criação de jogos
- Vulkan
- WebGL
- ↑ a b Brandon Boyer (22 de fevereiro de 2007). «Serious Game Engine Shootout» (em inglês). Gamasutra. Consultado em 7 de abril de 2010
- ↑ a b c «Freescape Engine» (em inglês). www.uvlist.net. Consultado em 14 de outubro de 2011
- ↑ a b «Torque Game Engine (engine)» (em inglês). devmaster.net. 30 de setembro de 2011. Consultado em 17 de dezembro de 2011. Arquivado do original em 2 de dezembro de 2011
- ↑ a b «Q Engine (engine)» (em inglês). devmaster.net. 6 de agosto de 2004. Consultado em 17 de dezembro de 2011. Arquivado do original em 2 de outubro de 2015
- ↑ a b c Jeff 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 do original em 30 de agosto de 2009
- ↑ «Pesquisa no uso de Middlewares em jogos» (PDF) (em inglês). Consultado em 5 de abril de 2010. Arquivado do original (PDF) em 17 de outubro de 2013
- ↑ a b «Direct3D» (em inglês). Consultado em 14 de outubro de 2011
- ↑ «What is HAL (Hardware Abstraction Layer)» (em inglês). www.geek.com. Consultado em 9 de novembro de 2013
- ↑ 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 do original em 16 de junho de 2010
- ↑ Nick Bensema. «Atari 2600 Programming Page» (em inglês). www.io.com. Consultado em 17 de abril de 2010. Arquivado do original em 10 de abril de 2010
- ↑ Artur Carsten (3 de abril de 2010). «Uma visão crítica sobre o passado, presente e futuro do PC». www.campominado.com.br. Consultado em 17 de abril de 2010. Arquivado do original em 12 de abril de 2010
- ↑ «Video games starting to get serious» (em inglês). Consultado em 14 de outubro de 2011
- ↑ «O que é DCI?» (em inglês). Consultado em 5 de abril de 2010
- ↑ «Postagem no blog de Craig Eisler sobre a loucura para construir o DirectX 1 até o 5» (em inglês). Consultado em 5 de abril de 2010. Arquivado do original em 11 de julho de 2012
- ↑ «OpenGL 3 & DirectX 11: A Guerra Acabou» (em inglês). Consultado em 5 de abril de 2010
- ↑ «Estudo da Composição de Times de Desenvolvimento de Jogos» (em inglês). Consultado em 5 de abril de 2010
- ↑ 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. ISBN 1-4283-7647-X
- ↑ «Computer and Video Game Industry Reaches $18.85 Billion in 2007» (em inglês). The Entertainment Software Association. 24 de janeiro de 2008. Consultado em 22 de março de 2018
- ↑ «US Video Game Industry Revenue Reaches $36 Billion in 2017» (em inglês). The Entertainment Software Association. 18 de janeiro de 2018. Consultado em 22 de março de 2018
- ↑ J.M.P. van Waveren (12 de agosto de 2009). «id Tech 5 Challenges: From Texture Virtualization to Massive Parallelization» (PDF) (em inglês). s09.idav.ucdavis.edu. Consultado em 15 de outubro de 2011
- ↑ a b Ryan Shrout (12 de março de 2008). «John Carmack on id Tech 6, Ray Tracing, Consoles, Physics and more» (em inglês). PC Perspective. Consultado em 15 de outubro de 2011
- ↑ Norman Chan (31 de julho de 2008). «QuakeCon 08: id Tech 6 Will Utilize Hardware That "Doesn't Exist Right Now"; Next-Gen Will Still Be Polygon-Based» (em inglês). Maximum PC. Consultado em 15 de outubro de 2011
- ↑ Will Smith (15 de julho de 2008). «E3 2008: The John Carmack Interview. Rage, id Tech 6, Doom 4 Details, and More! - Page 2» (em inglês). Maximum PC. Consultado em 15 de outubro de 2011
Ligações externas
[editar | editar código-fonte]- «Engines - Devmaster» (em inglês). Lista de motores de jogo código aberto e comerciais
- «GameMiddleware.org» (em inglês). Lista de motores de jogo diponíveis para uso comercial
- «Terrain in Games» (em inglês). Visão geral de renderização de terrenos em motores de 1997 a 2000