Un motor de juego es un marco de software diseñado principalmente para el desarrollo de videojuegos y generalmente incluye bibliotecas relevantes y programas de soporte, como un editor de niveles. [1] La terminología de "motor" es similar al término " motor de software " utilizado más ampliamente en la industria del software .
El motor de juego también puede referirse al software de desarrollo que respalda este marco, generalmente un conjunto de herramientas y funciones para desarrollar juegos. [2] [3]
Los desarrolladores pueden utilizar motores de juegos para crear juegos para consolas de videojuegos y otros tipos de computadoras . La funcionalidad principal que normalmente proporciona un motor de juego puede incluir un motor de renderizado ("renderizador") para gráficos 2D o 3D , un motor de física o detección de colisiones (y respuesta a colisiones), sonido , secuencias de comandos , animación , inteligencia artificial , redes , streaming, gestión de memoria , subprocesos , soporte de localización , gráficos de escenas y soporte de vídeo para cinemáticas . Los implementadores de motores de juegos a menudo economizan en el proceso de desarrollo de juegos reutilizando/adaptando, en gran parte, el mismo motor de juego para producir juegos diferentes [4] o para ayudar a migrar juegos a múltiples plataformas.
En muchos casos, los motores de juegos proporcionan un conjunto de herramientas de desarrollo visual además de componentes de software reutilizables. Estas herramientas generalmente se proporcionan en un entorno de desarrollo integrado para permitir un desarrollo rápido y simplificado de juegos basado en datos . Los desarrolladores de motores de juegos a menudo intentan anticiparse a las necesidades de los implementadores mediante el desarrollo de paquetes de software sólidos que incluyen muchos elementos que un desarrollador de juegos puede necesitar para crear un juego. La mayoría de los conjuntos de motores de juegos ofrecen funciones que facilitan el desarrollo, como gráficos, sonido, física y funciones de inteligencia artificial (IA). Estos motores de juegos a veces se denominan " middleware " porque, como en el sentido comercial del término, proporcionan una plataforma de software flexible y reutilizable que proporciona todas las funciones básicas necesarias, listas para usar , para desarrollar una aplicación de juego y al mismo tiempo reducir costos. , complejidades y tiempo de comercialización: todos ellos factores críticos en la altamente competitiva industria de los videojuegos . [5]
Al igual que otros tipos de middleware, los motores de juegos generalmente proporcionan abstracción de plataforma , lo que permite que el mismo juego se ejecute en varias plataformas (incluidas consolas de juegos y computadoras personales) con pocos cambios, si es que se realizan alguno, en el código fuente del juego . A menudo, los programadores diseñan motores de juegos con una arquitectura basada en componentes que permite reemplazar o ampliar sistemas específicos del motor con componentes de middleware de juegos más especializados (y a menudo más caros). Algunos motores de juegos comprenden una serie de componentes de middleware de juegos poco conectados que se pueden combinar selectivamente para crear un motor personalizado, en lugar del enfoque más común de extender o personalizar un producto integrado flexible. Independientemente de cómo se logre, la extensibilidad sigue siendo una alta prioridad para los motores de juegos debido a la amplia variedad de usos para los que se aplican. A pesar de la especificidad del nombre "motor de juego", los usuarios finales a menudo reutilizan los motores de juego para otros tipos de aplicaciones interactivas con requisitos gráficos en tiempo real , como demostraciones de marketing , visualizaciones arquitectónicas , simulaciones de entrenamiento y entornos de modelado . [6]
Algunos motores de juegos solo brindan capacidades de renderizado 3D en tiempo real en lugar de la amplia gama de funciones que necesitan los juegos. Estos motores dependen del desarrollador del juego para implementar el resto de esta funcionalidad o para ensamblarla a partir de otros componentes de middleware del juego. Estos tipos de motores generalmente se denominan "motor gráfico", "motor de renderizado" o "motor 3D" en lugar del término más amplio "motor de juego". Esta terminología se utiliza de manera inconsistente, ya que muchos motores de juegos 3D con todas las funciones se denominan simplemente "motores 3D". Ejemplos de motores gráficos incluyen: Crystal Space , Genesis3D , Irrlicht , OGRE , RealmForge, Truevision3D y Vision Engine . Los motores de juegos o gráficos modernos generalmente proporcionan un gráfico de escena , una representación orientada a objetos del mundo del juego en 3D que a menudo simplifica el diseño del juego y puede usarse para una representación más eficiente de vastos mundos virtuales. [ cita requerida ] La mayoría de los motores de juegos o motores de gráficos utilizan una API de gráficos , que le permite comunicarse fácilmente con la GPU . Pero los juegos más antiguos no tenían aceleración de hardware ni GPU y tenían que crear su propio renderizador de software.
A medida que la tecnología envejece, los componentes de un motor pueden quedar obsoletos o ser insuficientes para los requisitos de un proyecto determinado . Dado que la complejidad de programar un motor completamente nuevo puede provocar retrasos no deseados (o requerir que el proyecto se reinicie desde el principio), un equipo de desarrollo de motores puede optar por actualizar su motor existente con funciones o componentes más nuevos.
Antes de los motores de juego, los juegos se escribían normalmente como entidades singulares: un juego para el Atari 2600 , por ejemplo, tenía que diseñarse desde abajo hacia arriba para hacer un uso óptimo del hardware de visualización; hoy los desarrolladores llaman a esta rutina de visualización central núcleo . de juegos para sistemas más antiguos. Otras plataformas tenían más margen de maniobra, pero incluso cuando la pantalla no era una preocupación, las limitaciones de memoria generalmente saboteaban los intentos de crear el diseño con muchos datos que necesita un motor. Incluso en plataformas más adaptables, se podía reutilizar muy poco entre juegos. El rápido avance del hardware arcade (que era la vanguardia del mercado en ese momento) significó que la mayor parte del código tendría que ser desechado después de todos modos, ya que las generaciones posteriores de juegos usarían diseños de juegos completamente diferentes que aprovechaban ventajas adicionales. recursos. Por lo tanto, la mayoría de los diseños de juegos durante la década de 1980 se diseñaron mediante un conjunto de reglas codificadas con una pequeña cantidad de niveles y datos gráficos. Desde la época dorada de los videojuegos arcade , se volvió común que las empresas de videojuegos desarrollaran motores de juegos internos para usarlos con software propio.
Un ejemplo notable de un motor de juego interno en consolas domésticas a mediados de la década de 1980 fue el suave motor de desplazamiento lateral desarrollado por el equipo de Shigeru Miyamoto en Nintendo para Nintendo Entertainment System (NES). El motor que habían desarrollado para el juego de carreras de desplazamiento lateral Excitebike (1984) se utilizó más tarde para el juego de plataformas de desplazamiento Super Mario Bros. (1985). Esto tuvo el efecto de permitirle a Mario acelerar suavemente de caminar a correr, en lugar de moverse a una velocidad constante como en los juegos de plataformas anteriores. [7]
Si bien los motores de juegos de terceros no eran comunes hasta el auge de los gráficos por computadora en 3D en la década de 1990, en la década de 1980 se produjeron varios sistemas de creación de juegos en 2D para el desarrollo independiente de videojuegos . Estos incluyen Pinball Construction Set (1983), ASCII 's War Game Construction Kit (1983), [8] Thunder Force Construction (1984), [9] Adventure Construction Set (1984), Garry Kitchen's GameMaker (1985), Wargame Construction Set. (1986), Shoot-'Em-Up Construction Kit (1987), Arcade Game Construction Kit (1988) y, más popularmente, los motores RPG Maker de ASCII desde 1998 en adelante. Klik & Play (1994) es otra oferta heredada que todavía está disponible. [10]
El término "motor de juego" surgió a mediados de la década de 1990, especialmente en relación con juegos en 3D, como los juegos de disparos en primera persona con motor de disparos en primera persona . Epic Games, fundada por el desarrollador Tim Sweeney, debutó con Unreal Engine en el año 1998. [11]
La popularidad de los juegos Doom y Quake de Id Software fue tal que, en lugar de trabajar desde cero, otros desarrolladores obtuvieron licencias para las partes principales del software y diseñaron sus propios gráficos, personajes, armas y niveles : el "contenido del juego" o "juego". activos". La separación de las reglas y los datos específicos del juego de conceptos básicos como la detección de colisiones y la entidad del juego significó que los equipos podían crecer y especializarse. [10]
Juegos posteriores, como Quake III Arena de id Software y Unreal de 1998 de Epic Games, se diseñaron con este enfoque en mente, con el motor y el contenido desarrollados por separado. La práctica de conceder licencias de dicha tecnología ha demostrado ser una útil fuente de ingresos auxiliares para algunos desarrolladores de juegos, ya que una licencia para un motor de juego comercial de alta gama puede oscilar entre 10.000 y millones de dólares, y el número de licenciatarios puede llegar a varias docenas. empresas, como se ve con Unreal Engine . Como mínimo, los motores reutilizables hacen que el desarrollo de secuelas de juegos sea más rápido y sencillo, lo cual es una ventaja valiosa en la competitiva industria de los videojuegos . Si bien hubo una fuerte rivalidad entre Epic e id alrededor del año 2000, desde entonces, Unreal Engine de Epic ha sido mucho más popular que id Tech 4 y su sucesor id Tech 5 . [12]
Los motores de juegos modernos son algunas de las aplicaciones más complejas escritas y a menudo presentan docenas de sistemas finamente ajustados que interactúan para garantizar una experiencia de usuario controlada con precisión. La continua evolución de los motores de juegos ha creado una fuerte separación entre renderizado, secuencias de comandos, ilustraciones y diseño de niveles . Ahora es común, por ejemplo, que un típico equipo de desarrollo de juegos tenga varias veces más artistas que programadores reales. [13]
Los juegos de disparos en primera persona siguen siendo los usuarios predominantes de motores de juegos de terceros, pero ahora también se utilizan en otros géneros . Por ejemplo, el videojuego de rol The Elder Scrolls III: Morrowind y el MMORPG Dark Age of Camelot se basan en el motor Gamebryo , y el MMORPG Lineage II se basa en Unreal Engine. Los motores de juego también se utilizan para juegos desarrollados originalmente para consolas domésticas; por ejemplo, el motor RenderWare se utiliza en las franquicias Grand Theft Auto y Burnout .
Los subprocesos están adquiriendo cada vez más importancia debido a los modernos sistemas multinúcleo (por ejemplo, Cell ) y a las mayores exigencias de realismo. Los hilos típicos involucran renderizado, transmisión, audio y física. Los juegos de carreras generalmente han estado a la vanguardia de los subprocesos con el motor de física ejecutándose en un subproceso separado mucho antes de que se movieran otros subsistemas centrales, en parte porque el renderizado y las tareas relacionadas necesitan actualizarse a solo 30-60 Hz. Por ejemplo, en PlayStation 3, la física se ejecutaba en Need For Speed a 100 Hz frente a Forza Motorsport 2 a 360 Hz.
Aunque el término se utilizó por primera vez en la década de 1990, hay algunos sistemas anteriores en la década de 1980 que también se consideran motores de juegos, como los sistemas Adventure Game Interpreter (AGI) y SCI de Sierra, el sistema SCUMM de LucasArts y el software de incentivos . Motor Freescape (en 1986 [14] ). A diferencia de la mayoría de los motores de juegos modernos, estos motores de juegos nunca se utilizaron en ningún producto de terceros (excepto el sistema SCUMM, cuya licencia fue utilizada por Humongous Entertainment ).
A medida que la tecnología de los motores de juegos madura y se vuelve más fácil de usar, el alcance de las aplicaciones de los motores de juegos se ha ampliado. Ahora se utilizan para juegos serios : visualización, entrenamiento, aplicaciones de simulación médica y militar , siendo el CryEngine un ejemplo. [15] Para facilitar esta accesibilidad, los motores de juegos están apuntando a nuevas plataformas de hardware, incluidos teléfonos móviles (por ejemplo, teléfonos Android , iPhone ) y navegadores web (por ejemplo, WebGL , Shockwave , Flash , Trinigy 's WebVision, Silverlight , Unity Web Player). , O3D y DHTML puro ). [16]
Además, se están creando más motores de juegos en lenguajes de nivel superior como Java y C# / .NET (por ejemplo, TorqueX y Visual3D.NET ), Python ( Panda3D ) o Lua Script (Leadwerks). Como la mayoría de los juegos ricos en 3D ahora están limitados por GPU (es decir, limitados por la potencia de la tarjeta gráfica), la posible desaceleración debido a los gastos generales de traducción de idiomas de nivel superior se vuelve insignificante, mientras que las ganancias de productividad que ofrecen estos idiomas funcionan para el motor del juego. beneficio de los desarrolladores. [17] Estas tendencias recientes están siendo impulsadas por empresas como Microsoft para apoyar el desarrollo de juegos independientes . Microsoft desarrolló XNA como el SDK elegido para todos los videojuegos lanzados en Xbox y productos relacionados. Esto incluye el canal Xbox Live Indie Games [18] diseñado específicamente para desarrolladores más pequeños que no tienen los amplios recursos necesarios para poner juegos a la venta en los estantes minoristas. Cada vez es más fácil y económico que nunca desarrollar motores de juegos para plataformas que admitan marcos administrados . [19]
Los productores de motores de juegos deciden cómo permiten a los usuarios utilizar sus productos. Así como los juegos son una industria , también lo son los motores con los que se construyen. Los principales motores de juegos tienen diferentes precios, ya sea en forma de tarifas de suscripción o pagos de licencia. [20] Unity y Unreal Engine son actualmente las dos opciones más populares para los desarrolladores de juegos. [21] Aunque las diferencias entre los diferentes motores de juegos se difuminan a medida que construyen sus propias herramientas sobre ellos, los diferentes desarrolladores de juegos pueden estar demasiado acostumbrados a un sistema para cambiar, o atraídos por los enormes beneficios de dichos motores, independientemente de los muros de pago. .
En el sentido más amplio del término, los propios motores de juegos pueden describirse como middleware. Sin embargo, en el contexto de los videojuegos, el término "middleware" se utiliza a menudo para referirse a subsistemas de funcionalidad dentro de un motor de juego. Algunos middleware de juegos hacen sólo una cosa, pero lo hacen de manera más convincente o más eficiente que el middleware de propósito general.
Los cuatro paquetes de middleware más utilizados [22] que proporcionan subsistemas de funcionalidad incluyen Bink, Firelight FMOD , Havok y Scaleform GFx de RAD Game Tools . RAD Game Tools desarrolla Bink para renderizado de video básico, junto con audio de Miles y renderizado Granny 3D . Firelight FMOD es una biblioteca de audio y un conjunto de herramientas robustos y de bajo costo. Havok proporciona un robusto sistema de simulación física, junto con un conjunto de aplicaciones de animación y comportamiento. Scaleform proporciona GFx para una interfaz de usuario Flash de alto rendimiento y reproducción de vídeo de alta calidad, y un complemento del Editor de métodos de entrada (IME) para soporte de chat asiático dentro del juego.
Se utiliza otro middleware para optimizar el rendimiento; por ejemplo, ' Simplygon ' ayuda a optimizar y generar mallas de nivel de detalle , y ' Umbra ' agrega optimizaciones de selección de oclusión a los gráficos 3D.
Algunos middleware contienen código fuente completo , otros simplemente proporcionan una referencia API para una biblioteca binaria compilada . Algunos programas de middleware se pueden licenciar de cualquier manera, generalmente por una tarifa más alta por el código fuente completo.