Entorno para videojuegos medievales

Análisis de Entorno de juego medieval y su actualización para UE5

Hola a todo el mundo. Nos complace anunciar una nueva actualización de nuestro Entorno de juego medieval para Unreal Engine 4.26 que publicamos originalmente en febrero de 2021. 

Hemos actualizado este entorno para que utilice todas las funciones más recientes de Unreal Engine 5 y también hemos añadido una gran mejora de audio. El nuevo Entorno de juego medieval está disponible para su descarga aquí mismo, en el Marketplace de Unreal Engine.
 

Entonces, ¿qué ha pasado con la versión original de Entorno de juego medieval? 

Entorno de juego medieval es una experiencia jugable de nueva generación creada por el equipo de Quixel de Epic, a quienes quizás conozcas como los creadores de los megascans. Inicialmente, este entorno se lanzó en febrero de 2021, junto con Unreal Engine 4.26. Dado que actualmente ya existe la versión 5.3, hemos decidido actualizar este entorno para aprovechar las últimas funciones del motor. 

A continuación, se detallan algunas de las actualizaciones que hemos realizado y cómo las hemos aplicado.
 

Actualización a UE5

Convertir un proyecto desde UE4 implica que se sigan utilizando los valores predeterminados de UE4, aunque se hayan aplicado otros ajustes importantes desde la versión 4.26 hasta la 5.3. Si has visto nuestra guía para actualizar tu proyecto en UE5, entonces ya conoces las bases del proceso de actualización. 

Hemos cambiado todos los ajustes del proyecto para los entornos DX12, SM6, el método de sombras, el método de iluminación global dinámica y el método de reflexión Además hemos desactivado la función que permitía la iluminación estática. Estos cambios han mejorado el rendimiento de esta nueva versión en comparación con la original. 
Izquierda: Unreal Engine 5 | Derecha: Unreal Engine 4

Aprovechar al máximo Nanite

Creemos que la calidad de imagen obtenida es bastante mejor si se emplea lo último en geometría virtualizada. Por ello, aquellos aspectos de este proyecto que podían pasarse a Nanite lo han hecho. También hemos sustituido algunos elementos por sus equivalentes en Nanite procedentes de la biblioteca de Megascans. 

¿Eso significa que el resultado ya es perfecto? Todavía no. Los árboles sufrían el problema de que, al verlos desde cierta distancia, parecían perder todas las hojas. Además, tenían marcada la opción «Conservar área» en la configuración de Nanite. Para solucionar el problema, hubo que sustituir algunas mallas spline por mallas estáticas instanciadas, en parte porque la compatibilidad de las mallas spline con Nanite aún está en fase experimental. 

También hemos aplicado cambios en la configuración de nuestra compensación de la posición global en el proyecto. Esta modificación se aplicó para reducir las invalidaciones de caché del mapeo de flujo de valor (VSM) causadas por la compensación de la posición global (WPO) a determinadas distancias. 
 

Aplicar una mayor iluminación con Lumen

Hemos migrado a Lumen tanto el método de iluminación global dinámica como el método de reflejos, con lo que se consigue ajustar ambos valores al estándar de rendimiento que tiene UE 5.3 y se mejora significativamente el fotorrealismo presente en escena. Al migrar el follaje a Nanite, también es posible que este contribuya con Lumen para generar una iluminación en escena que se refleje el mundo con una precisión mucho mayor. De igual modo, también se ha ajustado la exposición local para mejorar la iluminación interior. 
Izquierda: Unreal Engine 5 | Derecha: Unreal Engine 4

Ajustes en nuestros mapas de sombras virtuales 

Hemos cambiado el proyecto de mapas de sombras virtuales a mapas de sombras en cascada para mejorar la resolución de las sombras. Esto mejora el rendimiento de varias formas. En primer lugar, corrige problemas con las sombras de contacto. Por ejemplo, muchas mallas de follaje de pequeño tamaño provocaban invalidaciones innecesarias del caché de sombras, por lo que se decidió pasar a usar exclusivamente sombras de contacto. Para solucionar el problema, hemos ajustado varios parámetros de esta función (por ejemplo, la luz direccional, para que solo proyecte sombras de contacto en mallas que, de otro modo, no tendrían sombras).

También nos hemos asegurado de que todo lo que pudiese llegar a invalidar las páginas de caché en la sombra estuviera definido como «móvil». Esto implica que nuestra compensación de la posición global, las mallas esqueléticas y otros aspectos similares utilizarán la nueva configuración durante todo el proyecto. 
 

Partición del mundo

El proyecto original no tenía ningún tipo de capacidad de transmisión así que hemos usado las herramientas integradas de UE para convertir el nivel a World Partition y hemos definido los niveles jerárquicos de detalle (HLOD) de World Partition para ayudar a reducir los costes de draws a distancia. Cambiar a World Partition implica que podemos dejar que el motor transmita mejor el contenido de entrada y salida, además de utilizar los niveles jerárquicos de detalle para obtener un mejor rendimiento en la geometría distante.


Conversión a Niagara

Aquí seremos sinceros: Cascade se quedó obsoleto a partir de UE5 y ya no es compatible, por lo que tuvimos que realizar la conversión a Niagara. Sin embargo, durante el proceso, el artista de efectos visuales pudo condensar algunos de los recursos originales de Cascade dentro de un sistema de Niagara, lo que se tradujo en una mejora de rendimiento todavía mayor.
 
Izquierda: Unreal Engine 5 | Derecha: Unreal Engine 4

Superresolución temporal

El proyecto se ha ajustado para la superresolución temporal (TSR) y la resolución dinámica en consolas. Como las demás funciones gráficas de la nueva generación dependen de la resolución, usar la superresolución temporal implica que podemos renderizar menos píxeles con mayor calidad y, al mismo tiempo, podremos mantener una resolución de salida en 4K. Así el proceso es más rápido, mejor y más eficaz para todos.
 

Audio totalmente nuevo y actualizado

No estábamos del todo satisfechos con el audio de nuestra primera versión y sabíamos que podíamos aplicar mejoras considerables. Por ello, decidimos abandonar muchos de nuestros sistemas heredados y sacar provecho de Metasounds, nuestro sistema de audio procedimental que se lanzó por primera vez con UE5. Este cambio implica lo siguiente:

En primer lugar, hemos eliminado todo tipo de sonido del proyecto y, en su lugar, usamos exclusivamente buses de submezcla y modulaciones de audio, lo que nos ha permitido empezar de cero en términos de preparación, enrutamiento y enfoque general del proceso de mezclas. 

En segundo lugar, hemos cambiado el nombre de todos los archivos para que se mantenga la coherencia entre los distintos tipos de recursos y hemos eliminado los recursos de audio que carecían de referencia. Aunque el usuario prácticamente no percibe esto, los cambios aplicados reducen significativamente el tamaño del proyecto y evita que los recursos sin utilizar abarroten la carpeta de contenido del proyecto.

También hemos aprovechado el sistema SoundScape para relacionarlo con la hora dinámica del día. Estos activadores sensibles al tiempo se han integrado en los planos del gestor de SoundScape y cuentan con nuevas versiones nocturnas de las paletas para «Bosque» y «Maizal». Creemos que este enfoque adaptativo del sonido hace que toda la escena sea más dinámica e inmersiva que la versión anterior. 

    Ahora, ¿qué?

    Ya está disponible la versión 2.0 de Entorno de juego medieval en el Marketplace de Unreal Engine. Échale un vistazo y cuéntanos qué te parece en los foros.