<<

Motores de Videojuegos

Nicolas Gonz´alezSoto

Universidad Cat´olica“Nuestra Se˜norade la Asunci´on”, Facultad de Ciencias y Tecnolog´ıa, Asunci´on,Paraguay. [email protected] www.universidadcatolica.edu.py

Resumen Los motores de videojuegos o ’game engines’ como son tam- bi´enconocidos, son herramientas que facilitan el desarrollo de los video- juegos en s´ı.En este documento se explicar´ael origen y la historia de los motores, as´ıcomo las opciones disponibles hoy en d´ıay su situaci´on actual para grandes empresas y estudios independientes.

Keywords: Motores gr´aficos,videojuegos, desarrollo, herramientas, AAA, indie.

1. Introducci´on

Hoy en dia los juegos pueden llegar a ser muy complejos. Anteriormente, los juegos se escrib´ıandesde cero. Cada juego era escrito para una plataforma es- pec´ıfica,es decir, el ´odigovariaba entre consolas y PC por ejemplo. Con el paso de del tiempo, los juegos se volvieron m´ascomplejos y con mas funcionalidades. Los juegos pasaron de blanco y negro a mostrar muchos colores en pantalla, de juego local con amigos a partidas en internet con extra˜nos,niveles simples a jue- gos de mundo abierto con eventos ocurriendo en cada momento. Con el paso de la tecnolog´ıa,el c´odigoque se escrib´ıapara una plataforma deb´ıaser descartado.

Los videojuegos resultaban muy caros de desarrollarse. Con el boom de los videojuegos en los a˜nos’80, las compa˜n´ıasempezaron a desarrollar sus propios motores para su uso interno y poder de esta manera, reutilizar c´odigodesarro- llado previamente. Sin embargo, el uso de motores de terceros no se populariz´o hasta la ´epoca de los gr´aficos3D en los ’90.

Hoy en d´ıa, la mayor´ıade los juegos se desarrollan con estas herramientas ya que aparte de facilitar el desarrollo, se puede abaratar los costos, apuntar a juegos multi plataformas sin mucho esfuerzo e incluso, abre las puertas para que peque˜nosequipos puedan surgir y brindar sus ideas al mercado. 2 Motores de Videojuegos

2. Conceptos

2.1. ¿Qu´eson los motores de videojuegos?

Los motores de juego son herramientas y/o entornos de desarrollo para fa- cilitar la creaci´onde videojuegos. Estos proveen funcionalidades comunes para el desarrollo como un motor de renderizado, ya sea en 2D o 3D, un motor que simula las leyes de la f´ısica,detecci´onde colisiones, manejo de sonido, scripting o algoritmos, inteligencia artificial, funcionalidades de red, manejo de memoria, soporte para localizaci´oninternacional, soporte para cinem´aticasentre otros. Es- to permite que los desarrolladores, los cuales incluyen a artistas, dise˜nadores y otros programadores, puedan concentrarse en los detalles que hacen que su juego sea ´unicoy distinto [19].

Figura 1. Entorno de desarrollo del motor .

3. Historia

Como se dijo brevemente en la introducci´on,los motores de juego nacieron por la necesidad de facilitar el desarrollo de juegos y abaratar costos. Aunque el uso de motores no se populariz´ohasta los a˜nos 90, incluso, el t´ermino no se utilizaba hasta esta ´epoca. Antes de esto, exist´ıanvarios “kits de creaci´onde videojuegos” que su finalidad era b´asicamente la misma que los motores de jue- gos. Entre ellos podemos mencionar Pinball Construction Set (1983), ASCII’s War Game Construction Kit (1983), Thunder Force Construction (1984), Ad- venture Construction Set (1984), Garry Kitchen’s GameMaker (1985), Wargame Motores de Videojuegos 3

Construction Set (1986), Shoot’Em-Up Construction Kit (1987), Arcade Game Construction Kit (1988) entre otros.

Con la popularidad del 3D, y en espec´ıfico,los first person shooter (FPS), o disparos en primera persona, empezaron a surgir los motores de juego como m´etodo de desarrollo en las compa˜n´ıas. Tanta fue la popularidad de Doom de la empresa , que, en lugar de realizar los juegos desde cero, los dem´as desarrolladores optaban por obtener licencias para utilizar segmentos de c´odigo de las mec´anicasdel juego y dise˜narsus propios personajes, historias, niveles, armas y otros aspectos del juego. La separaci´onde contenido en los juegos sig- nific´oque los equipos de desarrollo pudieran crecer y especializarse.

Los juegos que vinieron m´asadelante de Id Software, se dise˜naroncon este enfoque en mente, siendo el motor un aspecto separado del contenido del juego. La pr´acticade licenciar los motores se ha vuelto una forma de ganancias impor- tante para muchas compa˜n´ıasya que esta puede significar contratos de miles a millones de d´olaresa varias empresas.

Muchos de los motores de hoy en d´ıason algunos de los software m´ascom- plicados que existen. La evoluci´onde estos, ha creado una separaci´onen los equipos de algoritmo, dise˜node niveles, arte, entre otros. El manejo de hilos se est´avolviendo cada vez m´asimportante para los motores. El manejo t´ıpico de hilos involucra renderizado, audio y f´ısicas. Los juegos de carrera por ejemplo han estado al frente en este aspecto, ya que estos ten´ıanel motor de f´ısicas co- rriendo en un hilo distinto al principal. Por ejemplo, el juego “Forza Motorsport 2 ” corr´ıasu motor de f´ısicaa 360 Hz mientras que el renderizado corr´ıaa 30-60 Hz [19].

4. Impacto y usos

Los motores son ampliamente usados hoy en d´ıay es considerada la norma a la hora de desarrollar videojuegos. Existen soluciones ‘first party’ y ‘third party’, siendo las primeras las soluciones ´unicamente para uso interno de la empresa, y el otro el sistema de licenciar el motor a cambio de ganancias monetarias.

