Motor de videojuego

De Wikipedia, la enciclopedia libre
Ir a la navegación Ir a la búsqueda

El término motor de videojuego (conocido originalmente en ingles como game engine), o simplemente motor de juego, hace referencia a una serie de rutinas de programación que permiten el diseño, la creación y el funcionamiento de un videojuego.[1][2][3]

La funcionalidad típica que provee un motor de videojuego incluye: un motor gráfico para renderizar gráficos 2D y 3D, un motor físico que simule las leyes de la física (o simplemente para generar detección de colisiones), animación, scripting, sonidos, inteligencia artificial, redes, streaming, gestión de memoria, escenarios gráficos y soporte para lenguaje por secuencia de comandos.[2][4][5][6]

Origen del nombre[editar]

El terminó game engine fue acuñado a principios de los '90, asociándolo especialmente al inicio de los videojuegos en 3D, como los first-person shooter. Sin embargo, el primer motor de videojuego en 3D del que se tiene conocimiento, fue el Freescape Engine, desarrollado por Incentive Software en 1986.[7]​ Hoy en día, adquirir un motor de videojuego varía mucho dependiendo de su origen:[3][8][9]​ pueden ser de código abierto,[6]shareware o pago,[10]​ manejando todo tipo de valores.[11]​ El proceso de desarrollo de un videojuego puede variar notablemente y es bastante común que los desarrolladores (a fin de solventar gastos) opten por reutilizar o adaptar un mismo motor de videojuego para crear diferentes videojuegos.[6][12][13]​ Del mismo modo, existen motores de videojuegos que operan tanto en consolas de videojuegos como en sistemas operativos.

Definición[editar]

Los motores de videojuegos suelen proporcionar un conjunto de herramientas de desarrollo visual y componentes de software que puedan ser reutilizables.[9]​ Estas herramientas generalmente se proporcionan en un entorno de desarrollo integrado para permitir el desarrollo simplificado y rápido de videojuegos a través de una base de datos.[6][8]​ En otros casos, los motores se distribuyen en formato API.[14]​ Sin embargo, otros motores se distribuyen como un conjunto de herramientas que agilizan y simplifican aún más el desarrollo de un videojuego, como por ejemplo: los IDE, scripts preprogramados, y los middleware (capaces de conectar varios softwares en un solo software). Esto resulta útil a la hora de conseguir una plataforma de software flexible y reutilizable que evite la compra de otros recursos ajenos, lo cual ayuda a tener todo lo necesario para hacerlo funcional de manera inmediata, reducir los costos, complejidades y tiempos de comercialización. Todos estos factores son críticos en una industria altamente competitiva.[15]​ A partir de 2001, Gamebryo, JMonkeyEngine y RenderWare eran programas de middleware ampliamente utilizados.[16]​ Actualmente, se pueden citar motores como Torque Game Engine, Unity, Blender, CryEngine y Unreal Engine.[2][6][12][17]

Un motor de videojuego se puede dividir en dos grandes categorías: motor gráfico y motor físico. Los motores gráficos tratan el aspecto visual del videojuego, que generan imágenes sintéticas intregrando o cambiando información visual y espacial. Como ejemplo, se puede citar: OGRE 3D, Crystal Space y OpenSceneGraph. Los motores físicos se ocupan de integrar las leyes de la física, siendo responsables de simular acciones reales, a través de variables como la gravedad, la masa, la fricción, la fuerza y ​​la flexibilidad.[1]​ Como ejemplo, se puede citar: Havok, Bullet y ODE.[12]

A pesar de la especificidad del nombre, los motores de videojuego también se utilizan para crear otros tipos de aplicaciones interactivas denominadas como "juegos serios",[18][19][20]​ tales como visualizaciones arquitectónicas,[21]​ educación,[22][23]​ avances científicos,[24]​ simulaciones de entrenamiento,[25][26]​ herramientas de modelado[21]​ y simulaciones físicas para recrear animaciones.[27]

Abstracción de hardware[editar]

Los motores de videojuegos que proporcionan abstracción de hardware[28][29][30]​ le permiten a un programador desarrollar videojuegos sin la necesidad de conocer la arquitectura del hardware de la plataforma donde va a trabajar (éste puede ser un videojuego o un sistema operativo). Por este motivo, muchos motores se desarrollan a partir de una API existente, como OpenGL, DirectX, OpenAL y SDL,[8]​ o incluso desde otro motor, que puede facilitar su desarrollo. La abstracción de hardware también es esencial para el desarrollo de motores con características multiplataforma.

