El almacenamiento en caché de PSO crea y almacena los datos de Pipeline State Object usados habitualmente en tu app con antelación para mejorar el rendimiento del renderizado, sobre todo para reducir los enganches mientras se ejecuta tu aplicación. Esta guía ofrece un tutorial sobre cómo implementar el almacenamiento en caché de PSO en un proyecto de Android en Unreal Engine (UE).
Esta página proporciona instrucciones para el método de almacenamiento en caché de PSO empaquetados, que es el sistema manual heredado de almacenamiento en caché de PSO usado en UE 5.2 y en versiones anteriores. Recomendamos usar el sistema de precaché de PSO de UE 5.3 y versiones posteriores si es viable para tu proyecto. Consulta la documentación de la precaché de PSO para obtener más información.
Configuración requerida
Para seguir esta guía, necesitas lo siguiente:
Un proyecto de Unreal Engine configurado para Android como plataforma de destino.
Una versión del SDK y NDK de Android compatible con tu versión actual de Unreal Engine.
Un dispositivo de prueba Android compatible con el modo desarrollador y la depuración USB activados.
Para obtener más información sobre qué dispositivos Android son compatibles con tu versión de Unreal Engine, consulta la sección Requisitos de desarrollo de Android.
Preparación de la configuración del proyecto para el almacenamiento en caché de PSO
Para preparar la configuración de tu proyecto y que sea compatible con el almacenamiento en caché de PSO, sigue estos pasos:
Abre el proyecto en Unreal Editor.
Abre Editar > Configuración del proyecto.
Ve a Proyecto > Empaquetado y asegúrate de que las opciones Código de sombreador de material compartido y Bibliotecas nativas de material compartido estén activadas.
En el siguiente paso, tendrás que editar los archivos de configuración manualmente. Cierra Unreal Editor para evitar conflictos entre tus ediciones manuales y la configuración del proyecto.
Abre la carpeta
Config/Androidde tu proyecto, y luego abreAndroidEngine.ini. Añade los siguientes ajustes:C++[DevOptions.Shaders] NeedsShaderStableKeys=true
Ejecuta tu juego y reúne PSO
Ahora que la configuración de tu proyecto es compatible con la caché de PSO, compila tu proyecto con la línea de comandos -logPSO activada.
Asegúrate de que tu dispositivo de prueba esté conectado a tu ordenador.
Abre el proyecto en Unreal Editor.
Haz clic en Plataformas > Iniciador de proyectos.
En el iniciador de proyectos, clic en + Añadir > Crear perfil personalizado para crear un nuevo perfil de inicio.
Cambia el nombre de tu perfil a PSO Caching - ETC2.
En el desplegable que hay junto a ¿Cómo quieres preparar tu contenido?, haz clic en Cooking de acuerdo con el procedimiento.
Elige Android_ETC2 como tu plataforma de destino.
En Implementar, elige tu dispositivo móvil como dispositivo de destino y establece la variante como Android_ETC2.
En la categoría Iniciar, añade el comando
-logPSOa Parámetros adicionales de la línea de comandos.Puedes usar el servidor de archivos para Android (AFS) para añadir el comando
-logPSOal archivoUECommandLine.txty a una compilación existente en tu dispositivo. Para obtener más información, consulta la documentación de AFS.Inicia tu perfil. UE compila y empaqueta el proyecto y, a continuación, lo implementa en tu dispositivo.
Juega a tu juego. El registro de salida muestra un mensaje cada vez que tu juego registra un nuevo PSO.
En futuras sesiones de recopilación de PSO, puedes reutilizar el perfil que creaste a partir de esta sección.
Consejos para recopilar PSO
Cuantos más PSO recopiles, más tiempo tardará el juego en iniciarse cuando empaquetes la app final, ya que es necesario cargar todos tus PSO para que los usuarios puedan empezar a jugar. Por lo tanto, recomendamos recopilar los PSO específicamente en posiciones que sepas que son de uso común y tienen un enganche evidente, ya que las cachés de PSO para estas posiciones brindan las mayores ventajas para la experiencia de los usuarios.
Cada vez que una posición cambie significativamente, los PSO recopilados previamente para esa posición quedarán desactualizados. Por lo tanto, asegúrate de recopilar los PSO con frecuencia durante la producción.
Recupera los datos de PSO recopilados desde tu dispositivo
Después de registrar los PSO, debes recuperar los datos de tu dispositivo de prueba e incorporarlos en una nueva compilación. Para recuperar tus datos de PSO, sigue estos pasos:
Desconecta el dispositivo de prueba del ordenador y cierra el juego.
Si intentas cerrar el juego desde el iniciador de proyectos, es posible que tu dispositivo no guarde los datos de PSO que registró.
Cierra el proyecto y vuelve a conectar tu dispositivo de prueba a tu ordenador.
Extrae los PSO del siguiente directorio:
Internal Storage/Android/Data/[nombre del paquete del proyecto]/files/UnrealGame/[nombre del proyecto]/Saved/CollectedPSOsPuedes extraer el contenido del directorio CollectedPSOs utilizando cualquiera de los siguientes métodos:
Ejecuta el siguiente comando con el servidor de archivos para Android (AFS):
UnrealAndroidFileTool -p [nombre del paquete] -k [token de seguridad] pull ^saved/CollectedPSOs [ruta de destino]Conecta el dispositivo a tu ordenador y usa el sistema de archivos del ordenador para buscar la posición de los PSO.
Copia el archivo
.UPIPELINECACHEen tu ordenador en una posición de fácil acceso. En este ejemplo se usa una carpeta del directorio del proyecto llamadaImport/PSOFiles.
Compila los datos finales de la caché de PSO y añádelos al proyecto
Para incorporar tu caché de PSO a una compilación, sigue estos pasos:
Abre la carpeta de tu proyecto y busca Saved/Cooked/Android_ETC2/[nombre del proyecto]/Metadata/PipelineCaches. Copia los archivos de esta carpeta en Import/PSOFiles.
Abre la herramienta de línea de comandos y dirígete al directorio de instalación de la versión del motor que estás usando para tu proyecto. Luego, busca la carpeta Engine/Binaries/Win64. Por ejemplo: C:/Archivos de programa/Epic Games/UE_5.2/Engine/Binaries/Win64.
Ejecuta la siguiente línea de comandos:
C++UnrealEditor-Cmd.exe "YourProjectPath.uproject" -run=ShaderPipelineCacheTools expand C:\PSOfiles\*.rec.upipelinecache C:\PSOfiles\*.shk C:\PSOfiles\"Alias Name"_"Project Name"_"Used Graphics API".spcDespués de que la línea de comandos se ejecute correctamente, el directorio Import/PSOFiles debería contener un nuevo archivo de certificado PKCS #7. Cópialo en la carpeta Build/Android/PipelineCaches de tu proyecto.
Recompila e inicia el juego de nuevo. La nueva compilación incluye los datos finales de la caché de PSO.
Resultado
En el inicio también deberías ver un registro que indique cuántos PSO se han cargado. Al ejecutar tu juego, deberían solucionarse los problemas de renderizado que se produzcan en las posiciones donde recopilaste los PSO.