En estas semanas de confinamiento, me ha estado haciendo compañía el Unreal Engine 4, motor de videojuegos creado por Epic Games.

Ya he escrito anteriormente por aquí algún post en el que lo mencionaba de pasada, como núcleo de varios sistemas innovadores de producción virtual. Pero sólo ahora que le he podido echar unas horas de las que habitualmente no disponía, me atrevo a escribir sobre la disrupción que supone y las altas expectativas que tanto la producción de videojuegos como la audiovisual han depositado en él.

¿Por qué mola Unreal? 

La semana pasada, Epic Games lanzó este video en el que presumían de las posibilidades que ofrecerá el futuro Unreal 5 sobre la futura PS5:

No me negaréis que mola muchísimo: las texturas parecen reales, el movimiento del personaje es natural, la demo va fluída y…. ¡qué luz!

Ya está. Unreal mola mucho. Fin del artículo.

 

 

 

 

 

 

Bueno, venga, voy a elaborar un poco más. Resulta que me picaba la curiosidad después de varios años en los que los vídeos de Epic Games se colaban de vez en cuando en mis recomendados de YouTube, y mucho más desde que vi que Unreal estaba en el corazón de la mayoría de tinglados de producción virtual que conocía. Así que me hice una cuenta y me lo instalé a mediados de marzo. Lo ejecuté y tras preguntarme si quería crear un proyecto de videojuegos o producción virtual me mostró una pantalla como ésta:

Menú Unreal

Y flipé. A lo mejor vosotros sois normales, pero a mí entorno que nada más empezar me da a elegir entre crear un shooter en primera persona, un plataformas de scroll lateral, una producción virtual o un tercera personal es algo que me pone bastante contento. Soy así de fácil.

Lo que no es fácil, al menos para mis devaluadas neuronas de boomer, es el propio Unreal. Por suerte, no faltan tutoriales sobre cada una de sus características, tanto del canal oficial como de YouTubers desprendidos que regalan su conocimiento. Además, un parpadeante icono de un birrete en el propio GUI recuerda constantemente que hay más conocimiento disponible.

Ahora, tras dos meses y medio con él, y aunque me queda todavía un montón de cosas que aprender, ya voy teniendo una visión general de cómo funciona.

¿Qué es?

Unreal es un entorno de creación 3D diseñado para crear videojuegos que sirve para muchas otras cosas más, y que absorbe horas como si fuese uno de esos juegos. Permite usar personajes y animarlos, si bien ni la creación de personajes ni la animación son su fuerte, al menos tal y como viene de fábrica. No pasa nada, se importan fácilmente desde otros paquetes.

Lo que sí es muy sencillo es traerse un personaje riggeado (o sea, no sólo el muñeco, sino sus “huesos” virtuales, que permiten darle vida como a una marioneta) y animaciones prediseñadas desde otros entornos y empezar a verlo moverse. Por ejemplo, si se crea un proyecto del tipo “tercera persona” y sin tocar nada, ya tendríamos un ejecutable que nos permite mover a un maniquí por el escenario, con animaciones de caminar y correr y detección de obstáculos. Es decir, un juego funcional en el que sólo faltaría dar un sentido a todo ese correr de un lado a otro. Y quien dice un personaje dice cualquier tipo de asset.

También es relativamente sencillo crear un mundo virtual en el que ambientar la acción. Además de la integración con Megascans (una base de datos brutal de objetos y texturas capturados fielmente desde el mundo real con fotogrametría), dispone de asistentes para modificar la topografía del terreno y “dibujar” los distintos tipos de suelo y hasta la vegetación, mecida por el viento, que lo puebla.

Ofrece la posibilidad de que el render sea en raytracing, de modo que la representación de la luz sea fidedigna, y el editor de materiales incorpora la mayor parte de tecnologías que aportan realismo (un montón de palabrejas en la lengua oscura de Mordor que no transcribiré aquí).

Tiene un simulador atmosférico que recrea la luz natural del sol, lo que permite observar el paso del día o vivir una “hora mágica” de atardecer perpetua. Acepta todo tipo de formatos de archivo en la entrada y la salida, y está bastante preparado para integrarse en pipelines de postpro.

También es capaz de simular partículas y tiene un módulo de físicas realistas muy práctico para cosas que se caen, que se rompen, etc. Simulación de pelo, simulación de ropa, inteligencia artificial para personajes, desarrollo para multijugador y multiplataforma. Realidad Virtual, Realidad Aumentada, Realidad Mixta,  VR, AR y MR, captura de movimiento y facial en tiempo real (nativa o a través de soft intermedio, según la tecnología), cámaras virtuales y  un secuenciador que funciona como verdadera timeline dentro de todo este tinglado.

