La mise en cache de PSO crée et stocke à l'avance les données de PSO (Pipeline State Object, à savoir objet d'état du pipeline) les plus fréquemment utilisées par votre application afin d'améliorer les performances de rendu, notamment pour réduire les ralentissements lors de l'exécution de votre application. Dans ce guide, nous vous expliquons en détail comment implémenter la mise en cache de PSO dans un projet Android dans l'Unreal Engine (UE).
Dans cette page, nous vous décrivons la méthode de mise en cache de PSO en lots, c'est-à-dire l'ancien système de mise en cache de PSO utilisé dans l'UE 5.2 et les versions précédentes. Nous vous recommandons d'utiliser le système de mise en cache anticipée de PSO à partir de l'UE 5.3 et les versions ultérieures s'il est viable pour votre projet. Consultez la documentation relative à la mise en cache anticipée de PSO pour en savoir plus.
Configuration requise
Pour suivre ce guide, vous devez disposer des éléments suivants :
Un projet Unreal Engine configuré avec Android comme plateforme cible.
La version du SDK et du NDK Android compatibles avec votre version actuelle de l'Unreal Engine.
Un appareil de test Android compatible avec le mode de développeur et le débogage USB activés.
Pour en savoir plus sur les appareils Android compatibles avec votre version de l'Unreal Engine, consultez la page Configuration minimale requise pour le développement sous Android.
Configurer les paramètres du projet pour la mise en cache de PSO
Pour configurer les paramètres de votre projet afin d'assurer la prise en charge de la mise en cache de PSO, procédez comme suit :
Ouvrez votre projet dans l'Unreal Editor.
Ouvrez Modifier > Paramètres du projet.
Accédez à Projet > Empaquetage et assurez-vous que les options Partager le code du shader de matériau et Bibliothèques natives de matériaux partagées sont activées.
Dans l'étape suivante, vous devez modifier les fichiers de configuration manuellement. Fermez l'Unreal Editor pour éviter les conflits entre vos modifications manuelles et les paramètres du projet.
Ouvrez le dossier
Config/Androidde votre projet, puis ouvrezAndroidEngine.ini. Ajoutez les paramètres suivants :C++[DevOptions.Shaders] NeedsShaderStableKeys=true
Lancer le jeu et rassembler les PSO
Maintenant que les paramètres du projet sont compatibles avec la mise en cache de PSO, lancez un build du projet avec la ligne de commande -logPSO activée.
Vérifiez que votre appareil de test est connecté à votre ordinateur.
Ouvrez votre projet dans l'Unreal Editor.
Cliquez sur Plateformes > Lanceur de projet.
Dans le lanceur de projet, cliquez sur + Ajouter > Créer un profil personnalisé pour créer un nouveau profil de lancement.
Renommez votre profil PSO Caching - ETC2.
Dans le menu déroulant en regard de Comment souhaitez-vous préparer votre contenu ?, cliquez sur Préparation selon les règles.
Choisissez Android_ETC2 comme plateforme cible.
Sous Déployer, sélectionnez votre appareil mobile comme appareil cible et définissez l'option Variante sur Android_ETC2.
Dans la catégorie Lancement, ajoutez la commande
-logPSOà la section Paramètres de ligne de commande supplémentaires.Vous pouvez utiliser le serveur de fichiers Android (AFS) pour ajouter la commande
-logPSOau fichierUECommandLine.txtdans un build existant sur votre appareil. Pour en savoir plus, consultez la documentation du serveur de fichiers Android.Lancez votre profil. L'UE génère et empaquette le projet, puis le déploie sur votre appareil.
Jouez à votre jeu. Le journal de sortie affiche un message chaque fois que votre jeu enregistre un nouveau PSO.
Lors de futures sessions de collecte de PSO, vous pouvez réutiliser le profil créé dans cette section.
Conseils pour la collecte de PSO
Plus vous collectez de PSO, plus le temps de démarrage de votre jeu est long lors de l'empaquetage de l'application finale, car tous vos PSO doivent être chargés avant que les utilisateurs puissent commencer à jouer. Par conséquent, nous vous recommandons de collecter les PSO dans des zones du jeu que vous savez très fréquentées et où des saccades sont perceptibles, car c'est là que les caches de PSO améliorent le plus l'expérience des joueurs.
Chaque fois qu'une zone change de manière significative, les PSO créés pour cette zone deviennent obsolètes. Veillez donc à collecter fréquemment des PSO tout au long de la phase de production.
Récupérer les données de PSO collectées depuis votre appareil
Après avoir enregistré vos PSO, vous devez récupérer les données de votre appareil de test et les intégrer à un nouveau build. Pour récupérer vos données de PSO, procédez comme suit :
Débranchez votre appareil de test de votre ordinateur et fermez votre jeu.
Si vous tentez de fermer votre jeu depuis le lanceur de projet, votre appareil risque de ne pas enregistrer les données de PSO qu'il a consignées.
Fermez votre projet et reconnectez votre appareil de test à votre ordinateur.
Importez les PSO du répertoire suivant :
Stockage interne/Android/Data/[nom du paquet du projet]/files/UnrealGame/[nom du projet]/Saved/CollectedPSOsVous pouvez extraire le contenu du répertoire CollectedPSOs en utilisant l'une des méthodes suivantes :
Exécutez la commande suivante en utilisant le serveur de fichiers Android (AFS) :
UnrealAndroidFileTool -p [nom du paquet] -k [jeton de sécurité] pull ^saved/CollectedPSOs [chemin de destination]Connectez votre appareil à votre ordinateur et utilisez le système de fichiers de votre ordinateur pour accéder à l'emplacement des PSO.
Copiez le fichier
.UPIPELINECACHEsur votre ordinateur à un emplacement facilement accessible. Dans cet exemple, nous utilisons un répertoire de projet appeléImport/PSOFiles.
Créer des données de cache de PSO finales et les ajouter à votre projet
Pour incorporer votre cache de PSO dans un build, procédez comme suit :
Ouvrez le dossier de votre projet et recherchez Saved/Cooked/Android_ETC2/[Nom du projet]/Metadata/PipelineCaches. Copiez les fichiers de ce dossier dans le répertoire Import/PSOFiles.
Ouvrez votre outil de ligne de commande et accédez au répertoire d'installation de la version du moteur que vous utilisez pour votre projet, puis recherchez le dossier Engine/Binaries/Win64. Par exemple : C:/Program Files/Epic Games/UE_5.2/Engine/Binaries/Win64.
Exécutez la ligne de commande suivante :
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".spcUne fois la ligne de commande correctement exécutée, le répertoire Import/PSOFiles doit contenir un nouveau fichier de certificat PKCS #7. Copiez-le dans le dossier Build/Android/PipelineCaches de votre projet.
Regénérez et lancez à nouveau votre jeu. Le nouveau build inclut les données de cache de PSO finales.
Résultat
Au lancement, un journal doit normalement s'afficher indiquant le nombre de PSO chargés. Pendant l'exécution de votre jeu, veillez à corriger les saccades de rendu provenant des zones où vous avez collecté les PSO.