Saltar para o conteúdo

Motor de jogo

Este é um artigo bom. Clique aqui para mais informações.
Origem: Wikipédia, a enciclopédia livre.
JogoYo Frankie!,sendo desenvolvido noBlender

Motor de jogo,também conhecido pelo termo eminglês,game engine,ou simplesmenteengine,é umprograma de computadore/ou conjunto debibliotecas,para simplificar eabstrairodesenvolvimento de jogos eletrônicosou outras aplicações com gráficos em tempo real, paravideogamese/ou computadores rodandosistemas operacionais.As funcionalidades tipicamente fornecidas por um motor de jogo incluem: ummotor gráficopararenderizargráficos2De/ou3D;ummotor de físicapara simular a física ou simplesmente para fazerdetecção de colisão;suporte aanimação;sons;inteligência artificial;networking;gerência dememória;gerência de arquivos; gerência delinha de execução;suporte agrafos de cenaeentidades;e suporte a umalinguagem descript.[1]

O termo “game engine”originou-se no meio dadécada de 1990,especialmente em conexão comjogos3D, comotiro em primeira pessoa.O primeiromotor 3Da ser usado para criar jogos de computador foi oFreescape Engine,desenvolvido pelaIncentive Softwareem1986,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é valoresexorbitantescomo 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]

Simulação de uma parede de blocos sendo destruída, usando omotor de físicaBullet

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,scriptspré-programados, e programas que “empacotam” e deixam pronto ojogopara distribuição. Esses motores “completos” são chamados deMiddleware,pelo fato de conectar diversossoftwaresem 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,CryEngineeUnreal Engine.[5][6]

Um motor de jogo pode ser dividido em duas principais categorias:motor gráficoemotor 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 SpaceeOpenSceneGraph.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çaeflexibilidade.Como exemplo, pode-se citar:Havok,BulleteODE.[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 dehardware

[editar|editar código-fonte]
Interface do motor de jogoGodot.

Motores de jogo fornecemabstração dehardware,permitindo um programador desenvolver jogos sem a necessidade de conhecer a arquitetura daplataforma-alvo, que pode ser umvideogameou umsistema operacional.Por esse motivo, muitos motores são desenvolvidos a partir de umaAPIexistentes, comoOpenGL,DirectX,OpenALeSDL,ou até mesmo a partir de outro motor, que pode facilitar o seu desenvolvimento. A abstração dehardwaretambém é essencial para o desenvolvimento de motores de jogomultiplataforma.[8][9]

Antes dos gráficos 3D acelerados porhardware,renderizadores porsoftwareeram usados. Renderização porsoftwareé ainda usada em algumas ferramentas de modelagem e renderizadores de imagens, onde a qualidade gráfica é priorizada, ou quando ohardwarenão suporta determinada tecnologia, tal como suporte ashaders.[10]

Captura de telado jogoPitfall!noAtari 2600

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 dohardwarefez com que a maioria dos códigos tivessem que de qualquer maneira, serem jogados fora posteriormente, como as gerações posteriores de jogos devessem usardesignscompletamente 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 jogosDoomeQuake,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 80que também são considerados motores de jogos, tais comoSierra's AGIeSCI Systems,LucasArts' SCUMMeIncentive 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 Systemque foi licenciado e usado paraHumongous Entertainment.O primeiromotor 3Da ser usado para criar jogos de computador foi oFreescape Engine,desenvolvido pelaIncentive Softwareem1986,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 comoDirectXeOpenGL,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 setembrode1995como a Windows Games SDK. Ele foi o componente daWin32 APIque 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, edesignde 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 daGPUePPU,as perdas de desempenho daslinguagens de programação de alto nível,comoC#,JavaePython,deixam de ser válidas, enquanto os ganhos de produtividade oferecidos por essaslinguagenstrabalham 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, comoUS$150,00,[3]até valoresexorbitantescomo US$ 31 200,00[4]ou mais caros. Aindústria de jogos eletrônicostem constantemente se expandido. Olucrodessa indústria, em2007,foi de US$ 9,5 bilhões, ultrapassando aindústria cinematográfica.[20]Areceita brutaem 2007 alcançou US$ 18,8 bilhões,[21]e dez anos depois, em2017,alcançou US$ 36 bilhões.[22]

Motores de tiro em primeira pessoa

[editar|editar código-fonte]
JogoFreeDoom,baseado no jogoDoom,feito no motorPrBoom

Um bom e conhecido subconjunto de motores de jogo são os motores detiro em primeira pessoa3D. Enquanto jogos deestratégia em tempo realesimuladores de vooapostam 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 Softwareem 1986, usado para criar jogos de tiro em primeira pessoa a partir de 1987.[2]

As melhorias em GPUs comoShader Model 3eShader 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 Softwareestá olhando para uma direção onderay tracinge gráficosrasterclássicos se misturam.[24]No entanto, de acordo comJohn Carmack,ohardwarecapaz de aproveitar os recursos do id 6 Tech ainda não existe.[25]

Ele irá funcionar através da renderização dageometriarepresentada 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]