Dispone también de un Marketplace en el que se puede adquirir assets nativos y nuevas funcionalidades y, pese a que ofrece un sistema de programación visual, absolutamente todo se puede alterar picando tecla en C++, lenguaje sobre el que está construido.

Pero lo mejor de todo es que, una vez compilado, el producto de todas estas cosas ¡funciona en tiempo real!

De ahí su creciente utilidad en producción virtual. Lo hemos visto en The Mandalorian, donde sustituyeron la ya anticuada pantalla verde por proyecciones con LEDs cuyo contenido se adapta al movimiento de la cámara y que, además de integrar fondos, ilumina diegéticamente. Lo vemos todos los días en la tele, cuando insertan objetos virtuales y hasta reconstruyen totalmente un set vacío en realidad. Lo vemos en los estudios de captura de movimiento, interactuando con personajes y actores reales. Puede reproducir el movimiento de cámaras y maquinaria de cámara, o simular cámaras virtuales con un simple iPad. Su uso como herramienta de previsualización de escenas complejas es también ya un estándar en la industria.

Por último, otro de sus fuertes es su escalabilidad: desde un modesto realizador de provincias con una Kinect y un iPhone hasta un completo estudio multinodo de producción virtual pueden beneficiarse de sus ventajas. Además cabe tener en cuenta que, en proyectos transmedia, los assets pueden ser cómodamente portados de un medio a otro.

¿Va a sustituir la producción audiovisual tal y como la conocemos? Claro que no. ¿Es una herramienta más en la paleta que sirve de navaja suiza para un montón de cosas? Sin duda.

¿Qué es un motor de videojuego?

Antiguamente, en la prehistoria de las recreativas, del Atari y el Spectrum y hasta de los primeros juegos para PC, los desarrolladores de videojuegos se curraban su propio código, con el que funcionaban todos los subsistemas en sus obras: interfaz de usuario, gráficos, control, personajes, escenarios, nivel de dificultad, enemigos, premios, sonido…

Todo desarrollo informático tiende a la modularidad cuando se hace suficientemente complejo y el desarrollo de videojuegos no es una excepción. Así se evita tener que repetir trabajos y se reducen los costes tanto en tiempo como en dinero, readaptando lo ya desarrollado, reciclando código y centrándose únicamente en lo novedoso.

Los más viejos del lugar recordarán las aventuras gráficas de los 80, juegos point-and-click cuyo éxito se basaba en el el ingenio, los guiones y una interfaz del control que hacía de ellos más un cuento gráfico interactivo que lo que hoy consideramos un videojuego. Pues bien, aquellas producciones de Lucasarts como Indiana Jones y Monkey Island funcionaban usando un entorno de desarrollo llamado SCUMM, que soportaba el funcionamiento de todos ellos, permitiendo que los desarrolladores se centrasen precisamente en la propia aventura.

Ya en los 90, los populares Wolfenstein, Doom y Quake se ejecutaban sobre un núcleo común en el que únicamente cambiaban el aspecto y comportamiento de oponentes, armas y escenarios, liberando a los programadores de tener que construir todo desde cero. De hecho, parte de la plataforma estuvo disponible para los usuarios de calle, que comenzaron a crear niveles, personalizar personajes y, en general, modificar el juego a su gusto, creando una cultura MOD que pervive hasta nuestros días.

La creación de motores de videojuego permitió modificaciones de juegos tan disparatadas como el Doom del Chiquito de la Calzada.

 

Actualmente, y salvo algún indie loco autosuficiente, todo el mundo desarrolla los videojuegos sobre motores, un conjunto de librerías complementadas con un entorno de desarrollo más o menos sofisticado.

Durante mucho tiempo, los motores fueron exclusivos de las compañías que los desarrollaron para sus propios títulos y eran valiosos activos sujetos al secreto industrial que permitían marcar la diferencia. Aún hoy, hay empresas que trabajan sobre sus propios motores y no los comparten con nadie.

Sin embargo, la exclusividad tiene un precio, y es que el coste de cualquier mejora o modificación recae únicamente en la empresa propietaria. Según fue creciendo y ampliándose el mercado, las plataformas se diversificaron y aumentó la dificultad técnica del desarrollo, cuyo coste podía ser enorme, por ejemplo, a la hora de portar un título de una máquina a otra, así que se empezaron a otorgar licencias para terceros con el objetivo de recuperar la inversión.

