La instanciación de niveles es un flujo de trabajo basado en niveles que facilita la transferencia de mundos sin partición al sistema de partición de mundos. Se puede usar para crear estrategias de transmisión complejas con las siguientes características:
-
Instanciación de nivel con transformaciones usando un actor diseñado específicamente.
-
Transmisión de múltiples instancias del mismo nivel en tiempo de ejecución. Esto no era posible en las versiones anteriores de Unreal Engine.
-
Anidado jerárquico de subniveles adicionales dentro de un subnivel.
Por ejemplo, puedes usar la partición de mundo para llenar un mapa con un gran número de actores. En casos en que los actores deban organizarse de una manera específica y reutilizarse, las instancias de nivel proporcionan un flujo de trabajo de edición en contexto que remplaza la vista de nivel antigua.
Aunque es posible usar la transmisión de niveles sin utilizar la partición de mundo, las instancias de nivel no tienen automáticamente un manejo de transmisión o estrategias de transmisión fuera del mundo principal de una partición de mundo.
Cómo crear instancias de nivel
Las instancias de nivel se generan a partir de actores seleccionados y se pueden crear en el Visor o el Esquematizador de mundo.
Después de seleccionar los actores, haz clic derecho en uno de ellos para mostrar el menú contextual y selecciona Crear a partir de selección.
Verás un cuadro de diálogo con los siguientes ajustes:
| Ajuste | Descripción |
|---|---|
| Tipo | El tipo de instancia de nivel:
|
| Actores externos | Permite que los actores externos usen el sistema "Un archivo por actor". Para obtener más información, consulta la One File Per Actor documentación. |
| Tipo pivote | El tipo de pivote que tendrá la instancia de nivel:
|
| Actor pivote | Si se selecciona un actor como el pivote, utiliza este menú desplegable para seleccionar qué actor será el punto de origen para la instancia del nivel. |
Una vez que hayas seleccionado los ajustes, se te pedirá que guardes la nueva instancia de nivel.
Este proceso creará un nuevo actor ALevelInstance en el nivel, que remplazará los actores seleccionados previamente. Este actor representa el nivel que se acaba de crear y todas las transformaciones aplicadas a este actor se aplicarán a la instancia de nivel.
En el Esquematizador de mundo, los actores de nivel se desactivarán, ya que no se pueden seleccionar o editar actualmente.
Es posible arrastrar un actor ALevelInstance a tu nivel y asignarle un archivo .umap en el panel de detalles.
Es posible proporcionar plantillas de instancias de nivel a través de archivos .ini de Unreal Engine usando entradas similares a las plantillas regulares de creación de niveles. Puedes hacer esto añadiendo lo siguiente al archivo DefaultEditor.ini de tu proyecto:
[/Script/LevelInstanceEditor.LevelInstanceEditorSettings]
+TemplateMapInfos=(ThumbnailTexture=Null,Map="/Game/Maps/Tools/TM-Template")
Instancias de nivel empaquetadas
Una instancia de nivel empaquetada es un tipo de instancia de nivel que intenta agrupar las mallas estáticas de un nivel en la menor cantidad de instancias de mallas estáticas posible.
Hay dos tipos de instancias de nivel empaquetadas:
-
Instancias de nivel empaquetadas: El proceso de empaquetado crea una instancia de nivel empaquetada centrada en la ubicación del actor ALevelInstance.
-
Blueprint de instancia de nivel empaquetada: El proceso de empaquetado crea una instancia de nivel que se puede referenciar desde un blueprint.
Los actores y componentes que no son mallas estáticas no se incluyen en el proceso de empaquetado y permanecerán separados en el nivel de origen.
El empaquetado de una instancia de nivel no cambia el flujo de trabajo de edición al trabajar con el nivel.
Las instancias de nivel empaquetadas actualmente son una función experimental y pueden cambiar o se pueden eliminar en versiones futuras de Unreal Engine.
Cómo editar las instancias de nivel
Las instancias de nivel se pueden editar en contexto desde el visor o el panel de detalles.
El modo de edición se abre al hacer lo siguiente:
-
Selecciona la instancia de nivel en el visor.
-
Haz clic derecho para abrir el menú contextual.
-
En la sección de instancia de nivel del menú, pasa el cursor sobre la opción "Editar" y selecciona el nivel que te gustaría editar.
El modo de edición también se puede abrir desde el panel de detalles:
Selecciona la instancia de nivel que te gustaría editar y haz clic en el botón "Editar" en el panel de detalles.
Transmisión de niveles en tiempo de ejecución
Modo embebido
Al usar el modo embebido, las instancias de nivel que usan el sistema de un archivo por actor (OFPA) se descartan y sus actores se añaden a la cuadrícula de partición de mundo en tiempo de ejecución. Este es el modo predeterminado de tiempo de ejecución y el método sugerido para transmitir el contenido de los niveles. Esto también hace que las instancias de nivel existan solo dentro del editor.
Algunos actores que no usan OFPA se pierden en tiempo de ejecución al usar el modo embebido. Por ejemplo, el objeto AWorldSettings de una instancia de nivel embebida no existe en tiempo de ejecución, ya que no es un actor OFPA.
Deberías evitar esto o usar el modo de transmisión de nivel cuando sea necesario.
Modo de transmisión de nivel
Las instancias de nivel que no usan OFPA no pueden embeberse en la cuadrícula de partición de mundo y, en su lugar, usarán la transmisión de nivel estándar en tiempo de ejecución. Esto significa que, cuando el actor ALevelInstance se carga a través de su propia celda de tiempo de ejecución de partición de mundo, también cargará el nivel asociado.
Este método de transmisión de nivel tiene un costo añadido en tiempo de ejecución, ya que agrega más niveles a la transmisión. No se recomienda usar muchos niveles que usen este modo de transmisión debido a su impacto sobre el rendimiento.
El modo embebido con Partición de mundo: Capas de datos es una gran manera de aproximarse a lo que antes se podía hacer con los niveles cargados dinámicamente.
Capas de datos
Las instancias de nivel son compatibles con Partición de mundo: Capas de datos al usar el modo embebido o el modo de transmisión de nivel. Los actores presentes en la instancia del nivel heredarán las capas de datos del actor ALevelInstance.