Antes de la aceleración por hardware en los gráficos 3D se utilizaba la renderización por software;[31][32]​ el cual se sigue utilizando en ciertas herramientas de modelado y renderizadores de imágenes, donde es prioridad la calidad gráfica o cuando el hardware no es compatible con cierta tecnología, como los shaders.

Historia[editar]

Antes de que existieran los motores de videojuegos, éstos eran típicamente desarrollados como entidades singulares (no había separación de áreas, como la gráfica y la física): un juego para el Atari 2600, por ejemplo, tenía que ser planeado desde cero, manteniendo el código más simple posible y manipulando píxel por píxel, para hacer un uso optimizado del hardware, debido a sus limitaciones; [33][34]​ pero no fue sino hasta la década del '90 cuando se originó el término game engine dentro del contexto de los first-person shooters. La gran popularidad que alcanzaron los juegos Wolfenstein 3D, Doom y Quake[35]​ se debe principalmente a que, en lugar de crear un videojuego desde cero, se licenciaron los núcleos del mismo para utilizarlos como base para crear sus propios motores de videojuego. Al madurar esta tecnología, los motores de videojuego dejaron de restringirse al mero desarrollo de videojuegos. Se comenzaron, de hecho, a implementar en otras áreas, como entrenamiento profesional, uso médico y simulaciones militares.[36]​ A pesar de que el término se acuñó en los años '90, existen antecedentes de otros sistemas en los años '80 que también se los consideran como motores de videojuego, tales como Sierra's AGI y SCI Systems, LucasArts 'SCUMM y Freescape Engine. Sin embargo, a diferencia de la mayoría de los motores de videojuego modernos, estos nunca se tercerizaron, con excepción de SCUMM System que fue licenciado y utilizado para Humongous Entertainment. El primer motor de videojuego en 3D que se utilizó para crear juegos de PC fue el Freescape Engine,[13]​ desarrollado por Incentive Software en 1986, utilizado para crear first-person shooters a partir de 1987. [37]

A pesar de que ya se habían creado videojuegos mucho antes de la creación de una API como DirectX y OpenGL, su creación impulsó la evolución de las tecnologías usadas en videojuegos y ayudó a desarrollar ese mercado.[38]​ La primera versión de DirectX fue lanzada el 30 de septiembre de 1995 bajo el nombre de Windows Games SDK. Fue el componente de Win32 API quien reemplazó a DCI[39]​ y WinG de Windows 3.1. Después de ser creado, DirectX ha estado presente en todas las versiones de Microsoft Windows, que se inician con Windows 95, incorporando contenido multimedia de alto rendimiento. Eisler escribió en su blog sobre la odisea de construir DirectX 1 hasta su quinta versión.[40]​ A pesar de que OpenGL se creó primero (enero de 1992), DirectX tuvo (y aún tiene) más aceptación en el área de desarrollo de videojuegos.[41]

Durante mucho tiempo, las compañías han hecho sus propios motores de videojuego.[35]​ Con el paso de los años, el costo para crearlo creció mucho, y por ese motivo varias compañías comenzaron a especializarse exclusivamente en construir motores de videojuego, o recursos de los mismos, para vender a otras compañías. La razón es porque se requiere mucho tiempo y dinero para que una compañía, además de producir su propio motor de videojuego, tenga que construir posteriormente un videojuego propio.[4]

Los motores de videojuego modernos son una de las aplicaciones más complejas que existen actualmente.[10][13]​ Su continua evolución ha creado una fuerte separación entre áreas fundamentales como la renderización, el scripting, los conceptos artísticos y el diseño de niveles; por lo que es común para un equipo de desarrollo hoy en en dia es la de tener muchos artistas como programadores.[42]​ Como la mayoría de los videojuegos actuales están cada vez más limitados al poder de la GPU y PPU, las pérdidas de rendimiento en lenguajes de programación de alto nivel, como C#, Java y Python ya no son válidas, mientras que las ganancias de productividad ofrecidas por estos lenguajes trabajan en beneficio de quienes desarrollan motores de videojuegos.[43][44]

Los precios de los motores de videojuegos varían mucho debido al gran crecimiento que produjo la industria de los videojuegos. En ese sentido, las ganancias en 2007 fueron de 9.500 millones de dólares, superando la industria cinematográfica.[45]​ Los ingresos brutos en 2007 alcanzaron los 18.800 millones de dólares,[46]​ y diez años después, en 2017, alcanzaron los 36 mil millones de dólares.[47]

Motores de videojuegos en primera persona[editar]

