Esta página es un complemento de la plantilla Talisman: Entorno, que muestra las prácticas recomendadas para crear entornos muy detallados y realistas. Talisman se ha creado utilizando las prácticas recomendadas de construcción modular y optimización en Unreal Editor para Fortnite (UEFN).
Puedes encontrar la plantilla en la sección Ejemplos de funciones del explorador de proyectos.
Puedes jugar a la experiencia Talisman que se mostró durante la Game Developers Conference 2024 abriendo Fortnite e introduciendo el código de isla 7100-3544-3074.
Ubicación de la plantilla Talisman: Entorno en el explorador de proyectos.
Este resumen te guiará a través de los desafíos de optimización que surgieron durante la creación del proyecto Talisman y cómo se superó cada uno de ellos:
Cómo gestionar el proyecto y los límites de memoria en tiempo de ejecución
Cómo diseñar materiales mediante el control dinámico de materiales
Debido a que la plantilla está diseñada para funcionar en todas las plataformas disponibles, los recursos y el estilo de Talisman se tienen que ajustar a los requisitos de memoria y límite de tamaño del proyecto de UEFN. Esto plantea varios desafíos para los proyectos diseñados con un estilo artístico más detallado:
Tamaño del proyecto: los recursos muy detallados de los juegos pueden ser grandes y UEFN tiene un límite de tamaño de proyecto de 400 MB.
Límites de memoria en tiempo de ejecución: UEFN tiene una restricción de memoria de transmisión de 100.000 unidades de memoria que limita la cantidad de recursos, paisajes personalizados y dispositivos que pueden estar en pantalla al mismo tiempo.
Calidad en todas las plataformas compatibles: estos límites garantizan que tu experiencia en UEFN esté disponible para todos los jugadores en todas las plataformas compatibles con Fortnite.
UEFN es compatible con una variedad de técnicas para cumplir estos requisitos, como Niveles de detalle (LOD), Niveles de detalle jerárquicos (HLOD), World Partition, Creación de instancias de niveles y Capas de datos.
Cómo aplicar las prácticas recomendadas
La plantilla Talisman: Entorno está diseñada para mostrar una variedad de prácticas recomendadas y procesos para llevar el realismo AAA a Unreal Editor para Fortnite. Esta plantilla utiliza las siguientes prácticas recomendadas para la gestión del proyecto y la memoria de transmisión para optimizar el rendimiento:
Crea contenidos personalizados que sean modulares y ligeros.
Mejora el aspecto de la geometría de superficies duras mediante normales ponderadas de cara.
Añade detalles a las mallas utilizando pegatinas de malla.
Construye la experiencia para la plataforma de destino de gama más baja y añade funciones a partir de ahí.
Minimiza las llamadas de trazado en mallas que no sean de Nanite.
Crea contenidos personalizados que sean modulares y ligeros
El entorno de Talisman se ha construido mediante kitbashing, una técnica de modelado modular que utiliza mallas preexistentes de un entorno modular y las reutiliza para crear nuevos recursos. Gracias a la reutilización de recursos, los artistas consiguieron reducir el tamaño del proyecto mediante la reducción al mínimo del número de mallas de un solo uso.
Este recurso está compuesto por seis mallas estáticas diferentes.
Tradicionalmente, los artistas crean este tipo de entornos mediante el mapeado de una malla con muchos polígonos y alto nivel de detalle en una malla con pocos polígonos utilizando mapas de normales únicos con el bake hecho para mantener el detalle entre las dos. Este método requiere mapas de texturas adicionales que pueden aumentar el tamaño del proyecto, resultan costosos en tiempo de ejecución y no se adaptan bien al proceso de kitbashing.
Para ahorrar memoria, se han utilizado mallas Mid-Poly con normales ponderadas de cara y pegatinas de malla para añadir pequeños detalles.
Para más información, consulta Diseño y construcción de mallas.
Cómo construir la experiencia para todas las plataformas de destino
Fortnite está diseñado para ejecutarse en una gran variedad de plataformas. Para asegurarte de que tu contenido ofrece a los jugadores la mejor experiencia en cada uno de dichos dispositivos, es importante diseñar teniendo en cuenta cada plataforma, y después añadir funciones adicionales para las plataformas de gama alta durante el desarrollo.
La geometría virtualizada de Nanite, por ejemplo, ayuda a las plataformas a renderizar mallas con mucho detalle y mejorar el rendimiento, pero solo está disponible para determinados dispositivos de gama alta, como los ordenadores con DirectX 12. Por esta razón, es importante optimizar los contenidos para que funcionen correctamente en todas las plataformas.
Las siguientes imágenes muestran LOD de malla en los ajustes Épico, Alto, Medio y Bajo
Para más información sobre cómo crear tus propios recursos personalizados para UEFN, consulta Diseño y construcción de mallas.
Cómo minimizar las llamadas de trazado cuando se utilizan mallas que no sean de Nanite
Las llamadas de trazado son el proceso de indicar a la API de gráficos qué debe dibujar y cómo debe hacerlo en cada fotograma. Nanite omite las llamadas de trazado estándar mediante el flujo de geometría en la escena según sea necesario. Para las mallas que no sean de Nanite, cada una de las siguientes acciones inicia una llamada de trazado en una escena:
Cada malla individual.
Cada material en una malla.
Cada luz.
Cada proyección de sombra.
La plantilla Talisman: Entorno utiliza tanto mallas de Nanite como mallas que no son de Nanite. Para optimizar el rendimiento al utilizar mallas que no son de Nanita, se ha minimizado el número de llamadas de trazado en la escena:
Eliminando las mallas no críticas.
Eliminando las pegatinas de malla no críticas.
Eliminando las luces de proyección de sombras y complementándolas con funciones de luz.
Cómo gestionar el proyecto y los límites de memoria en tiempo de ejecución
La gestión de la memoria en tiempo de ejecución y la gestión del tamaño de proyecto son componentes clave de cualquier proyecto realizado en UEFN. Talisman: Entorno afronta estos desafíos mediante la:
Limitando el alcance del proyecto.
Reutilizando recursos personalizados.
Gestionando la memoria en tiempo de ejecución.
Cómo limitar el alcance del proyecto
Para cumplir con el límite de tamaño de proyecto de 400 MB, el personaje MetaHuman se ha trasladado a la plantilla Talisman: MetaHuman. Puedes encontrar esta plantilla en la sección Ejemplos de funciones del explorador de proyectos. Para más información sobre MetaHumans en UEFN, consulta Plantilla Talisman: MetaHuman.
Niveles de detalle
Cada malla utilizada para elaborar Talisman utiliza tres Niveles de detalle (LOD) con el objetivo de mantener el proyecto dentro del presupuesto de 100.000 unidades de memoria de transmisión.
La configuración automática de LOD se encuentra en el explorador de malla estática.
Las mallas de LOD se generan automáticamente utilizando las herramientas automáticas de LOD de UEFN y se asignan a niveles de calidad específicos. Para más información sobre el uso de los niveles de detalle en UEFN, consulta Cómo establecer el nivel de detalle (LOD).
Gestión de la memoria en tiempo de ejecución
La plantilla Talisman: Entorno utiliza una solución de transmisión personalizada creada con capas de datos y Sequencer para mantener el nivel dentro del presupuesto de transmisión de 100.000 unidades de memoria. El tamaño vertical de zonas como la zona de carga y la longitud de los pasillos hacían que la nave no cupiera en la cuadrícula de transmisión de World Partition.
Cada capa de datos se corresponde con una sala diferente de Talisman.
Para corregir esta limitación, se combinaron las Capas de datos con el Sequencer para cargar y descargar zonas de la nave en función de la ubicación del jugador.
Las zonas de mutación activan eventos de carga en la secuencia de nivel.
Cada sala tiene su propia capa de datos y zonas de mutación repartidas por toda la nave que activan eventos en la secuencia de nivel. Estos eventos permiten cargar y descargar secciones de la nave a medida que el jugador avanza por el nivel. Las zonas de mutación están estratégicamente colocadas en algunas partes de la nave para ocultárselo al jugador.
Esta solución no es compatible con las experiencias multijugador. Se han incluido las capas de datos y la secuencia de nivel, pero se han eliminado las zonas de mutación para preparar la plantilla para el modo multijugador.
Cómo utilizar elementos de IU personalizados
Esta plantilla utiliza Verse para mostrar un widget de icono de misión personalizado y reproducir un sonido cuando el jugador interactúa con la consola en la sala de inicio.
El estandarte de misión personalizado se activa mediante la secuencia de comandos Verse.
Cuando el jugador utiliza el dispositivo "Crew Quarters VO Button", el archivo de secuencia de comandos starting_sequence_device.verse:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Characters }
using { /UnrealEngine.com/Temporary/UI }
using { /UnrealEngine.com/Temporary/Diagnostics }
Cancela el audio de bienvenida si el mensaje de audio todavía se está reproduciendo.
Habilita un minimapa de la nave para ayudar a los jugadores a explorar Talisman.
Muestra el blueprint de widget de IU quest_icon_widget personalizado.
Reproduce un clip de sonido.
Para más información sobre cómo utilizar Verse para personalizar tus proyectos en UEFN, consulta la Guía de introducción a la programación con Verse.
Cómo iluminar espacios grandes
Talisman utiliza la iluminación global de Lumen para ayudar a iluminar el entorno y proporciona al jugador sombras y una iluminación indirecta precisa en toda la nave.
Este pasillo presenta todas las técnicas que se describen aquí.
Lumen proporciona oclusión ambiental e iluminación global a los objetos que no están iluminados por luz directa. Si bien Lumen es una herramienta potente que permite crear soluciones de iluminación, sigue siendo importante optimizar el entorno para maximizar el rendimiento. Lumen se utiliza con la plantilla Talisman: Entorno con varias optimizaciones.
La proyección de sombras está desactivada en todas las mallas estáticas que están iluminadas indirectamente en todo el nivel. Lumen ofrece sombras excelentes para estas mallas, por lo que desactivar la propiedad Proyectar sombras aumentó el rendimiento sin sacrificar la calidad visual.
La mayoría de las luces de la plantilla tienen la opción Sombras proyectadas desactivada.
La proyección de sombras también se complementa mediante el uso de funciones de luz y una textura de rayas con algunas luces cenitales.
El ruido de Lumen y el parpadeo de luz de los paneles de luz emisora se reducen emparejando cada uno de ellos con una luz focal que no proyecta sombras.
Este foco de luz potencia la luz de este panel de luz
El valor emisor de cada panel se reduce y se complementa con un foco de luz que no proyecta sombras. Cada foco de luz tiene un pequeño radio de efecto y proporciona luz adicional y, al mismo tiempo, hace que parezca que la luz sigue procediendo del panel de luz.
La iluminación del entorno se optimizó todavía más haciendo que cada luz tuviera la menor distancia de trazado máxima posible. Esta configuración suprime cada luz de la vista cuando no es necesario renderizarla.
También se ha utilizado el visualizador de Complejidad de iluminación durante la iluminación de Talisman.
El visualizador de Complejidad de iluminación se puede activar con Alt+7
Este modo de vista del visor muestra el número de luces no estáticas que afectan a la geometría de tu nivel como sombreado de color y ayuda a realizar un seguimiento del coste de rendimiento de la iluminación. Este visualizador resulta útil para minimizar la superposición de luces en el nivel y así mantener los costes de rendimiento bajos.
Diseño y construcción de mallas
Para crear el detallado interior de Talisman se han utilizado técnicas de kitbashing y mallas Mid-Poly personalizadas. El kitbashing es una potente técnica que ayuda a minimizar el número de recursos que tu proyecto necesita y, al mismo tiempo, te ofrece la posibilidad de reutilizar y combinar las mallas para crear nueva geometría.
Cada malla en el proyecto utiliza una variedad de técnicas diferentes para mejorar el aspecto del recurso sin añadir geometría adicional.
Las normales ponderadas de cara es una técnica que alinea las normales de vértice del modelo con las caras planas de mayor tamaño a fin de mejorar el sombreado sin que disminuya el rendimiento.
Las normales de vértice (líneas verdes) se alinean con las caras planas más grandes para mejorar el sombreado.
Los detalles como tornillos, marcas y desperfectos se han añadido mediante pegatinas de malla. Estas pegatinas utilizan UV personalizadas para proyectar geometría compleja sobre superficies y tienen la capacidad de envolver esquinas o estirarse a lo largo de splines sin dejar de mantener su aspecto.
Cómo diseñar materiales mediante el control dinámico de materiales
Las texturas y los materiales son, a menudo, la parte más grande de cualquier proyecto en UEFN. Para reducir todavía más el tamaño del proyecto, la plantilla utiliza un enfoque dinámico de las texturas y los materiales con el que se evita el uso de mapas de texturas únicos. Para este resultado final, se ha utilizado un proceso de trabajo que almacena los datos de oclusión ambiental, curvatura y máscara en la malla mediante Colores de vértice. Posteriormente, los datos almacenados se utilizaron para aplicar y mezclar los materiales.
Datos de color de vértice
Se recomienda evitar el uso de mapas de texturas únicos para cada recurso empaquetando los datos de oclusión ambiental, curvatura y máscara de textura en cada malla mediante Colores de vértice. Las mallas para Talisman están diseñadas con geometría de soporte y densidad de malla (polígonos por pulgada cuadrada) para ofrecer una degradación suave entre los colores de los vértices. De este modo, se consigue una transición nítida entre los materiales.
Los datos se almacenan utilizando el siguiente método:
| Mapa | Canal de color |
|---|---|
Oclusión ambiental | Rojo |
Curvatura | Verde |
Máscara de ID de material | Azul |
Para más información sobre el pintado de colores de vértices, consulta Materiales de color de vértice.
Las ranuras de materiales de cada malla se utilizan después para definir la parte de la malla que recibe un material específico. Para más información sobre las ranuras de materiales, consulta Canalización de materiales FBX.
Este sillón tiene ranuras de materiales para el metal y la goma.
Control dinámico de materiales
Las mallas de Talisman utilizan una combinación de cinco tipos principales de materiales:
Metal
Metal pintado
Plásticos
Gomas
Tejidos
Cada material depende de un único material maestro que utiliza texturas de teselado alineadas con el mundo y parámetros definidos por el usuario para generar el resultado. De esta forma se mantiene bajo el coste total de memoria de los materiales, ya que la reutilización permite a nuestros artistas utilizar los mismos materiales en toda la nave.
Una parte del material maestro de Talisman: Entorno
El polvo, los arañazos y otras marcas de desgaste también están incluidos en el material maestro y se aplican a las mallas utilizando máscaras controladas por parámetros. Estos parámetros son almacenados en la malla mediante datos primitivos personalizados.
Cómo utilizar el dispositivo Cámara de órbita
El dispositivo Cámara de órbita ofrece una vista que sigue al personaje del jugador, pero que el jugador puede girar para mirar con total libertad a su alrededor. La plantilla utiliza este dispositivo para permitir al jugador cambiar entre una vista en tercera persona y una vista simulada en primera persona.
Los jugadores pueden cambiar entre tres puntos de vista diferentes gracias al dispositivo Cámara de órbita
Esto se realiza utilizando la secuencia de comandos camera_switch_mode_device de Verse.
# This file handles swapping between different cameras when an input is pressed.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Characters }
using { /UnrealEngine.com/Temporary/Diagnostics }
El código Verse espera a que el jugador active la acción de entrada del modo Creativo de destino, que de forma predeterminada se asigna al botón derecho del ratón o al gatillo izquierdo de un mando. Posteriormente hace lo siguiente:
Elimina la cámara actual de la pila de cámaras.
Obtiene la siguiente cámara de la matriz de cámaras.
Añade al agente la nueva cámara.
Oculta el personaje del jugador, si procede.
Muestra el personaje del jugador, si procede.