PSO Caching erstellt und speichert im Voraus die am häufigsten verwendeten Pipeline-Zustandsobjekt (PSO)-Daten für deine App, um die Rendering-Performance zu verbessern, insbesondere um Probleme bei der Ausführung deiner Anwendung zu verringern. Die Anleitung führt dich durch die Implementierung von PSO-Caching in einem Android-Projekt in Unreal Engine (UE).
Diese Seite enthält Befehle für die Paket-PSO-Caching-Methode. Dabei handelt es sich um das alte, manuelle PSO-System, das in den UE-Versionen 5.2 und älter verwendet wurde. Wir empfehlen die Verwendung des PSO-Precaching-Systems ab Version 5.3, sofern dies für dein Projekt geeignet ist. Weitere Informationen findest du in der Dokumentation zum PSO-Precaching.
Erforderliche Einrichtung
Um dieser Anleitung zu folgen, benötigst du Folgendes:
Ein Unreal Engine-Projekt, das für Android als Zielplattform eingerichtet ist.
Die Version von Android SDK und NDK, die mit deiner aktuellen Version von Unreal Engine kompatibel ist.
Ein kompatibles Android-Gerät mit Developer Mode und USB-Debugging aktiviert.
Weitere Informationen darüber, welche Android-Geräte mit deiner Version von Unreal Engine kompatibel sind, findest du unter Android-Entwicklungsanforderungen.
Einrichten der Projekt-Einstellungen für PSO-Caching
Befolge diese Schritte, um deine Einstellungen für die Unterstützung von PSO-Caching zu konfigurieren:
Öffnen Sie Ihr Projekt im Unreal Editor.
Öffne Edit > Project Settings.
Gehe zu Project > Packaging und stelle sicher, dass Share Material Shader Code und Shared Material Native Libraries aktiviert sind.
Im nächsten Schritt musst du die Config-Dateien manuell bearbeiten. Schließe Unreal Editor, um Konflikte zwischen deinen manuellen Bearbeitungen und den Projekt-Einstellungen zu vermeiden.
Öffne den Ordner
Config/Androiddeines Projekts und dannAndroidEngine.ini. Füge die folgenden Einstellungen hinzu:C++[DevOptions.Shaders] NeedsShaderStableKeys=true
Führe dein Spiel aus und sammle PSOs
Deine Einstellungen sind jetzt PSO-Cache-kompatibel. Führe einen Build deines Projekts mit aktivierter -logPSO-Befehlszeile aus.
Stelle sicher, dass dein Testgerät mit deinem Computer verbunden ist.
Öffnen Sie Ihr Projekt im Unreal Editor.
Klicke auf Platforms > Project Launcher.
Klicke im Project Launcher auf (+) Add > Create Custom Profile , um ein neues Startprofil zu erstellen.
Benenne dein Profil um in PSO Caching - ETC2.
In der Dropdown-Liste neben How would you like to cook your content? klicke auf Cook by the Book.
Wähle Android_ETC2 als deine Zielplattform.
Wähle unter Deploy dein Mobilgerät als Zielgerät aus und setze Variant auf Android_ETC2.
Füge in der Kategorie Launch den Befehl
-logPSOzu Additional Command Line Parameters hinzu.Du kannst den Android File Server (AFS) verwenden, um den Befehl
-logPSOzur DateiUECommandLine.txtin einem bestehenden Build auf deinem Gerät hinzuzufügen. Weitere Informationen findest du in der Dokumentation für AFS.Starte dein Profil. UE baut und verpackt das Projekt und stellt es dann auf deinem Gerät bereit.
Spiele dein Spiel durch. Das Output-Log zeigt jedes Mal eine Nachricht an, wenn dein Spiel ein neues PSO loggt.
Bei zukünftigen Sitzungen für das Sammeln von PSOs kannst du das Profil, das du in diesem Abschnitt erstellt hast, wiederverwenden.
Tipps zum Sammeln von PSOs
Je mehr PSOs du sammelst, desto länger dauert der Start deines Spiels, wenn du die finale App verpackst, da alle deine PSOs geladen werden müssen, bevor Nutzer anfangen können, zu spielen. Daher raten wir dazu, PSOs speziell an Orten zu sammeln, die du häufig nutzt und an denen du spürbares Ruckeln bemerkst, da PSO-Caches für diese Orte den größten Vorteil für dein Nutzererlebnis bieten.
Wenn sich ein Ort erheblich verändert, werden die zuvor für diesen Ort gesammelten PSOs ungültig. Sammle daher PSOs im Laufe der Produktion regelmäßig.
Gesammelte PSO-Daten von deinem Gerät abrufen
Nachdem du deine PSOs aufgezeichnet hast, musst du die Daten von deinem Testgerät abrufen und in einen neuen Build integrieren. Um deine PSO-Daten abzurufen, befolge diese Schritte:
Trenne dein Testgerät von deinem Computer und schließe dein Spiel.
Wenn du versuchst, dein Spiel über den Project Launcher zu schließen, speichert dein Gerät möglicherweise die erfassten PSO-Daten nicht.
Schließe dein Projekt und verbinde dein Testgerät erneut mit deinem Computer.
Hole die PSOs aus dem folgenden Verzeichnis:
Internal Storage/Android/Data/[Paketname des Projekts]/files/UnrealGame/[Projektname]/Saved/CollectedPSOsDu kannst den Inhalt des Verzeichnisses „CollectedPSOs“ mit einer der folgenden Methoden abrufen:
Führe über den Android Datei Server (AFS) folgenden Befehl aus:
UnrealAndroidFileTool -p [Paketname] -k [Sicherheitstoken] pull ^saved/CollectedPSOs [Zielpfad]Verbinde dein Gerät mit deinem Computer und navigiere mithilfe des Dateisystems deines Computers zum Speicherort der PSOs.
Kopiere die Datei
.UPIPELINECACHEDatei an einen leicht zugänglichen Speicherort auf deinem Computer. Dieses Beispiel verwendet einen Ordner im Verzeichnis des Projekts namensImport/PSOFiles.
Endgültige PSO-Cache-Daten erstellen und zu deinem Projekt hinzufügen
Befolge diese Schritte, um deinen PSO-Cache in einen Build zu integrieren:
Öffne deinen Projektordner und suche nach Saved/Cooked/Android_ETC2/[Projektname]/Metadata/PipelineCaches. Kopiere die Dateien aus dem Ordner nach Import/PSOFiles.
Öffne dein Befehlszeilentool und navigiere zum Installationsverzeichnis für die Engine-Version, die du für dein Projekt verwendest, und suche dann den Ordner „Engine/Binaries/Win64”. Zum Beispiel: C:/Programme/Epic Games/UE_5.2/Engine/Binaries/Win64.
Führe die folgende Befehlszeile aus:
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".spcNachdem die Befehlszeile erfolgreich ausgeführt wurde, sollte das Verzeichnis Import/PSOFiles eine neue PKCS #7-Zertifikatdatei enthalten. Kopiere diese in den Build/Android/PipelineCaches-Ordner deines Projekts.
Erstelle das Spiel neu und starte es erneut. Der neue Build umfasst die endgültigen PSO-Cache-Daten.
Ergebnis
Beim Start solltest du ein Log sehen, das angibt, wie viele PSOs geladen wurden. Wenn du dein Spiel ausführst, sollten alle Rendering-Ruckler an den Orten behoben werden, von denen du PSOs gesammelt hast.