Respecto a este ´ultimo,existen varios modelos, sobre todo en los ´ultimos a˜nosdonde se busca que los estudios indies sean capaces de acceder a estas he- rramientas. El modelo cl´asicose centra en pagar una licencia ya sea en pago ´unicoo en cuotas para acceder al motor durante un per´ıodo de tiempo definido. En 2013, decidi´olanzar su motor CryEngine 3 bajo un modelo “pay what you want” o “paga lo que quieras” donde los usuarios pod´ıandecidir si quer´ıan apoyar o no a los desarrolladores del motor [15]. Recientemente, este cambi´oa al modelo que utiliza desde su 4ta edici´onque consiste en pagar el 10 % de todas las ganancias al equipo detr´asdel motor gr´afico[7]. Existe tambi´en el modelo implementado por Unity, donde se puede utilizar la versi´ongratis si 4 Motores de Videojuegos la compa˜n´ıagenera menos de 100.000 USD al a˜noo est´aobligado a comprar la licencia en caso contrario [17].

Desde finales de la d´ecadapasada, el uso de motores de juego se ha extendido a ramas fuera del ´ambito de videojuegos. Se utiliza para crear simulaciones realistas en el campo militar, medicinal e incluso estudio de f´ısicay la ciencia [9].

5. ¿C´omofuncionan?

Explicar exactamente c´omose realiza todo esto puede llegar a ser bastante complicado y, adem´as,espec´ıfico.Existen diferentes arquitecturas de motores que var´ıanen distintos aspectos, pero la mayor´ıasiguen un esquema similar de dise˜no.

5.1. Gr´aficosy Renderizado

Un punto importante de la venta de los motores de juego de alto perfil como CryEngine, son los gr´aficosimpresionantes que pueden mostrar, combinado con la facilidad de producci´on.Los juegos en 3D son creados con modelos 3D como base, que son normalmente dise˜nadosen programas externos de modelado 3D como Maya o para luego ser importados al motor.

Figura 2. Captura de Hunt: Showdown (TBA), juego desarrollado con CryEngine V. Motores de Videojuegos 5

Una vez que el modelo ha sido insertado, pueden ser complementados con mapas de relieve o materiales reflexivos o transparentes y sombras para hacer un objeto realista. Esto ´ultimose logra gracias a tecnolog´ıasde iluminaci´on,que, en conjunto con el manejo de animaciones y part´ıculas,pueden darle vida al mundo del juego y los objetos dentro del mismo [4].

La mayor´ıade los componentes dedicados a desplegar las im´agenesen pan- talla, utilizan alguna API gr´aficacomo OpenGL, Direct3D o Vulkan desde a˜nos recientes, para poder dibujar p´ıxelesy mostrar objetos 2D o 3D en los moni- tores. Estas funciones normalmente son implementadas como clases donde se le pueden pasar objetos y par´ametros,e iteran sobre todos los objetos del mundo del juego y los muestra al usuario [12].

5.2. Audio

El sistema de audio, se encarga de reproducir la m´usicade fondo del juego, as´ı como tambi´ensus efectos de sonido. El sonido normalmente no sale de los parlan- tes exactamente como fue grabado, ya que los motores se encargan de ubicar los sonidos dentro del mundo tridimensional y su volumen es alterado dependiento donde este ubicado el jugador con respecto al sonido. Tambi´enexisten muchos m´etodos para hacer mas realista el sonido como modificar el tono y a˜nadirre- verbaci´onpara simular que rebota en las paredes de alrededor. No es lo mismo el ruido un disparo en un campo abierto a un disparo en un hangar por ejemplo [4].

En las librer´ıas de categor´ıa Open , OpenAL-Sof y PortAudio son buenas elecciones debido a que facilitan la implementaci´onde un sistema de audio independiente de su plataforma. Para decodificar audio, se suele integrar Xiph Theora para audio (.ogg) o Xiph Vorbis para video (.ogv) debido a que su eficiencia y libertad de regal´ıas[12].

5.3. Inteligencia Artificial

Todo motor de juego debe tener alguna forma de inteligencia artificial. Es- tos se encargan de controlar tus personajes no jugador o Non-Player Character (NPC) as´ıcomo los lugares donde aparecen. Normalmente, esto se logra con alguna librer´ıaencargada de encontrar rutas, ya sea de terceros o auto desarro- llada, combinado con las reglas de la l´ogica del juego que pueden ser controladas por el motor de algoritmos del sistema [12].

5.4. M´etodos de entrada

El motor de juego debe ser capaz de reconocer la entrada de acciones del usuario, ya sea por teclado, mouse o joysticks para ser capaz de jugar el juego. Si el juego, por ejemplo, est´abasado en DirectX, se utiliza en bucle de mensaje de Windows Xinput para lograr esto. Si no se cuenta con este soporte, ser´ıa 6 Motores de Videojuegos necesario escribir tu propio administrador de entradas, lo cual no resulta nada f´acily dependiente de la plataforma [12]. Existen muchos m´etodos de manejar la entrada, pero de estos son comunes, eventos o sondeo.

Los eventos de entrada funcionan con la computadora escuchando algun input o entrada (presionar el bot´ondel mouse, soltar una tecla del teclado, un gatillo presionado) y ejecutando alguna funci´onpredefinida. Esto puede ser combina- do con una tabla de mapeo de botones a acciones como “disparar” o “saltar”, as´ılos usuarios podr´anredefinir la disposici´onde botones de tal manera que el desarrollador pueda escribir el c´odigosin pensar en el m´etodo de entrada.

Figura 3. Configuraci´onde disposici´onde botones de un control DualShock 4.

