Epic Games nos ha dejado ver lo que vamos a poder alcanzar en la nueva generación con la nueva versión de su motor, Unreal Engine 5, y el futuro promete ser impresionante. Se ve que el parte del dinero de Fortnite está yendo a I+D, porque la tecnología parece ser una especie de sueño hecho realidad, no sólo para los jugadores, sino también para los desarrolladores. Pero ¿qué significa toda esta palabrería? ¿Qué es Nanite, Lumen y Quixel Megascan? ¿Cómo funciona este motor del futuro? Vamos a intentar explicar los conceptos básicos tras ellos y entender por qué Unreal Engine 5 es mucho más que mejores gráficos. Como nota, vamos a intentar hacerlo de la manera más clara posible, ya que, quienes quieran un vistazo más técnico tienen multitud de recursos disponibles para ello.
Nanite: geometría infinita
La mayoría de vosotros sabréis que la inmensa mayoría de los elementos que conforman un juego en tres dimensiones está compuesta de triángulos, llamados generalmente polígonos. Cuando jugamos, el ordenador o la consola tiene que calcular la posición de todos los triángulos que componen a los personajes y escenario en pantalla. Para optimizar estos cálculos lo máximo posible, se intenta usar el mínimo de triángulos posibles , lo que supone menos detalle, y se crean diferentes modelos con menos polígonos para usarse a mayor distancia de la cámara, donde el detalle es imperceptible. Esto se suele conocer generalmente como nivel de detalle –level of detail (LOD)–, y es uno de los causantes del causante del popping, la aparición repentina de objetos en pantalla.
Pero ¿y si los desarrolladores no tuviesen que preocuparse de la cantidad de polígonos en pantalla? ¿Y si el motor se encargase de ajustarlo automáticamente? Esta es la idea de Nanite. Para hacernos una idea, un Thunderjaw de Horizon: Zero Dawn tiene unos 550.000 polígonos. El personaje principal de Agni’s Philosophy, la espectacular demo técnica de Square Enix superior a cualquier cosa que hayamos visto hasta ahora en consola, tenía 11 millones. Una estatua de la demo de Epic tiene 33 millones. Y podemos entrar en una habitación con cientos de ellas.
Cuantos más polígonos, más detalles; cuanto más detalle, más realista (o, simplemente, más complejo). Hoy en día es normal usar mapeado normal para añadir más detalle sin usar más polígonos . Si creas una pared, no tiene sentido gastar triángulos en cada ladrillo, dibujando cada hendidura e imperfección. En su lugar, usas una especie de textura que añade esa información sobre una superficie plana. Con Nanite, no habría necesidad de usar estos mapas, ya que podríamos usar todos los triángulos que quisiésemos.
¿Y cuál es el truco?
Gracias a Nanite, en teoría, tenemos una cantidad infinita de polígonos, ya que sólo va a dibujar los triángulos necesarios para recrear la imagen, y más concretamente, uno por píxel . Una imagen a 4K tiene unos 8,3 millones de píxeles así que no es eficiente renderizar miles de millones de triángulos, ya que la inmensa mayoría de ellos van a ser más pequeños que un píxel y, consecuentemente, imperceptibles. La teoría es que, como máximo, sólo vas a dibujar unos 8,3 millones de polígonos en una imagen a 4K, independientemente de cantidad de triángulos en los assets, los elementos del juego, ya que el motor elige el polígono más relevante para cada píxel e ignora los otros.
Este acercamiento, bautizado como REYES (Render everything you ever saw, renderiza todo lo que hayas visto), fue desarrollado por la división de I+R de Lucasfilms, ahora Pixar, allá por mediados de los 80, pero implementarlo en tiempo real parecía imposible hasta ahora. Sobra decir que esto no es fácil, y que sigue habiendo un montón de cálculos involucrados en este proceso, de ahí que la demo usase resolución dinámica.
Gracias a la velocidad de los SSD y a la arquitectura de las nuevas consolas, ahora es posible cargar varios gigas por segundo, por lo que no es necesario volcar todo un escenario y personajes a la RAM para dejar que la consola lo mueva y, en su lugar, el juego va cargando lo que necesita. Como curiosidad, Crash Bandicoot hizo algo parecido con la PlayStation original, con las obvias limitaciones de ésta.
Con esta tecnología, todo lo que vemos en pantalla está siempre a la máxima calidad. No hay que hacer tres modelos para un árbol –uno cerca con 10.000 triángulos, uno a media distancia con 5.000, y uno lejos con 100–, porque si el árbol está tan lejos que sólo ocupa cinco píxeles en pantalla, el motor se va a encargar de coger los cinco triángulos más relevantes de esos 10.000 e ignorar los otros 9995. Así, evitaremos también ver cómo se generan elementos en pantalla, porque independientemente de su distancia, el modelo siempre va a tener la calidad máxima.
Lumen: iluminación global dinámica
Hoy en día, y gracias al ray tracing, la iluminación global dinámica está en boca de todos. Hasta ahora, lo normal es que hubiese algunas fuentes de luz dinámicas en el mapa y que sólo afectasen a ciertos elementos. Lo que las diferentes tecnologías de ray tracing y Lumen quieren conseguir es que todas las fuentes de luz sean dinámicas. Para que hagáis una idea, ahora mismo lo habitual es que la linterna de tu personaje ilumine en tiempo real, pero casi todo lo demás sea «de mentira». Los desarrolladores suelen iluminar los escenarios mientras los desarrollan y luego añadir esa iluminación a las texturas, de manera que éstas reflejen de manera realista la luz que han elegido los artistas.
En la vida real, la luz es muy compleja. La luz rebota en todas las superficies, crea reflejos y se distorsiona, y realizar los cálculos necesarios en tiempo real para imitarla en una consola de manera global era prácticamente imposible. Lumen es capaz de recrear el comportamiento de la luz, algo que se ve perfectamente en la demo cuando lo desactivan. En la cueva, tenemos una fuente de luz, pero si eliminamos el rebote de la luz, el resto de la cueva permanece a oscuras. Así, esta tecnología puede calcular cómo la luz viaja a través del aire, e incluso el color que genera al rebotar en cada superficie. A todo esto, por supuesto, también tenemos que añadirle los reflejos y las sombras.
Lumen utiliza diferentes métodos para calcular las propiedades de la luz en función de la distancia de los elementos, priorizando más detalle para los objetos cercanos y menos para los lejanos, en un esfuerzo por optimizar la representación de la iluminación que, a diferencia de otros métodos de ray tracing, no requiere hardware específico para su uso. De igual modo, utiliza una acumulación temporal –utiliza información de frames anteriores– para calcular el rebote de la luz, lo que tiene sus ventajas, pero también unos pequeños inconvenientes. Las ventajas son claras: menor coste de cálculo y rebotes infinitos (es decir, la luz va a rebotar por tantas superficies como sea posible hasta que se quede sin «fuerza», no va a rebotar en la pared y se va a «apagar»); el inconveniente es que en luces que se muevan rápido es posible ver un pequeño retraso a la hora de recrear el rebote. Esto es prácticamente imperceptible mientras jugamos, pero está ahí.
Aquí podemos ver la diferencia entre una luz que rebota y una que no.
Mejores gráficos, ¿mejor desarrollo?
Unreal Engine, como motor, ya ofrece multitud de herramientas que se mostraron en la demo, como el sistema de físicas y destrucción Chaos, los efectos visuales Niagara o la espectacular recreación del sonido (ved el vídeo con auriculares si no lo habéis hecho ya), y todas ellas tienen un objetivo: facilitar el desarrollo de un videojuego. Nanite y Lumen quieren llevar esto un paso más allá.
Si eres un artista y creas un asset para tu juego (ya sea un personaje, una casa, una piedra...), es muy probable que tengas que reducir la calidad de las texturas y el número de triángulos para optimizarlo y que el título rinda bien. Con Unreal Engine 5, pasas tu asset directamente al juego, y no necesitas optimizarlo, no necesitas crear niveles de detalle ni mareado normal, ya que el motor se encarga de que todo funcione. Epic asegura que se pueden usar assets de películas; que, en teoría, Insomniac podría coger el modelo 3D usado en la última película de Spider-Man y usarlo en su juego. De hecho, el Unreal Engine se ha utilizado para crear algunos fondos de The Mandalorian, la exitosa serie de Disney+, por lo que Respawn podría, simplemente, coger los escenarios de la serie y utilizarlos en Star Wars Jedi: Fallen Order 2.
De igual modo, se puede usar fotogrametría (dicho de manera simplificada, el escaneo en tres dimensiones para crear objetos virtuales) o bibliotecas de assets como Quixel Megascan, y trasladar estos elementos directamente al juego. Esto ya se usa hoy en día, pero normalmente hay que usar versiones adaptadas para usar en videojuegos, o reducir manualmente la calidad hasta que funcionen, por lo que a veces es más rentable crear algo desde cero, aunque estos pasos de reducción de calidad se evitarían con el nuevo motor de Epic.
Con la iluminación global dinámica, nos desarrolladores pueden modificar rápidamente y en tiempo real la luz en un escenario y conseguir resultados más realistas que con la iluminación generalmente conocida como baked (precalculada y aplicada al entorno). A esto hay que añadirle una inteligencia artificial que es capaz de modificar las animaciones en tiempo real basándose en el contexto, lo que se traduce en manos apoyándose en puertas o, suponemos, que un personaje se eche mano a una herida en función de dónde reciba el impacto. Si los desarrolladores no tienen que crear diferentes versiones de los assets, precalcular la luz cada vez que quieran hacer un cambio o realizar manualmente todas las animaciones de un personaje, el desarrollo es mucho más ágil y eficiente.
¡Esto parece el futuro! ¿Es de verdad tan perfecto?
Todavía hay algunas cosas que no sabemos, por lo que sólo el tiempo dirá. Hay ciertas preocupaciones lógicas, como el tamaño de los juegos. ¿Cuánto pesa una escultura de más de 30 millones de polígonos con texturas 8K? ¿Cuánto pueden pesar los assets de un juego entero con esa calidad? Hoy en día ya tenemos juegos que ocupan decenas de gigas –muchas veces, porque las compañías se emperran en meternos los audios de todos los idiomas a la fuerza–, y con este salto tan enorme en calidad llegaríamos, fácil a varios cientos de gigas.
¿Qué sacrificios hay que hacer para poder gestionar todos estos elementos –geometría dinámica, iluminación global dinámica...– a 60 imágenes por segundo? ¿Y a 120? ¿Va a haber problemas a la hora de elegir los polígonos más relevantes con ciertos elementos particularmente finos o transparentes, como puede ser el pelo y la hierba? Por ahora, sólo queda esperar al lanzamiento oficial del motor el próximo año. Por el momento, lo que Unreal Engine 5 promete es muy ilusionante, y creemos que, además de a los grandes estudios de desarrollo, va a permitir a los indies crear cosas increíbles (además, ahora pueden usar el motor completamente gratis hasta que el juego genere su primer millón de dólares). En cualquier caso, éste es tan sólo el primer contacto con lo que los desarrolladores van a poder hacer en las nuevas consolas, y una demostración de cómo los nuevos SSD y las arquitecturas de las nuevas consolas son mucho más que el fin de los tiempos de carga.