Esta página es un complemento de la plantilla Talisman: entorno, que muestra las prácticas recomendadas para crear entornos realistas con un alto nivel de detalle. El Talisman se crea usando la construcción modular y las prácticas recomendadas de optimización en Unreal Editor para Fortnite (UEFN).
Puedes encontrar la plantilla en la sección Ejemplos de características del explorador de proyectos.
Puedes jugar la experiencia Talisman mostrada durante la Conferencia de Desarrolladores de Juegos de 2024 abriendo Fortnite e ingresando el código de isla 7100-3544-3074.
Ubicación de la plantilla Talisman: entorno en el explorador de proyectos.
Este resumen te guía a través de los retos de optimización que se enfrentaron durante la creación del proyecto de Talisman y cómo se hizo para superarlos:
Cómo manejar los límites de memoria en tiempo de ejecución y del proyecto
Cómo diseñar materiales usando el control de material dinámico
Dado que la plantilla está diseñada para ejecutarse en todas las plataformas disponibles, los recursos y el estilo de Talisman deben cumplir con el límite de tamaño de proyecto y memoria de UEFN. Esto supone varios retos para los proyectos diseñados con un estilo artístico más detallado:
Tamaño del proyecto: los recursos con un nivel alto de detalles en los juegos pueden ser grandes y UEFN tiene un límite de tamaño de 400 MB por proyecto.
Límites de memoria en tiempo de ejecución: UEFN tiene una restricción de memoria de trasmisión de 100 000 unidades de memoria que limita la cantidad de recursos, terrenos personalizados y dispositivos que pueden estar en pantalla a la vez.
Calidad en todas las plataformas compatibles: estos límites garantizan que la experiencia de 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 con estos requisitos, que incluyen los niveles de detalle (LOD), los niveles de detalle jerárquicos (HLOD), World Partition, la instanciación de nivel y las 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 usa las siguientes prácticas recomendadas para manejar la memoria de transmisión y del proyecto para optimizar el rendimiento:
Crea contenido personalizado que sea modular y ligero
Mejora el aspecto de la geometría de superficies duras usando normales ponderadas de cara.
Añade detalle a las mallas usando calcomanías de malla.
Crea tu experiencia para la plataforma de destino más básica y agrega características a partir de allí.
Minimiza las peticiones de trazado en mallas que no sean de Nanite.
Crea contenido personalizado que sea modular y ligero
El entorno de Talisman fue creado usando kitbashing, una técnica de modelado modular que usa mallas preexistentes de un entorno modular y las reutiliza para crear recursos nuevos. Al reusar los recursos, los artistas pudieron reducir el tamaño del proyecto minimizando la cantidad de mallas de un solo uso.
Este recurso está hecho de seis mallas estáticas diferentes.
Tradicionalmente, los artistas crean este tipo de entorno mapeando una malla con un nivel alto de detalle y un alto número de polígonos con una malla con un número bajo de polígonos usando mapas de normales con bake único para preservar el detalle entre las dos. Este método requiere mapas de texturas adicionales que pueden aumentar el tamaño de tu proyecto, son costosos en tiempo de ejecución y no se escalan bien durante el proceso de kitbashing.
Se usaron mallas con un número medio de polígonos y normales ponderadas de cara para ahorrar memoria y se utilizaron calcomanías de malla para añadir detalles pequeños.
Para obtener más información, consulta Diseño y construcción de mallas.
Crea tu experiencia para todas las plataformas de destino
Fortnite está diseñado para correr en una variedad de plataformas. Para garantizar que tu contenido les ofrezca la mejor de las experiencias a los jugadores en cada uno de estos dispositivos, es importante diseñar teniendo en cuenta cada plataforma y luego ir añadiendo características adicionales para las plataformas más avanzadas durante el desarrollo.
Por ejemplo, la geometría virtualizada de Nanite ayuda a las plataformas a renderizar mallas con un nivel alto de detalle y mejorar el rendimiento, pero solo está disponible en ciertos dispositivos de gama alta como PC con DirectX 12. Por esto, sigue siendo importante optimizar tu contenido para que funcione bien en todas las plataformas.
Las siguientes imágenes muestran los LOD de malla en Epic, configuración de calidad alta, media y baja.
Para obtener más información sobre cómo crear tus propios recursos personalizados para UEFN, consulta Diseño y construcción de mallas.
Minimiza las peticiones de trazado usando mallas que no sean de Nanite
Las peticiones de trazado son el proceso de decirle a la API de gráficos qué trazar y cómo hacerlo durante cada fotograma. Nanite se salta las peticiones de trazado estándares transmitiendo geometría en la escena según sea necesario. Para mallas que no sean de Nanite, cada uno de los siguientes inicia una petición de trazado en una escena:
Cada malla individual.
Cada material en una malla.
Cada luz.
Cada proyección de sombra.
La plantilla Talisman: entorno usa mallas de Nanite y de otro tipo. Para optimizar el rendimiento cuando se usan mallas que no sean de Nanite, la cantidad de peticiones de trazado en la escena se minimizó de la siguiente manera:
Quitando mallas que no fuesen cruciales.
Quitando calcomanías de mallas que no fuesen cruciales.
Quitando las luces que proyectaban sombra y complementándolas al usar funciones de iluminación.
Cómo manejar los límites de memoria en tiempo de ejecución y del proyecto
El manejo de memoria en tiempo de ejecución y el manejo del tamaño del proyecto son componentes fundamentales de cualquier proyecto creado en UEFN. Talisman: entorno encara estos retos al:
Reducir el alcance del proyecto.
Reutilizar los recursos personalizados.
Manejar la memoria en tiempo de ejecución.
Reduce el alcance del proyecto
Para no superar el límite de tamaño del proyecto de 400 MB, el personaje del MetaHuman se movió a la plantilla Talisman: MetaHuman. Puedes encontrar esta plantilla en la sección Ejemplos de características del explorador de proyectos. Para aprender sobre los MetaHumans en UEFN, consulta la plantilla Talisman: MetaHuman.
Niveles de detalle
Cada malla usada para crear el Talisman utiliza tres niveles de detalle (LOD) para mantener el proyecto dentro del límite de 100 000 unidades de memoria de transmisión.
La configuración de LOD automático está ubicada en el explorador de la malla estática.
Las mallas de LOD se generan automáticamente usando las herramientas de LOD automático y se asignan a niveles de calidad específicos. Para obtener más información sobre el uso de los niveles de detalle en UEFN, consulta Cómo establecer el nivel de detalle.
Manejo de la memoria en tiempo de ejecución
La plantilla Talisman: entorno usa una solución de transmisión personalizada creada usando capas de datos y Sequencer para mantener el nivel dentro del límite de transmisión de 100 000 unidades de memoria. El tamaño vertical de las áreas como la bodega y la longitud de los pasillos hicieron que el barco no cupiese dentro de la cuadrícula de transmisión de World Partition.
Cada capa de datos corresponde a una habitación diferente en el Talisman.
Para superar este límite, se combinaron las capas de datos con el Sequencer para cargar y descargar las áreas del barco con base en la ubicación del jugador.
Las zonas de mutación disparan eventos de carga en la secuencia de niveles.
Cada habitación tiene su propia capa de datos correspondiente y zonas de mutación a lo largo del barco que disparan eventos en la secuencia de niveles. Estos eventos cargan y descargan secciones del barco a medida que el jugador se mueve a través del nivel. Las zonas de mutación están ubicadas estratégicamente en áreas del barco para ocultarle esto al jugador.
Esta solución no es compatible con experiencias multijugador. Las capas de datos y la secuencia de niveles se incluyeron, pero las zonas de mutación se eliminaron para que la plantilla sea apta para la experiencia multijugador.
Cómo usar elementos de IU personalizados
Esta plantilla usa Verse para mostrar un widget de ícono de misión personalizado y reproducir un audio cuando el jugador interactúa con la consola en la sala inicial.
El cartel de misión personalizado se activa mediante un script de Verse.
Cuando el jugador usa el dispositivo del botón de VO de los cuartos de la tripulación, el archivo del script 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 del barco para ayudar a los jugadores a explorar el Talisman.
Muestra el blueprint de widget de IU quest_icon_widget personalizado.
Reproduce un clip de sonido.
Para obtener más información sobre cómo usar Verse a fin de personalizar tus proyectos de UEFN, consulta la Guía de introducción a la programación en Verse.
Cómo iluminar espacios grandes
Talisman usa la iluminación global de Lumen para ayudar a iluminar el entorno y ofrecerle sombras y una iluminación indirecta precisa al jugador en todo el barco.
Este corredor demuestra todas las técnicas descritas aquí.
Lumen proporciona oclusión ambiental e iluminación global a los objetos que no están iluminados de manera directa. Aunque Lumen es una herramienta poderosa para 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 se deshabilita en todas las mallas estáticas que están iluminadas indirectamente en todo el nivel. Lumen proporciona excelentes sombras para estas mallas, de modo que desactivar la propiedad Proyectar sombras aumentó el rendimiento sin sacrificar la calidad visual.
La mayoría de las luces en la plantilla tienen desactivada la opción Proyectar sombras.
La proyección de sombras también se complementa con el uso de funciones de iluminación y una textura rayada con algunas luces de techo.
El ruido y la intermitencia de la luz de los paneles de luz emisiva de Lumen se reducen emparejando cada uno con un foco que no proyecte sombra.
Este foco mejora la luz de este panel de luz
El valor emisivo para cada panel se reduce y complementa con un foco que no proyecte sombra. Cada foco recibe un pequeño radio de efecto y proporciona luz adicional mientras hace parecer como si la luz siguiera viniendo del panel de luz.
La iluminación del entorno se optimizó aún más haciendo que cada luz tuviera la menor distancia de trazado máxima posible. Esta configuración oculta cada luz de la vista cuando no es necesario renderizarla.
También se usó el visualizador de la complejidad de iluminación en toda la iluminación de Talisman.
El visualizador de la complejidad de iluminación se puede activar/desactivar usando Alt+7
Este modo del visor muestra el número de luces no estáticas que afectan a la geometría en tu nivel como sombreado de color y ayuda a hacerle seguimiento al costo en el rendimiento de la iluminación. Este visualizador es útil para minimizar la superposición de las luces en el nivel para mantener los costos sobre el rendimiento bajos.
Diseño y construcción de mallas
Se usaron mallas personalizadas con un número medio de polígonos y kitbashing para crear el interior detallado de Talisman. El kitbashing es una poderosa técnica que ayuda a minimizar la cantidad de recursos que tu proyecto necesita mientras te ofrece la capacidad de reutilizar y combinar las mallas para crear una nueva geometría.
Cada malla en el proyecto usa diferentes técnicas para mejorar la apariencia del recurso sin añadir geometría adicional.
Las normales ponderadas de cara son una técnica que alinea las normales de vértice del modelo con las caras planas más grandes para mejorar el sombreado sin reducir el rendimiento.
Las normales de vértice (líneas verdes) se alinean con las caras planas más grandes para mejorar el sombreado.
Se añadieron detalles como pernos, marcas y daño usando calcomanías de malla. Estas calcomanías usan UV personalizados para proyectar geometría compleja en las superficies y se pueden envolver alrededor de las esquinas o estirar a lo largo de las splines sin perder su apariencia.
Cómo diseñar materiales usando el control de material dinámico
A menudo, las texturas y los materiales suponen la mayor parte de cualquier proyecto de UEFN. Para reducir aún más el tamaño del proyecto, la plantilla utiliza un enfoque dinámico para las texturas y los materiales que evita el uso de mapas de texturas únicos. Para este resultado final, se utilizó un flujo de trabajo procedimental que almacena la oclusión ambiental, la curvatura y los datos de máscara en la malla con colores de vértice. Los datos almacenados se usaron para aplicar y fusionar los materiales.
Datos de color de vértice
Lo mejor es evitar el uso de mapas de texturas únicos para cada recurso y en su lugar empaquetar la oclusión ambiental, la curvatura y los datos de la máscara de textura en cada malla mediante los colores de vértice. Las mallas para el Talisman se diseñaron con una geometría y densidad de malla compatibles (polígonos por pulgada cuadrada) para brindar una gradación fluida entre los colores de vértice. Esto ayuda a crear transiciones limpias entre los materiales.
Los datos se almacenan usando el siguiente método:
| Mapa | Color de canal |
|---|---|
Oclusión ambiental | Rojo |
Curvatura | Verde |
Máscara de ID de material | Azul |
Para obtener más información sobre la pintura de los colores de vértice, consulta Materiales de color de vértice.
Las ranuras de materiales en cada malla luego se usan para definir qué parte de la malla recibe un material específico. Para obtener más información sobre las ranuras de materiales, consulta el proceso de material FBX.
Esta silla tiene ranuras de materiales para el metal y la goma.
Control de material dinámico
Las mallas para el Talisman usan una combinación de cinco tipos de material principales:
Metal
Metal pintado
Plásticos
Gomas
Textiles
Cada material depende de un solo material principal que usa texturas de cuadros alineadas con el entorno y parámetros definidos por el usuario para generar el resultado. Esto mantiene bajo el costo general de memoria de los materiales permitiendo que nuestros artistas usen los mismo materiales en todo el barco.
Una parte del material principal de Talisman: entorno
También se incluyen polvo, rayones y otros tipos de desgastes en el material principal y se aplican a las mallas usando máscaras basadas en parámetros. Estos parámetros se almacenan en la malla usando datos primitivos personalizados.
Cómo usar el dispositivo de cámara orbital
El dispositivo de cámara orbital ofrece una perspectiva que sigue al personaje del jugador, pero el jugador puede rotar para mirar a su alrededor libremente. La plantilla usa este dispositivo para permitirle al jugador cambiar entre una perspectiva de tercera persona y una perspectiva de primera persona simulada.
Los jugadores pueden cambiar entre tres perspectivas diferentes usando el dispositivo de cámara orbital
Esto se hace mediante el script de Verse camera_switch_mode_device.
# 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 de Verse escucha cuando el jugador dispara la acción de entrada del modo Creativo de destino, que, por defecto, se mapea al clic derecho del ratón o el gatillo izquierdo en un mando de control. Luego, hace lo siguiente:
Quita la cámara actual de la pila de cámaras.
Obtiene la siguiente cámara en la matriz de cámaras.
Añade la nueva cámara al agente.
Oculta el personaje del jugador, de ser necesario.
Muestra el personaje del jugador, de ser necesario.