Para ayudar a que tus islas funcionen en todas las plataformas compatibles, Fortnite tiene algunas limitaciones de memoria.
En Unreal Editor para Fortnite (UEFN), puedes usar capacidades de memoria ampliadas para crear experiencias más grandes y diversas. Para aprovecharlo al máximo, resulta útil entender la forma en que se calcula el uso de la memoria en UEFN.
World Partition
World Partition es la magia detrás de la creación de una gran experiencia en la isla. Esta función divide automáticamente el mundo en una cuadrícula y transmite solo las celdas necesarias.
World Partition utiliza la transmisión, que carga y descarga celdas, y el nivel de detalle jerárquico (HLOD), que agrupa y disminuye la cantidad de detalle en los recursos a medida que la cámara del jugador se aleja.
Para más información sobre World Partition, la transmisión y el HLOD, consulta Transmisión y HLOD.
¿Cómo se calcula la memoria?
UEFN calcula el uso de memoria a partir de los datos producidos en el tiempo de cook. Es decir:
Resultados rápidos en islas grandes.
Cifras coherentes cada vez que se realizan cálculos en la misma versión de la isla, la misma compilación de Fortnite y el mismo dispositivo.
Amplia compatibilidad con más tipos de recursos y con SceneGraph.
El sistema de cálculo de memoria de UEFN solo se ejecuta en el momento de la edición y no puede utilizarse para evaluar el uso de memoria durante el juego. Se utiliza para verificar que el uso de memoria base de una isla no supera un umbral razonable.
Sin embargo, la lógica personalizada de tiempo de ejecución puede dar lugar a un uso elevado de la memoria, lo que puede causar problemas a los jugadores, limitando su capacidad para jugar en tu isla. Recomendamos utilizar el Profiler espacial para hacerse una mejor idea de cómo utiliza la memoria la isla y de cómo funciona durante el juego, para evitar que los jugadores sufran problemas de estabilidad o de rendimiento.
La disposición de la sesión
Cuando se cargue tu sesión, verás una barra de uso de memoria actual en el HUD.
La barra muestra un máximo de 100 000 unidades de memoria para darte una idea del uso de memoria local en tu isla.
Con la transmisión habilitada, la memoria se calcula en función de la posición del jugador en la isla, en lugar de la memoria total utilizada por todos los recursos de la isla. Realizar un cálculo de memoria te dará los valores de consumo de memoria más precisos para cada celda de transmisión.
Algunos recursos permanecerán en la memoria independientemente de la posición del jugador y aumentarán el uso de memoria en cualquier parte del mapa. La mayoría de los recursos se cargarán y descargarán a medida que se transmiten, y la barra se actualizará para reflejarlo.
Todos los recursos a los que hace referencia el nivel (incluidos dispositivos, paisajes, y mallas y texturas personalizadas, etc.) cuentan para el uso total de memoria.
Ten en cuenta que si alguna zona de tu nivel supera los 100 000, no podrás publicar tu isla.
Como usuario de UEFN, puedes superar el límite del termómetro de 100 000 siempre que no publiques tu isla. Ten en cuenta que las personas que colaboran contigo en una consola puede que alcancen un límite de memoria disponible en el hardware que les expulsará de la sesión. Podrán volver a conectarse una vez resuelto el problema.
Cómo realizar cambios en el contenido
El sistema requiere datos cooked actualizados para calcular con precisión el uso de memoria. Después de realizar cambios de contenido con la edición en tiempo real o la herramienta teléfono, verás un aviso de aplicación de cambios aunque el indicador del modo de edición muestre Actualizado, porque la edición en tiempo real no actualiza los datos cooked utilizados para los cálculos de memoria.
Hasta que no apliques los cambios, la barra de uso seguirá actualizándose, pero mostrará un valor desactualizado. El coste de las modificaciones de contenido no se reflejará.
Cómo iniciar un cálculo de memoria
Tu isla debe poder ejecutarse en todas las plataformas de hardware admitidas para que puedas publicarla correctamente.
Antes de publicar, es importante que te asegures de que tu proyecto no supera los límites de memoria. En el desplegable Proyecto, selecciona Iniciar cálculo de memoria.
Este proceso calcula la memoria utilizada en cada celda.
Un cuadro de diálogo te pedirá que subas una versión privada. Haz clic en el botón y observa la barra de progreso.
Opcionalmente, puedes añadir una descripción de la versión de tu proyecto.
Una ventana emergente en la parte inferior de la pantalla te indicará que el cálculo de la memoria está en curso.
Una vez finalizada la carga, la ventana emergente cambia para indicar que se ha iniciado el cálculo.
En el cliente, aparece el resultado del cálculo de la memoria. Si pulsas Continuar, volverás a controlar a tu personaje.
Una vez terminado, el personaje del jugador se teletransporta de nuevo a la ubicación original antes de que comenzara el cálculo y verás uno de los dos estados:
Si tienes activada la transmisión en tu proyecto, ahora puedes volar alrededor para ver la cantidad de espacio que ocupan las diferentes zonas.
Si activas la transmisión, la barra de memoria utilizada cambia durante el recorrido aéreo. Puedes utilizarlo para identificar las áreas del nivel que podrían superar el presupuesto.
Si la isla supera el presupuesto, tendrás que solucionar los problemas de memoria local antes de publicarla.
Mi isla supera el presupuesto. ¿Qué hago?
Hay muchas estrategias para ahorrar memoria una vez alcanzado el límite. Prueba cualquier combinación de las siguientes:
Tras el cálculo de memoria, puedes abrir una hoja con los 100 recursos que más memoria consumen en tu isla. Ve a Ventana > Registro de mensajes > Resultados de la prueba de memoria.
La tabla siguiente define cada término:
Término Explicación Recurso
Suele ser el nombre de un recurso en el explorador de contenido. Algunos recursos pueden mostrarse como “Recurso de Fortnite”. Este es un nombre que asignamos a los recursos que no se han creado en tu proyecto, pero que aun así aumentan el uso de memoria de la isla.
Tipo
Este es el tipo de recurso. Algunos ejemplos son: textura, material, nivel y otros.
N.º de referencias de actor
El número de actores que hacen referencia al recurso, directa o indirectamente.
N.º de referencias de paquete
El número de paquetes cooked que hacen referencia al recurso. Este número suele aumentar si varias celdas de World Partition hacen referencia a un recurso.
Tamaño
El tamaño del recurso. Es la cantidad que contribuye un recurso concreto a la barra de uso de memoria actual en la ubicación de muestra.
Transmite texturas siempre que sea posible. Esto significa crear texturas para que sean aptas para la transmisión (potencia de dos dimensiones) y configurar las texturas para que se generen mapas MIP. Si las texturas no se pueden transmitir, siempre utilizarán la máxima cantidad de memoria, independientemente de la distancia a la que se utilicen. Puedes encontrar más información en Resizing Textures (Cómo cambiar el tamaño de las texturas).
Activa la transmisión en el panel de World Partition. Aunque es imprescindible para las islas grandes, las pequeñas también pueden necesitar transmisiones, sobre todo si el contenido se vuelve demasiado denso.
Cuando la transmisión esté activada, asegúrate de que los actores tienen la carga espacial habilitada siempre que sea posible. Si no, se hará el cook en el paquete del nivel principal y se cargarán siempre. Esto es relevante sobre todo para los actores proxy de transmisión de paisaje, ya que pueden contener una gran cantidad de datos de colisión que por lo general interesa transmitir a la carta.
Distribuye uniformemente el contenido de tu isla. Concentrar demasiados actores en un área pequeña no permitirá que el contenido se transmita y hará que puedas superar tu presupuesto de memoria.
Reduce el número de dispositivos que utiliza la isla. Los dispositivos son de los actores más caros que puedes colocar. Sin embargo, colocar instancias del mismo dispositivo supone un coste de memoria mucho menor.
Echa un vistazo a la ventana Tamaño del proyecto. Si ves algunos objetos que consumen mucha memoria en el disco, lo más probable es que también consuman mucha memoria en tiempo de ejecución. Para consultar el tamaño del proyecto, haz clic en el menú desplegable Proyecto y selecciona Tamaño del proyecto.
Reduce el nivel de calidad en los LOD de los recursos personalizados, especialmente en los que solo son visibles a cierta distancia.
Reutiliza los recursos varias veces. En un bosque formado por 100 árboles, utiliza 5 variaciones y multiplícalas en lugar de utilizar 100 árboles únicos. Esto supondrá una gran diferencia en la memoria.
Si utilizas HLODs, genéralos durante todo el proceso del proyecto y asegúrate de que solo los estás generando para objetos que puedes ver desde lejos.
Utiliza las capas de datos si tus islas pueden subdividirse en configuraciones que no estén pensadas para mostrarse todas a la vez. Por ejemplo, una mazmorra subterránea que no es accesible a menos que el jugador entre en un santuario.
Reduce la complejidad de la malla de tu contenido personalizado. Las mallas con muchos polígonos tienen un mayor coste de memoria. Para editar la malla, haz doble clic sobre ella en el explorador de contenido y ajusta el valor de Mantener porcentaje de triángulo en Configuración de Nanite. Utilizar un valor menor reducirá la complejidad de la malla y reducirá el coste de memoria del actor.
Resolución de otros problemas
Para una validación correcta, se espera que los creadores tengan la transmisión habilitada y que se generen mapas MIP para las texturas. Si cualquiera de las texturas tenía la opción Ajustes de generación de MIP (MipGenSettings) establecida en Sin mapas MIP, anteriormente no se indicaba cuando se enviaba tu isla para su publicación. Sin embargo, ahora si una textura de tu proyecto tiene MipGenSettings establecido como Sin mapas MIP, no superará la validación.
Ten en cuenta las siguientes excepciones a este requisito para la transmisión y los mapas MIP:
Esta regla solo se aplica a texturas con más de 1 millón de téxeles. Así, por ejemplo, si las dimensiones de una textura, al multiplicarlas, son inferiores a 1 048 576, pasará la validación incluso con MipGenSettings establecido como Sin mapas MIP.
No es necesario que las texturas del grupo de IU tengan habilitada la transmisión.