Motores De Videojuegos
Total Page:16
File Type:pdf, Size:1020Kb
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 c´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 Unity. 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 Id Software, 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, Crytek 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 Unreal Engine 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 Blender 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 Source, 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].