Los motores de videojuegos en primera persona son el conjunto más popular y conocido. Mientras que los videojuegos de estrategia en tiempo real y los simuladores de vuelo apuestan en la calidad gráfica, los motores de videojuegos en primera persona apuestan más a la acción, siendo Doom el más conocido; y son importantes porque marcan un inicio histórico en la creación y el uso de motores de videojuegos.

Las mejoras de GPU como Shader Model 3 y Shader Model 4, posibilitó mejoras a nivel gráfico. A partir del 2009, se anunciaron dos importantes avances en los principales motores de videojuegos existentes hasta la fecha: id Tech 5 (que fue usado por primera vez en Rage, y cuenta con una nueva tecnología llamada Virtual Texturing),[48]​ y el CryEngine 3, que fue utilizado para desarrollar el videojuego Crysis 2.

Pocas empresas han discutido qué planes tienen programados para el futuro en cuanto al surgimiento de nuevos motores. Sin embargo, el id Tech 6, eventual sucesor del id Tech 5, es una excepción. La información preliminar sobre este motor (que todavía está en las fases iniciales de desarrollo) sugiere que id Software está investigando cómo poder integrar la tecnología ray tracing y la rasterización gráfica.[49]​ Se ejecutará a través de una renderización geométrica representada por vóxeles (en lugar de triángulos) almacenados en un octree. John Carmack afirma que este procedimiento será una manera más eficiente para almacenar los datos en 2D, así como los datos gerométricos en 3D, al no tener problemas de almacenamiento.[49]

Componentes[editar]

Los componentes que posee un motor de videojuego en la actualidad poseen una gran variedad de características muy diferentes entre sí. En principio, pueden disinguirse cinco grandes áreas:

Programa de juego principal[editar]

La lógica del videojuego debe ser implementada a través de diversos algoritmos.[50][13]​ Es una estructura distinta de cualquier trabajo de renderizado o de sonido.

Renderización[editar]

La renderización es el proceso en el cual se generan los graficos 3D por computadora a fin de mostrar en pantalla el aspecto visual del videojuego.[10]​ Genera gráficos en 3D por varios métodos (como la rasterización gráfica, el ray tracing, la partición binaria del espacio, entre otros) y se ocupa de mostrar escenarios, modelos, animaciones, texturas, sombras, iluminaciones y materiales.[9]

La mayoría de las veces el renderizado se basan en una o varias API, como Direct3D, OpenGL o Vulkan,[10]​ que proporcionan una abstracción del software en el GPU. Las bibliotecas de bajo nivel como DirectX, Simple DirectMedia Layer (SDL) y OpenGL también se usan en videojuegos, ya que proporcionan acceso independiente del hardware. Con la llegada del procesamiento de físicas por aceleración de hardware, varias API como PAL y las extensiones COLLADA están disponibles para proporcionar una abstracción de software en la PPU de diferentes proveedores de middleware y de videoconsolas.

Polígonos[editar]

Todo elemento que tenga una composición tridimensional es clasificado por polígonos. Es el procedimiento más primitivo en la creación de un mundo tridimensional y su complejidad geométrica varía de acuerdo a las capacidades técnicas del hardware.[8]​ Dicha complejidad se puede clasificar en low-poly, mid-poly y high poly, refiriendose respectivamente a una composición poliginal baja, media y alta. Esto dará como resultado un determinado nivel de detalle y distancia de dibujado.[8]

Complejidad geométrica y distancia de dibujado
Imagen A finely tassellated wireframe sphere featuring over 5000 sample points. A highly tassellated wireframe sphere, almost 2900 points. A wireframe sphere with roughly 1600 sample points. A wireframe sphere with almost 700 vertices, good when viewed from a distance. A wireframe sphere with less than 150 sample points but still enough for far away objects.
Vértices ~5500 ~2880 ~1580 ~670 140
Notas Detalle Máximo.
Jugador cerca del objeto.
Detalle Mínimo.
Jugador muy lejos del objeto.

Audio[editar]

El audio de un videojuego se llega a manejar de muchas maneras y esto depende de las capacidades que tenga el motor. Hoy en día los motores de última generación soportan muchos formatos de sonido, siendo los más populares el .wav y el .ogg. En algunas casos, los motores de videojuegos pueden exigir configuraciones exactas, aunque el método más conocido es la administración de audio mediante el looping a la música, o bien modificar el tono cuando se trata de voces o efectos de sonido.