El sondeo se utiliza normalmente cuando se trata de valores de posici´on,como las coordinadas XY de un mouse, o la cantidad de inclinaci´onde una palanca anal´ogica.El motor es capaz de traer estos cambios y depende del desarrollador reaccionar a esto, ya sea moviendo al personaje o rotando la c´amaradel juego [4].

5.5. Registros o Logging Este subsistema est´aintegrado de manera profunda con el resto del motor. Se encarga registrar todos los errores e informaci´ondisponible de variables a un archivo de texto para ser luego examinado por desarrolladores. Esto permite que sea m´asf´acilidentificar la causa de los errores para luego poder arreglarlos. Esto se deshabilita normalmente en el lanzamiento del videojuego ya que puede tener un alto impacto en la eficiencia [12]. Motores de Videojuegos 7

5.6. Manejador de recursos

Esta parte del sistema se encarga de liberar y cargar en memoria los datos de los niveles, texturas, modelos, sonidos y otros contenidos del juego en una forma predecible y controlada usando reservas de memoria. Este tambi´endebe ser capaz de rastrear el uso de los recursos durante la vida del programa para evitar sobrecargas de memoria y errores inesperados [12].

5.7. Funciones de red Desde las ´ultimasd´ecadas, se ha vuelto una pr´acticacom´unque los juegos tengan alguna forma de juego multijugador. Los m´etodos de pantalla dividida se logran dividiendo la salida en ventanas y dibujando independientemente en cada una. El juego de red por otro lado, se logra implementando una arquitectura de cliente-servidor o de pares para replicar de manera confiable el estado del juego en un momento a trav´esde m´ultiples m´aquinas separadas a distancias variables [12].

5.8. Algoritmos o Scripting