Entonces, ¿qué es un motor de videojuego? Es un conjunto reutilizable de librerías, herramientas, e interfaces que proporcionan un entorno de desarrollo integrado, lo que agiliza la producción de videojuegos, permite la diversificación de tareas y modulariza sus atributos.

Y encima, ahora se pueden usar para otras muchas cosas.

Otros motores de videojuego

¿Por qué he elegido Unreal para emplear mi tiempo? Lo primero porque Unreal es gratis para juguetear, sólo cobran un porcentaje de lo que hayas desarrollado con él si se distribuye finalmente. Lo segundo porque he visto que lo usaba un montón de gente “que sabe”, pero en realidad no sabría decidir cuál es el mejor motor, y ya hay suficiente discusión al respecto.

O sea, lo he elegido un poco porque sí. Cada uno tiene sus ventajas y sus inconvenientes, yo no soy desarrollador de videojuegos y no estoy en posición de recomendar nada más allá de la opinión particular que puede tener cualquier hijo de vecino.

Unity

  • Uno de los reyes del indie, se distribuye en dos versiones, Personal (gratuita), Plus y Pro, en función del volumen del desarrollador. Todas ellas permiten acabados profesionales, no obstante.
  • Tiene, como Unreal, aplicaciones más allá del desarrollo de videojuegos: industria audiovisual, visionado de prototipos en ingeniería y arquitectura, etc.
  • Programación en C#
  • Además del 3D, su parte 2D lo hacen especialmente atractivo para desarrollos indie y retro.
  • Creciente base de usuarios, comunidades y desarrolladores de plugins y añadidos.
  • Especialmente amigable en desarrollos para dispositivos Apple, aunque funciona también para PC, PS4, XBOX One y Nintendo Switch.
  • Todas las características de un motor competitivo.

Cryengine

  • Originalmente desarrollado por Crytek para NVIDIA, fue después adquirido por Ubisoft, y es con el que están hechos todos los Far Cry y otros títulos de la desarrolladora francesa.
  • El código generado en él tiene fama de ser el más eficiente.
  • Solían estar orgullosos de tener los mejores gráficos, en especial en lo que se refiere a la creación de mundos abiertos, pero eso puede estar cambiando.
  • Creciente implementación de recursos para el sector audiovisual y otros sectores.
  • Empujados por la industria, ya disponen también de una versión gratuita. O casi.
  • Base de usuarios limitada, desarrollo complejo.

Gamemaker

  • Sencillo de aprender y manejar. No exige conocimientos de programación (aunque dispone también de su propio lenguaje, GML
  • Si a tus hijos les están enseñando a hacer videojuegos en el colegio, lo más probable es que sea con Gamemaker.
  • Ideal para pequeños proyectos personales, así como para desarrollar juegos de marca para ordenador, móviles y tablets.

Godot

  • Motor creado por el MIT bajo licencia GNU. O sea, código abierto.
  • Multilenguaje: el lenguaje nativo es GDScript, similar a Python, pero también permite C++ y C#
  • Orientado al desarrollo en comunidad. Es muy sencillo crear grupos de trabajo multidisciplinares que colaboren juntos en el mismo proyecto.
  • Características profesionales que se acercan a gran velocidad a las de los motores “grandes” gracias a la actividad de sus usuarios.

Hay otros muchos: AppGameKit, Amazon Lumberyard, RPG Maker, Urho3D, SpriteKit, Buildbox

Pero ya paro, creo que ya está bien por esta entrega.

Conclusiones

Vivimos el mejor de los tiempos y el peor de los tiempos; la edad de la sabiduría y también de la locura; la época de las creencias y de la incredulidad; la era de la luz y de las tinieblas; la primavera de la esperanza y el invierno de la desesperación.

Hoy es posible acceder a herramientas que están en primera línea tecnológica de forma gratuita o muy accesible, y escalar con ellas hasta lo más grande en función del tamaño del proyecto. Es posible expresarnos con facilidad no ya con el lenguaje audiovisual (eso ya lo sabíamos) sino incluso en el medio interactivo, y usar lo que tenemos a mano para ir un paso más allá o simplemente para reducir costes en nuestros flujos de trabajo.

Unreal y sus competidores han llegado para quedarse, y sólo cabe esperar la proliferación de nuevas formas de conectar y emocionar en un mundo que ya ha cambiado para siempre.

Al fin y al cabo, lo bueno que tiene expresarse a través de un ordenador es que permite el distanciamiento social de forma automática… al menos hasta que haya una vacuna.