Componente que maneja algoritmos relacionados con la carga, modificación y salida de sonido a través del sistema de altavoces del usuario.[1]​ Como mínimo, debe poder cargar, descomprimir y reproducir archivos de sonido.[1]​ Los componentes de audio más avanzados pueden calcular y producir cosas tales como efectos Doppler, ecos, ajustes de amplitud y tono, entre otros. Las API de abstracción, como OpenAL, SDL audio, DirectSound permiten manipular estos fenómenos.

Motor físico[editar]

El motor físico es responsable de emular las leyes de física en forma realista dentro del motor de videojuego.[1]​ Específicamente, proporciona un conjunto de funciones para simular acciones reales a través de variables como la gravedad, la masa, la fricción, la fuerza, ​la flexibilidad[1][8]​ y las colisiones, actuando sobre los diversos objetos dentro del juego al momento de su ejecución.

Inteligencia artificial[editar]

La inteligencia artificial es quien provee de estímulo al videojuego. Su elaboración es crítica a la hora de lograr un sistema de juego pulido y que entretenga. Puede tornarse muy compleja[8]​ y es necesario tener en cuenta ciertas variables, tales como crear comportamientos programados, delimitar su visión del mundo tridimensional, su interacción en él, la toma de decisiones y con ello lograr una consistencia lógica y coherente en la que el jugador debe responder de una manera esperada.

Scripting[editar]

Procedimiento que se utilliza normalmente en situaciones donde es necesario explicar algo de manera controlada.[1]​ Actualmente se las utiliza a fin de representar la historia que tendrá el videojuego, permitiendole al desarrollador tomar el control de la escena y manipularla,[8]​ tales como colocar objetos o añadir eventos que el jugador no controla.

Véase también[editar]