Una de las partes m´asimportantes de un motor de juego con la que se topa un desarrollador. La calidad y facilidad de uso de este sistema puede hacer que el motor sea amado o despreciado. La mayor´ıa de los motores trabajan con lenguajes bien establecidos (como Lua, Python, Ruby, C#, entre otros) o proveen alguna interfaz basada en texto y transiciones de diagramas de flujo. Estos normalmente se editan con alguna consola, editor de texto o entorno de desarrollo integrado de elecci´on[12].

5.9. Interfaz de usuario Debe haber un componente encargado de manejar los men´us,cajas de di´alogo y dem´asaspectos muestran informaci´one interact´uancon el usuario. Algunos motores como Unity o Unreal permiten que la interfaz de usuario vaya de la mano con el renderizado y se puedan mostrar varios men´us flotantes en espacios 3D. Es importane resaltar que estos deben tener APIs accesibles al resto del sistema de modo que los desarrolladores puedan implementar f´acilmente l´ogica a la interfaz [12]. 8 Motores de Videojuegos

Figura 4. Interfaz de usuario del juego Deus Ex: Mankind Divided (2016).

6. ¿Motores gr´aficoso de juegos?

Muchas personas suelen confundir los motores de juegos con motores gr´afi- cos o renderizado y vice versa. Estas dos clases de programas son parecidos en t´erminosde funciones pero son bastante diferentes uno del otro.

Un motor gr´aficocomo OGRE consiste solo de un renderizador y un mane- jador de recuros m´ınimos. Este est´apensado ´unicamente para dibujar y mostrar gr´aficos.Por lo tanto, los motores gr´aficossuelen ser de uso m´asgeneral que los motores de juego. Aunque estos puedan ser usados para desarrollar juegos cuando son complementados con otras librer´ıaspara tener todas las funcionali- dades, pueden ser tambi´enusado en casos que los otros subsistemas del motor de juegos no son necesarios (por ejemplo, demostraciones de planos y arquitectura en programas de dise˜no)[12].

7. Motores de juegos notables

Existen una cantidad muy grande de motores, por lo que abarcarlos todos resulta imposible. En esta secci´oncitaremos algunos motores que se destacan por su popularidad, usos o caracter´ısticas especiales. Primero se comenzar´apor motores de uso abierto, y luego comentaremos un poco sobre algunos motores propietarios. Si bien con estos ´ultimosno se tienen muchos datos debido a su naturaleza cerrada, se desarrollaron algunos de los juegos m´asexitosos con ellos por lo que vale la pena mencionarlos [21]. Motores de Videojuegos 9

7.1. Fusion

Clickteam Fusion es un motor de juego ya con varios a˜nosque se sigue utili- zando hoy en d´ıa. Este existe desde 1994 por lo que, tiene una comunidad muy activa detr´asy una documentaci´onmuy amplia. Utiliza un editor visual, por lo que no es necesario escribir c´odigopero es necesario saber que hace cada fun- ci´on.Como se han lanzado dos versiones y media en m´asde 20 a˜nos, no se han actualizado mucho por lo que resulta f´acilrecordar dichas funciones [5].

Caracter´ısticasprincipales

Enfoque de juegos: 2D. Lenguaje de scripting: Ninguno. Plataforma de desarrollo: Win/Mac. Plataforma objetivo: Windows, iOS, Android, HTML5, . Costo: >$100.

Juegos notables

Five Nights at Freddy’s (2014). The escapists (2014). Freedom Planet (2014).

Figura 5. Juegos desarrollados con Clickteam Fusion (de izquierda a derecha: The escapists, Five Nights at Freddy’s 2, Freedom Planet). 10 Motores de Videojuegos

7.2. RPG Maker

Aunque se ha utilizado para crear juegos de otros g´eneros, RPG Maker es un motor especializado para la creaci´onde juegos de tipo RPG como dice su t´ıtulo.La mayor´ıade las ediciones tienen un editor visual de mapa basado en casillas, lenguaje de scripting b´asicopara eventos y un editor de batallas. Incluye recursos predise˜nadoscomo personajes, sprites o eventos para ser utilizados por el desarrollador. La curva de dificultad es un poco mayor comparado con motores de tipo drag and drop ya que es necesario aprender algo de Ruby/Javascript para hacer cosas complejas [5].

Caracter´ısticasprincipales Enfoque de juegos: 2D. Lenguaje de scripting: Ruby/Javascript. Plataforma de desarrollo: Win. Plataforma objetivo: PC-8801, MSX2, PC-9801, Super Famicom, Windows, , PlayStation, , PlayStation 2, Game Boy Ad- vance, Nintendo DS. Costo: $80.

Juegos notables A Bird Story (2014). Lisa (2014). (2011). Motores de Videojuegos 11

Figura 6. Juegos desarrollados con RPG Maker (de izquierda a derecha: A Bird Story, Lisa, To the Moon).

7.3. Hace ya algunos a˜nos,el Instituto de Tecnolog´ıade Massachusetts desarroll´o un lenguaje de programaci´onvisual llamado Scratch. Es un m´etodo de ense˜nara los estudiantes como funcionan los c´odigossin sobre cargarlos de mucho conoci- miento t´ecnico.Debido a esto, funciona m´asbien como un puzzle, donde tienes que encontrar las piezas correctas para crear las acciones del software. Stencyl est´abasado en este modelo y resulta incre´ıblemente sencillo crear un juego y de paso aprender a programar. Las herramientas te permiten escribir c´odigo,pero igualmente, se puede desarrollar todas las funcionalidades usando ´arboles l´ogicos [5].

Caracter´ısticasprincipales Enfoque de juegos: 2D. Lenguaje de scripting: . Plataforma de desarrollo: Win/Mac/. Plataforma objetivo: Flash, HTML5, iOS, Android, Linux, OS X, Windows. Costo: $100.

Juegos notables Lakeview Cabin (2015). Ghost Song (TBA). 1 Mibibli’s Quest (2014).

1 TBA significa “To Be Announced”, o “A ser anunciado” que se refiere a que el producto no ha salido al mercado todav´ıa. 12 Motores de Videojuegos

Figura 7. Ghost Song (izquierda) desarrollado con Stencyl (derecha).

7.4. GameMaker Studio

GameMaker Studio ha tenido unos a˜nosrecientes importantes. De este mo- tor han salido varios juegos indies que han resultado en millones de ventas co- mo Hotline Miami, Undertale o Hyper Light Drifter. Es un motor simple pero poderoso que soporta ambos proyectos en 2D o 3D, aunque es utilizado mas comunmente para videojuegos en 2D. Una de sus ventajas es que puedes crear todos los recursos del juego en el editor as´ıpuedes ver de manera r´apidacomo ser´ala apariencia del juego. La interfaz tipo drag and drop hace que sea ideal para t´ecnicasde desarrollo de prototipos r´apidos,incluso para desarrolladores avanzados. Utiliza su propio lenguaje de scripting llamado GML [5].

El desarrollo en esta plataforma resulta f´acily sencillo en todos sus aspectos. No se necesita tener que lidiar con problemas de manejo de memoria o m´ultiples hilos. Pero as´ımismo, en caso de problemas de memoria, la depuraci´onpuede llegar a ser muy complicada. Comparado con otros motores del mercado, puede llegar a ser caro debido a que su precio inicial es de $99 [10].

Caracter´ısticasprincipales

Enfoque de juegos: 2D. Lenguaje de scripting: GameMaker Language (GML). Plataforma de desarrollo: Win/Mac. Plataforma objetivo: Windows, , 360, , PlaySta- tion 3, PlayStation 4, PlayStation Vita, OS X, , HTML5, Android, iOS, 8, . Costo: >$99. Motores de Videojuegos 13

Juegos notables

Hotline Miami (2007). Undertale (2013). Hyper Light Drifter (2004).

Figura 8. Juegos desarrollados con GameMaker Studio (de izquierda a derecha: Hotline Miami, Undertale, Hyper Light Drifter).

7.5. Cocos Creator

Cocos Creator es un motor de juego que utiliza -X de fondo, el cual es un framework de juego desarrollado en C++. Est´aorientado a juegos 2D principalmente. Incluye un sistema de UI que se adapta a cualquier tama˜node pantalla y sistemas de animaci´onpara entornos 2D [3].

Cuenta con licencia de MIT, y por lo tanto, es de c´odigoabierto y cuenta con una comunidad dedicada detr´as.Es bastante flexible, pero tambi´enm´as complicado que motorores similares e involucra una curva de aprendizaje m´as pronunciada. Es bastante eficiente en cuanto a recursos utilizados, pudiendo crear juegos de tan s´olo1,5 MB de espacio de almacenamiento. Es una buena elecci´onpara peque˜nosy medianos proyectos [10] [2].

Caracter´ısticasprincipales

Enfoque de juegos: 2D/3D. Lenguaje de scripting: JavaScript, Java, Lua. 14 Motores de Videojuegos

Plataforma de desarrollo: Win/Mac. Plataforma objetivo: Windows, Linux, OS X, iOS, Android, BlackBerry, Ti- zen. Costo: Gratis.

Juegos notables

Badland (2013). Angry Birds Fight! (2015). Geometry Dash (2013).

Figura 9. Juegos desarrollados con Cocos Creator (de izquierda a derecha: Badlands, Angry Birds Fight!, Geometry Dash).

7.6. Engine

Godot Engine es un proyecto iniciado en 2007 que se volvi´ode c´odigoabierto en 2014. Debido a esto, significa que no se deben pagar regal´ıasni se est´aforza- do a utilizar servicios o componentes en el proyecto. Tiene una comunidad muy activa detr´as,as´ıcomo actualizaciones y noticias de progreso constantes. Godot es bastante ligero, incluso con casi todos sus componentes instalados, ocupando s´olo30 MB. Tiene un enfoque hacia la eficiencia por lo que incluso el trabajo es ligero. Debido a esto, hasta los juegos resultan eficientes. Para ver el nivel de optimizaci´onque se busca lograr, Godot Engine es un juego desarrollado con Godot Engine. Motores de Videojuegos 15

Tiene un sistema de animaci´onsimple pero efectivo y un motor 2D dedicado en lugar de un 2D falso que utilizan otros motores al trabajar con el eje de pro- fundidad .aplanado”. Utiliza su propio lenguaje de scripting llamado GDScript el cual es muy similar a Python y a partir de la versi´on3.0, permite lenguajes como C#, Python, Go, D, Rust e incluso Nim. Para el sistema de estructura del juego, utiliza nodos y escenas, las cuales pueden contener m´asescenas y nodos dentro de cada una. Desde marzo de 2018, se encuentra disponible la versi´on3.0 disponible, la cual tiene un soporte mejorado para juegos 3D tambi´en[14].

Caracter´ısticasprincipales

Enfoque de juegos: 2D/3D. Lenguaje de scripting: GDScript/C#/Python/Go/D/Rust. Plataforma de desarrollo: Win/Mac/Linux. Plataforma objetivo: Windows, macOS, Linux, UWP, iOS, Android, HTML y Web Assembly. Costo: Gratis.

Figura 10. Juegos en desarrollo con Godot Engine (de izquierda a derecha: Ex Zodiac, Protocorgi, Tenacious).

7.7. Unity

Los juegos desarrollados en Unity tienen un gran alcance, ya que su soporte cubre 27 plataformas incluyendo las ´ultimas consolas como el 16 Motores de Videojuegos y los tel´efonoscelulares. La compa˜n´ıacuenta con mas de cinco millones de desa- rrolladores registrados que utilizan la herramienta mensualmente.

El motor es una plataforma extremadamante poderosa en las manos de un equipo con experiencia. Aun as´ı,existe un numero amplio de soluciones para desarrolladores que prefieren manejarse con interfaces visuales. Debido a esto, existe una amplia documentaci´onpara ayudar a los equipos con el desarrollo, incluyendo cursos en plataformas como Udemy o Bitdegree.

Incluye planes de uso gratis hasta que se consigan ganancias que superen los cien mil d´olaresy una tienda muy variada llena de recursos (muchos de ellos gratis) para los juegos [5][22].

Caracter´ısticasprincipales Enfoque de juegos: 2D/3D. Lenguaje de scripting: C#. Plataforma de desarrollo: Win/Mac/Linux. Plataforma objetivo: Windows, OS X, Linux , Xbox One, U, New 3DS, Nintendo Switch, PlayStation 4, PlayStation Vita, Windows Pho- ne, iOS, Android, BlackBerry 10, Tizen, Unity Web Player, Windows Store, WebGL, , Gear VR, Android TV, Samsung Smart TV. Costo: Gratis (Suscripci´on >$35).

Juegos notables

Ori and the Blind Forest (2015). Pok´emonGO (2016). Yooka-Laylee (2018). Motores de Videojuegos 17

Figura 11. Juegos desarrollados con Unity (de izquierda a derecha: , Pok´emonGO, Yooka-Laylee.

7.8. Unreal Engine Unreal Engine es considerado uno de los motores con mejores visuales en el mercado. Tiene un enfoque orientado a t´ecnicasgr´aficasas´ıcomo iluminaci´on para producir gr´aficos espectaculares. Debido a eso, es ampliamente utilizado para el desarrollo de juegos de categor´ıa AAA, o juegos de alto presupuesto [5][23].

Muchos de los juegos mas exitosos hacen uso de este motor. Debido a esto, es un motor muy popular, y con tantos desarrolladores haciendo uso de este, exis- ten miles de tutoriales y materiales para usar y armar un juego. Tiene uno de los mejores soportes del mercado, siendo actualizado constantemente y herramien- tas a˜nadidasen cada actualizaci´on.Apunta a una multitud de plataformas, y recientemente abarat´osus costos para que estudios mas peque˜nospuedan hacer uso del mismo. Sin embargo, sigue siendo un motor muy complejo y puede ser mucho para personas que est´anempezando o cuentan con poca experiencia [10].

Caracter´ısticasprincipales Enfoque de juegos: 3D. Lenguaje de scripting: GLSL, Cg, HLSL, UnrealScript, C++, Blueprints. Plataforma de desarrollo: Win. Plataforma objetivo: , macOS, Linux, SteamOS, HTML5, iOS, Android, Nintendo Switch, PlayStation 4, Xbox One, Magic Leap One, SteamVR/HTC Vive, Oculus Rift, PlayStation VR, Google Daydream, OSVR, Samsung Gear VR. Costo: Gratis (5 % de las ganancias generadas). 18 Motores de Videojuegos

Juegos notables

Batman Arkham Knight (2015). Street Fighter V (2016). Fortnite (2017).

Figura 12. Juegos desarrollados con Unreal (de izquierda a derecha: Batman Arkham Knight, Street Fighter V, Fortnite).

7.9. CryEngine

Este motor de juego es desarrollado por el equipo de Crytek. Incluye el CryEn- gine Marketplace que es un mercado virtual que permite a los desarrolladores acceder a la librer´ıade assets de Crytek as´ıcomo a cientos de materiales, sonidos y objetos en 3D creados en CryEngine por la propia comunidad y vendedores de confianza. Incluye sporte para las plataformas m´asrecientes incluyendo Plays- tation VR, HTC Vive y Oculus Rift [15][20].

Tiene uno de las herramientas de audio m´aspoderosas, Fmod, incluida den- tro del motor, as´ıcomo capacidades para crear inteligencia artificial de manera sencilla. Por el otro lado, es un motor relativamente nuevo, as´ıno cuenta con una comunidad muy amplia todav´ıay al igual que Unreal, resulta d´ıficilpara principantes [10].

Caracter´ısticasprincipales

Enfoque de juegos: 3D. Motores de Videojuegos 19

Lenguaje de scripting: Lua, C#. Plataforma de desarrollo: Win. Plataforma objetivo: Windows, OS X, Linux, PlayStation 3, PlayStation 4, , Xbox 360, Xbox One, iOS, Android. Costo: Gratis (5 % de las ganancias generadas).

Juegos notables (2007). (2004). Hunt: Showdown (TBA).

Figura 13. Juegos desarrollados con CryEngine (de izquierda a derecha: Far Cry 3, , Hunt: Showdown).

7.10. Source Engine Source Engine origina del motor de juego GoldSrc utilizado por Quake. Sour- ce es un motor modular, se gu´ıapor un modelo de actualizaciones incrementales en lugar de versiones. Los diferentes subsistemas del motor pueden ser actua- lizados independientemente y manteniendo la compatibilidad de los proyectos [25].

Caracter´ısticasprincipales Enfoque de juegos: 3D. Lenguaje de scripting: Lua. Plataforma de desarrollo: Win. Plataforma objetivo: Windows, OS X, Linux. Costo: Por contrato (>$25.000). 20 Motores de Videojuegos

Juegos notables

Dota 2 (2013). (2007). Titanfall 2 (2016).

Figura 14. Juegos desarrollados con Source Engine (de izquierda a derecha: 2, , Titanfall 2).

7.11.

En 2015, Crytek licenci´oel uso de CryEngine a Amazon, y este ´ultimodesa- rroll´oel motor de juego Lumberyard teniendo como base la arquitectura de CryEngine. El motor es totalmente gratis de usar y de c´odigoabierto. Inclu- ye integraci´oncon Amazon Web Services para permitir que los desarrolladores alojen sus juegos en los servidores de Amazon. Contiene una plataforma mul- tijugador llamada GameLift donde se cobra una tarifa de $1.50 por cada 1000 jugadores activos. Tambi´enincluye integraci´oncon Twitch con funciones como Twitch ChatPlay que permite que los miembros del chat manejen el juego, o Twitch JoinIn que permite que los due˜nos de los canales inviten a miembros del chat a jugar con ellos.

Debido a ser un motor de juego relativamente nuevo, no cuenta con juegos o casos de ´exitoen el mercado. Existen un par de juegos siendo desarrollados actualmente por Amazon Game Studios [1][8]. Motores de Videojuegos 21

Caracter´ısticasprincipales Enfoque de juegos: 3D. Lenguaje de scripting: Lua. Plataforma de desarrollo: Win. Plataforma objetivo: PlayStation 4, Xbox One, Windows. Costo: Gratis.

Juegos notables Breakaway (Cancelado). New World (TBA). Crucible (TBA).

Figura 15. Juegos en desarrollo con Amazon Lumberyard (de izquierda a derecha: New World, Crucible).

7.12. Es un motor de juego propietario de EA o desarrollado por EA Dice y mantenido hoy en d´ıapor Frostbite Labs. Fue originalmente utilizado para el desarrollo de Battlefield: Bad Company, pero luego se ha extendido a otros tipos de juegos, pero siempre exclusivo para juegos de Electronic Arts [18].

Juegos notables Battlefield V(2018). Need for Speed (2015). Battlefront II (2017). 22 Motores de Videojuegos

Figura 16. Juegos desarrollados con Frostbite (de izquierda a derecha: Battlefield V, Star Wars Battlefront II, Need for Speed 2015).

7.13. RAGE Engine RAGE (Rockstar Advanced ) es un motor de juego propieta- rio perteneciente a Rockstar Games [24]. Tiene una alta capacidad para manejar mundos de juegos grandes, inteligencia artificial compleja, efectos de clima, c´odi- go de red optimizado y una multitud de estilos de juegos que puede desarrollarse en el. Fue considerado uno de los mejores motores de la 7ma generaci´onde videojuegos (2005 - 2013 aproximadamente) [16].

Juegos notables Grand Theft Auto V (2013). Red Dead Redemption (2010). Max Payne 3 (2012).

7.14. Conocido originalmente como NetImmerse y desde 2003 como Gamebryo. Es utilizado por una gran cantidad de desarrolladores y estudios y apunta a ser mul- tiplataforma. Entre las compa˜n´ıasresaltantes econtramos a Atlus, Trion Worlds, 2K Games, Disney, , , Firaxis Games, , Sony, Shanda, NCsoft, Rockstar Games, entre otros [6].

Juegos notables Fallout New Vegas (2010). Epic Mickey (2010). Divinity II (2010). Motores de Videojuegos 23

Figura 17. Juegos desarrollados con RAGE (de izquierda a derecha: Max Payne 3, Grand Theft Auto V, Red Dead Redemption).

Figura 18. Juegos desarrollados con Gamebryo (de izquierda a derecha: Fallout New Vegas, Epic Mickey, Divinity II). 24 Motores de Videojuegos

8. ¿C´omoelegir el motor correcto?

Elegir el motor correcto para el trabajo puede ser una tarea complicada, los desarrolladores cuentan con una cantidad muy grande de opciones desde escribir su motor propio, o licenciar alguno de las decenas que hay en el mercado. Existen varias caracter´ısticasque pueden afectar la opini´onacerca de estos [5].

Plantillas de juegos: B´asicamente son juegos pre armados. Solamente ha- ce falta cambiar algunos peque˜nosdetalles, importar tus propios gr´aficosy cambiar algunos valores como el color del cielo por ejemplo. Drag and drop: Facilita el uso para gente con poca experiencia, no es necesa- rio codificar. Te permite agregar eventos o propiedades seleccionandolas de una lista. Por ejemplo, a˜nadirla propiedad “s´olido”al un objeto para que no atraviese otros objetos. Scripting visual: Te permite elegir diferentes funciones que replican c´odigo sin tener que escribirlo. Codificaci´on:Algunos motores utilizan sus propios lenguajes, tratando de hacerlo lo m´asf´acilposible para los novatos. Es una buena manera para aprender a programar. Otros utilizan lenguajes familiares y conocidos, por lo que si ya se cuenta con experiencia, se tiene control total sobre el juego.

Aparte de esto, hay otros factores importantes a tener en cuenta a la hora de hacer la elecci´on[5].

Tu plataforma de desarrollo: ¿PC? ¿Mac? ¿Linux? Algunos motores no so- portan todas las plataformas, as´ı que esto ser´aun inicio para limitar las opciones. Tambi´enes importante tener en cuenta las especificaciones de la m´aquina,ya que m´aquinasviejas tendr´anproblemas corriendo los motores de m´asalta complejidad. El g´enerodel juego: Puede ser buena idea apuntar a un motor especializado en un g´eneroespec´ıficosi encaja con la idea del juego. Por ejemplo, si se quiere crear un RPG sin programar mucho, RPG Maker es una buena idea. Si la idea es un juego con visuales impresionantes, un motor pesado como Unreal o CryEngine est´anmejor preparados para la tarea. La perspectiva del juego: Este punto tiene algo que ver con el punto anterior. Algunos motores son mejores para entornos 2D, mientras que otros tienen 3D como su enfoque. Los juegos 3D suelen ser mas complejos y con una mayor curva de dificultad. Las habilidades art´ısticas:Algunos motores vienen con un editor visual in- cluido que te permite crear arte directamente en ellos. Normalmente esto significa sprites en p´ıxeleso editores de terreno. La plataforma objetivo: Esto tambi´enpodr´ıaser dicho, d´ondeplaneas que tu juego se pueda jugar. ¿Se apunta a un juego web? ¿O Android/iOS? ¿O consolas como PS4/Xbox? Existen motores multiplataforma que pueden hacer que lanzar el juego en m´asde una plataforma involucre un esfuerzo m´ınimo. Motores de Videojuegos 25

La dedicaci´on:Esto quiere decir qu´etanto esfuerzo se va a dedicar al desa- rrollo del juego. Si se hace como pasatiempo, elegir la soluci´onm´assimple ser´ıabuena idea. Por otra parte, si se tiene un equipo y se ambiciona un juego grande y complejo, ser´ıamejor tomar un motor con buena reputaci´on como Unity o Unreal. Otras caracter´ısticas: ¿Se planea trabajar solo o en equipo? ¿Se necesita documentaci´on?¿Recibe actualizaciones a menudo? Estas preguntas, entre otras, pueden afectar cu´ales el motor ideal para el proyecto, as´ıcomo su futuro.

8.1. Tipos de juegos

Existen varios tipos de juegos, algunos mas simples de crear que otros. Por lo tanto, algunos tipos ser´ıanimposible de crear sin ning´unconocimiento de progra- maci´on,como ser´ıael caso de un RPG multijugador masivo en l´ınea(MMORPG) [5].

Juegos simples en 2D Estos son los m´asf´acilesde crear. El tiempo invertido se emplear´ıa en aprender a utilizar el motor, as´ı como tambi´enen crear los niveles, arte y conceptos. Muchos de estos g´enerosson populares con motores con sistemas drag and drop. Algunos ejemplos de estos juegos ser´ıan:

Plataformas. Puzzles. Carreras. Aventuras de texto.

Juegos complejos en 2D Estos juegos tienen alg´unsistema que lo hace m´as complicado, como f´ısicas,inteligencia artificial o juego en l´ınea.Llevan m´as tiem- po de dedicaci´onque los juegos simples y requieren algo de conocimiento de programaci´on.Algunos g´enerosde esta categor´ıapueden ser:

RPG. Peleas. Aventuras.

Juegos simples en 3D Con mundos tridimensionales, el desarrollo de juegos empieza a complicarse m´as.Resulta com´unutilizar hasta 1 a˜noaprendiendo a usar los motores debido a su capacidad. Algunos ejemplos de juegos simples en 3D son:

First Person Shooters. Aventuras. Supervivencia. 26 Motores de Videojuegos

Juegos complejos en 3D Estos son los juegos de m´asalta dificultad. Como principiante resultan muy d´ıficil,aunque no imposible. Es posible invertir va- rios a˜nos tanto en el aprendizaje as´ıcomo el desarrollo de los juegos. Algunos ejemplos son:

MMOs o multijugadores masivos en l´ınea. Simuladores. Realidad virtual. Estrategia en tiempo real.

Cuadro 1. Resumen de las caracter´ısticasde los motores abiertos mencionados [11][13].

Motor Codificaci´on Plataforma Popularidad Costo Clickteam Fusion No Win/Mac Moderada >$100 RPG Maker Opcional (Ruby/JS) Win Moderada $80 Stencyl Opcional (HaXe) Win/Mac/Linux Alta $100 GameMaker Studio Opcional (GML) Win/Mac Alta >$99 Unity Si (C#/JS) Win/Mac/Linux Alta Gratis (Suscripci´on >$35) Unreal Si (C++) Win Alta Gratis (5 % de ganancias) CryEngine Si (Lua) Win Moderada Gratis (5 % de ganancias) Source Si (Lua) Win/Mac/Linux Moderada Por contrato (>$25.000) Lumberyard Si (Lua) Win Baja Gratis Godot Si (GDScript) Win/Mac/Linux Moderada Gratis

9. Conclusi´on

Cada vez existen m´asmotores de juegos en el mercado. A la hora de crear un juego, no son necesarios pero facilitan en gran medida las tareas de desarrollo. La herramientas que proveen hacen que el proceso sea lo mas sencillo posible para que de esta manera los desarrolladores puedan concentrarse en otros aspectos del proyecto. Aprender a manejar correctamente un motor espec´ıficof´acilmente puede tomar a˜nos,pero tambi´enas´ı,se vuelve f´acildesenvolverse y plasmar las ideas en el entorno de desarrollo de forma eficiente. Hay que tener en cuenta todos los aspectos del proyecto a la hora de elegir el motor de juego ideal ya que esto puede afectar los presupuestos del equipo, as´ıcomo l´ımitesdel juego. Es tambi´enimportante saber que el motor no define el juego, pero si facilita el desarrollo, por lo que tampoco resulta buena idea dedicar muchos recursos a este punto de hallar el motor si se pierde tiempo de desarrollo valioso en este aspecto.

El mundo de los videojuegos y la facilidad de que cualquier persona con algo de experiencia con computadoras y un poco de inter´espueda crear sus propias ideas y plasmarlas en un juego sin saber de programaci´onno ser´ıaposible sin el avance de los motores de juego que tenemos hoy en d´ıa. Motores de Videojuegos 27

Referencias

1. Amazon: Amazon lumberyard - cree sus m´asambiciosos juegos (2018), https: //aws.amazon.com/es/lumberyard/, Ultimo´ acceso 20 Sep 2018. 2. Apps, N.G.: Top 5 tools for development (2017), https://www. newgenapps.com/blog/top-sdk-tools-for-mobile-game-development 3. Cocos: Cocos2d-x - world’s #1 open-source game development platform (2018), http://www.cocos2d-x.org/creator, Ultimo´ acceso 24 Sep 2018. 4. Enger, M.: Game engines: How do they work? (2013), https://www.giantbomb. com/profile/michaelenger/blog/game-engines-how-do-they-work/101529/, Ultimo´ acceso 24 Sep 2018. 5. Florian: Websitetooltester - the best game engines for beginners (2018), https: //www.websitetooltester.com/en/blog/best-game-engine/, Ultimo´ acceso 20 Sep 2018. 6. Gamebryo: Gamebryo (2018), http://www.gamebryo.com/, Ultimo´ acceso 20 Sep 2018. 7. Games, E.: What is unreal engine 4 (2018), https://www.unrealengine.com/ en-US/what-is-unreal-engine-4, Ultimo´ acceso 24 Sep 2018. 8. Good, O.S.: Amazon rolls out lumberyard, an entirely free game de- velopment engine (2016), https://www.polygon.com/2016/2/9/10949002/ amazon-lumberyard-free-games-engine/ 9. Hughes, J.: Us government to use unreal engine 3 for medical, crime-fighting and thinking simulation — digi- tal trends (2012), https://www.digitaltrends.com/gaming/ us-government-to-use-unreal-engine-for-medical-crime-fighting-and-thinking-simulation/, Ultimo´ acceso 24 Sep 2018. 10. Jasani, T.: The top 10 engines that can help you make your ga- me — venturebeat (2014), https://venturebeat.com/2014/08/20/ the-top-10-engines-that-can-help-you-make-your-game/ 11. Jordan, J.: Gamasutra - engines of creation: An overview of game en- gines (2008), https://www.gamasutra.com/view/feature/132226/engines_of_ creation_an_overview_.php, Ultimo´ acceso 24 Sep 2018. 12. Kalderon, E.: Game engines: What they are and how they work (2011), https://nullpwd.wordpress.com/2011/05/09/ game-engines-what-they-are-and-how-they-work/, Ultimo´ acceso 24 Sep 2018. 13. Khalifa, A.: Gamasutra: Ahmed khalifa’s blog - game engines galo- re (2008), https://www.gamasutra.com/blogs/AhmedKhalifa/20170315/293689/ Game_Engines_Galore.php, Ultimo´ acceso 24 Sep 2018. 14. Machado, D.: Why we choose godot engine – rock milk articles – medium (2017), https://medium.com/rock-milk/why-godot-engine-e0d4736d6eb0 15. Soriano, D.: Crytek presenta su motor gr´aficocryengine v (2018), https://es.ign. com/crytek/101265/news/crytek-presenta-su-motor-grafico--v 16. Stead, C.: The 10 best game engines of this genera- tion - (2018), https://www.ign.com/articles/2009/07/15/ the-10-best-game-engines-of-this-generation 17. Unity: Products (2018), https://unity3d.com/es/unity, Ultimo´ acceso 24 Sep 2018. 18. Wikipedia: Frostbite (game engine) (2018), https://en.wikipedia.org/wiki/ Frostbite_(game_engine), Ultimo´ acceso 24 Sep 2018. 28 Motores de Videojuegos

19. Wikipedia: Game engine (2018), https://en.wikipedia.org/wiki/Game_engine, Ultimo´ acceso 24 Sep 2018. 20. Wikipedia: List of cryengine games (2018), https://en.wikipedia.org/wiki/ List_of_CryEngine_games, Ultimo´ acceso 20 Sep 2018. 21. Wikipedia: (2018), https://en.wikipedia.org/wiki/List_ of_game_engines, Ultimo´ acceso 20 Sep 2018. 22. Wikipedia: (2018), https://en.wikipedia.org/wiki/List_ of_Unity_games, Ultimo´ acceso 20 Sep 2018. 23. Wikipedia: List of unreal games (2018), https://en.wikipedia.org/wiki/List_ of_Unreal_Engine_games, Ultimo´ acceso 20 Sep 2018. 24. Wikipedia: Rockstar advanced game engine (2018), https://en.wikipedia.org/ wiki/Rockstar_Advanced_Game_Engine, Ultimo´ acceso 24 Sep 2018. 25. Wikipedia: Source (game engine) (2018), https://en.wikipedia.org/wiki/ Source_(game_engine), Ultimo´ acceso 24 Sep 2018.