Referências

  1. abBrandon Boyer (22 de fevereiro de 2007).«Serious Game Engine Shootout»(em inglês).Gamasutra.Consultado em 7 de abril de 2010
  2. abc«Freescape Engine»(em inglês). www.uvlist.net.Consultado em 14 de outubro de 2011
  3. ab«Torque Game Engine (engine)»(em inglês). devmaster.net. 30 de setembro de 2011.Consultado em 17 de dezembro de 2011.Arquivado dooriginalem 2 de dezembro de 2011
  4. ab«Q Engine (engine)»(em inglês). devmaster.net. 6 de agosto de 2004.Consultado em 17 de dezembro de 2011.Arquivado dooriginalem 2 de outubro de 2015
  5. 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
  6. 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 dooriginalem 30 de agosto de 2009
  7. «Pesquisa no uso de Middlewares em jogos»(PDF)(em inglês).Consultado em 5 de abril de 2010.Arquivado dooriginal(PDF)em 17 de outubro de 2013
  8. ab«Direct3D»(em inglês).Consultado em 14 de outubro de 2011
  9. «What is HAL (Hardware Abstraction Layer)»(em inglês). www.geek.com.Consultado em 9 de novembro de 2013
  10. 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 dooriginalem 16 de junho de 2010
  11. Nick Bensema.«Atari 2600 Programming Page»(em inglês). www.io.com.Consultado em 17 de abril de 2010.Arquivado dooriginalem 10 de abril de 2010
  12. 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 dooriginalem 12 de abril de 2010
  13. «Video games starting to get serious»(em inglês).Consultado em 14 de outubro de 2011
  14. «O que é DCI?»(em inglês).Consultado em 5 de abril de 2010
  15. «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 dooriginalem 11 de julho de 2012
  16. «OpenGL 3 & DirectX 11: A Guerra Acabou»(em inglês).Consultado em 5 de abril de 2010
  17. «Estudo da Composição de Times de Desenvolvimento de Jogos»(em inglês).Consultado em 5 de abril de 2010
  18. Mugunth Kumar (2 de março de 2008).«C# vs C/C++ Performance»(em inglês).Consultado em 9 de novembro de 2013
  19. «Bastion FAQ»(em inglês). Supergiant Games.Consultado em 27 de julho de 2013
  20. Moore, Michael E.; Novak, Jeannie (2010).Game Industry Career Guide(em inglês). [S.l.]: Delmar: Cengage Learning.ISBN1-4283-7647-X
  21. «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
  22. «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
  23. 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
  24. abRyan 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
  25. 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
  26. 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]
Outros projetosWikimediatambém contêm material sobre este tema:
Commons Imagens emedianoCommons