Referencias[editar]

  1. a b c d e f g «¿Qué es un motor de videojuegos? | Observatorio del Gabinete de Tele-Educación». Consultado el 2018-12-06. 
  2. a b c «Motor de juego | Definición en GamerDic | Diccionario de términos sobre videojuegos y cultura gamer». www.gamerdic.es. Consultado el 2018-12-08. 
  3. a b «Motor gráfico - EcuRed». www.ecured.cu. Consultado el 2018-12-08. 
  4. a b What is a Game Engine? from GameCareerGuide.com
  5. Boyer, Brandon. «SGS Feature: 'Serious Game Engine Shootout'» (en inglés). Consultado el 1 de diciembre de 2018. 
  6. a b c d e FayerWayer. «¿Qué es un Engine para videojuegos?». FayerWayer (en inglés estadounidense). Consultado el 2018-12-08. 
  7. «Freescape». Universal Videogame List. Consultado el 1 de diciembre de 2018. 
  8. a b c d e f g h Ruelas, Uriel. «¿Qué es un motor de videojuegos (game engine)?». Consultado el 2018-12-08. 
  9. a b c Santos, Manuel (2018-05-06). «Motores gráficos: qué son y por qué son tan útiles». HardZone. Consultado el 2018-12-08. 
  10. a b c d «Qué son los motores gráficos y cuáles son los más populares». Blogthinkbig.com. 2015-04-01. Consultado el 2018-12-08. 
  11. Galuzin, Alex. «23 Recommended 3D Game Engines (Updated)». www.worldofleveldesign.com (en inglés). Consultado el 1 de diciembre de 2018. 
  12. a b c «What is a Game Engine?- GameCareerGuide.com». www.gamecareerguide.com. Consultado el 1 de diciembre de 2018. 
  13. a b c d «¿Qué es un motor gráfico 3D?». Softonic. Consultado el 2018-12-08. 
  14. «Tipos de API - Web API, API de código y más». www.tecnologias-informacion.com (en español). Consultado el 1 de diciembre de 2018. 
  15. Cowan, Danny. «Joystiq». Gamedaily.com. Consultado el 2013-11-24. 
  16. «Rise of Middleware». Develop-online.net. 2007-07-06. Consultado el 2011-01-17. 
  17. «Qué es middleware: definición y ejemplos | Microsoft Azure». azure.microsoft.com. Consultado el 1 de diciembre de 2018. 
  18. Marcano, Beatriz (2008). «JUEGOS SERIOS Y ENTRENAMIENTO EN LA SOCIEDAD DIGITAL». Teoría de la Educación. Educación y Cultura en la Sociedad de la Información 9 (3). Consultado el 1 de diciembre de 2018. 
  19. Molano, Adriana. «Juegos serios: DragonBox, un ejemplo a seguir». colombiadigital.net. Consultado el 1 de diciembre de 2018. 
  20. «Serious Games, Juegos educativos (con ejemplos y experimentos)». es.slideshare.net. Consultado el 1 de diciembre de 2018. 
  21. a b «3D modeling for everyone». SketchUp. Consultado el 1 de diciembre de 2018. 
  22. «Los juegos serios y su potencial como dispositivos educativos - EDUforics». EDUforics. 24 de abril de 2016. Consultado el 1 de diciembre de 2018. 
  23. «Los 10 mejores videojuegos educativos | El Blog de Educación y TIC». El Blog de Educación y TIC. 16 de diciembre de 2013. Consultado el 1 de diciembre de 2018. 
  24. (www.dw.com), Deutsche Welle, "Juegos serios": videojuegos para la ciencia | DW | 21.02.2012, consultado el 1 de diciembre de 2018 
  25. Instituto Tecnológico de Aragón (29 de diciembre). «Análisis: Motores gráficos y su aplicación en la industria» (PDF). Gobierno de España - Ministerio de Economía y Competitividad. 
  26. «Los mejores serious games (juegos serios - formativos) - MEJORES.XYZ». MEJORES.XYZ. 19 de enero de 2018. Consultado el 1 de diciembre de 2018. 
  27. «Los 10 innovadores motores para videojuegos de realidad virtual - iQ Spain». iQ Spain. 8 de julio de 2016. Consultado el 1 de diciembre de 2018. 
  28. U, Lic Daniel J. Chavez. Imagen Independiente de Hardware (IIH). Daniel J Chavez U. Consultado el 1 de diciembre de 2018. 
  29. serrotho. «Las frase de hoy: Capa de Abstracción...». Consultado el 1 de diciembre de 2018. 
  30. Valdivia, Christian Paredes (12 de enero de 2010). «Linux: La capa de abstracción de hardware o HAL». Linux. Consultado el 1 de diciembre de 2018. 
  31. «4 tecnologías que cambiaron los videojuegos». Omicrono. 11 de julio de 2016. Consultado el 1 de diciembre de 2018. 
  32. «Aportaciones de los videojuegos a la tecnología». Blogthinkbig.com. 18 de agosto de 2013. Consultado el 1 de diciembre de 2018. 
  33. Gonzalo. «Sistemas obsoletos - Programación de ATARI 2600». web.atari.org. Consultado el 2018-12-05T03:43:21Z. 
  34. «2600 - PROGRAMANDO JUEGOS SIN RECURSOS». Consultado el 2018-12-05T03:44:52Z. 
  35. a b Team, Weblogs Branded Content (2018-05-11). «Así se crearon los principales motores gráficos de la historia del videojuego». Vidaextra. Consultado el 2018-12-08. 
  36. «Video games starting to get serious». ww2.gazette.net. Consultado el 2018-12-06. 
  37. «Freescape». Universal Videogame List (en inglés). Consultado el 2018-12-06. 
  38. «Direct3D». pctechguide.com (en inglés estadounidense). 2011-09-23. Consultado el 2018-12-06. 
  39. stason.org, Stas Bekman: stas (at). «54 What is DCI?». stason.org. Consultado el 2018-12-06. 
  40. «DirectX Then and Now (Part 1) | Craig's Musings». Consultado el 2018-12-06. 
  41. «OpenGL 3 & DirectX 11: The War Is Over». Tom's Hardware (en inglés). 2008-09-16. Consultado el 2018-12-06. 
  42. «Index of /~id111x/c05/slides». web.cs.wpi.edu. Consultado el 2018-12-06. 
  43. «C# vs C/C++ Performance - CodeProject». www.codeproject.com. Consultado el 2018-12-06. 
  44. «Supergiant Games - Bastion FAQ». www.supergiantgames.com. Consultado el 2018-12-06. 
  45. Game Industry Career Guide (en inglés). Delmar: Cengage Learning. 2010. ISBN 1-4283-7647-X. 
  46. «Computer and Video Game Industry Reaches $18.85 Billion in 2007». The Entertainment Software Association. Consultado el 2018-12-06. 
  47. «US Video Game Industry Revenue Reaches $36 Billion in 2017». The Entertainment Software Association. Consultado el 2018-12-06. 
  48. J.M.P. van Waveren (Senior programmer). «id Tech 5 Challenges - From Texture Virtualization to Massive Parallelization» (en inglés). id Software. 
  49. a b «John Carmack on id Tech 6, Ray Tracing, Consoles, Physics and more | PC Perspective». www.pcper.com. Consultado el 2018-12-07. 
  50. «Motores para videojuegos». expertojava.ua.es. Consultado el 2018-12-08.