Hintergrund
NEW STATE Mobile ist ein Battle Royale-Spiel von Krafton, das im November 2021 weltweit veröffentlicht wurde und im ersten Monat nach der Veröffentlichung mehr als 45 Millionen Downloads verzeichnete. KRAFTON, Inc. ist ein Zusammenschluss unabhängiger Game-Entwicklungsstudios, die innovative und ansprechende Unterhaltung für Gamer auf der ganzen Welt schaffen. Das Unternehmen besteht aus PUBG Studios, Bluehole Studio, Striking Distance Studios, RisingWings, Dreamotion und Unknown Worlds, die jeweils über ihre eigene Fachkompetenz verfügen. NEW STATE Mobile wurde mit der Unreal Engine 4 entwickelt. Wir haben verschiedene Maßnahmen ergriffen, um die Wärmeentwicklung und den Akkuverbrauch durch die hohe GPU-Auslastung der einzigartigen Gaming-Funktionen zu reduzieren.
Gamer können Fernkämpfe austragen, daher muss die Spiel-Engine in der Lage sein, Szenen aus großer Entfernung zu rendern. Außerdem gibt es auf dem Schlachtfeld zahlreiche Vegetationen, was zu einer erheblichen Leistungsminderung führt. Das Team entschied sich daher für den Android GPU Inspector (AGI), um die GPU-Nutzung des Spiels zu optimieren und Engpässe zu beseitigen.
Abbildung 1: Screenshot aus NEW STATE Mobile
Vorgehensweise
NEW STATE Mobile nutzte AGI, um auf eine große Menge an GPU-Zählerinformationen zuzugreifen und die GPU-Nutzung entsprechend zu optimieren. Mithilfe der von AGI bereitgestellten Daten zum GPU-Aktivitätsprofiling wurden unnötige Rendering-Pässe identifiziert. Nachdem er ermittelt hatte, welche Segmente die GPU-Nutzung und die Arbeitsspeicherbandbreite beanspruchten, überprüfte er den Fortschritt der Optimierung mithilfe des GPU-Zählers und der GPU-Aktivität, um zu sehen, ob er auf dem richtigen Weg war.
Abbildung 2: Screenshot aus NEW STATE Mobile
Hier sind einige Erkenntnisse, die das Team mithilfe von AGI über die Leistung des Spiels gewonnen hat:
Optimierung des Basispasses: Der Depth Prepass ist eine Technologie, die die Nutzung von Early-Z erhöht und die Verwendung von Fragmentshading reduziert. Der Tiefen-Prepass wurde speziell für LOD0 verwendet, das den größten Teil des Bildschirms einnimmt, wodurch die Belastung durch zusätzliche Draw-Aufrufe minimiert wird. Außerdem kann die Verwendung des 32‑Bit-Szenenfarbenformats die Leistung des gesamten Rendering-Passes verbessern. Das Standardformat für SceneColor in UnrealEngine 4 ist FloatRGBA (64 Bit). Wenn ein 32‑Bit-Format verwendet wird, kann die Speicherbandbreite halbiert werden.
Auswirkungen gemessen: Nach der Anwendung des Vorab-Tiefepasses sank die GPU-Auslastung um 7, 5%. Aufgrund des Vorabdurchlaufs für die Tiefe könnten mehr Fragmente Early-Z sein. Die für das Fragment-Shading erforderliche Zeit ist um 2 % gesunken. Durch das 32-Bit-Szenefarbenformat wurde die GPU-Auslastung um 5, 3 % reduziert. „Shaders Busy“ ist um 2 % gesunken und die Gesamtlesegeschwindigkeit der GPU aus dem Systemspeicher um 330 MB/s. Die Menge, die die GPU in den Systemspeicher schreibt, wurde um 78 MB/s reduziert und die Lesegeschwindigkeit des Texturspeichers um 43 MB/s.
Optimierung des Schattenpasses: Wenn Meshes als Schattenwerfer verwendet werden, macht die Verwendung eines hohen Polygon-LODs keinen großen Unterschied bei der Qualität. Es wird empfohlen, ein niedriges Polygon-LOD zu verwenden, um die Anzahl der Dreiecke zu reduzieren. In Unreal Engine 4 kann ein LOD mit wenigen Polygonen über den Konsolenbefehl „ForceLODShadow“ verwendet werden.
Auswirkungen gemessen: Die Anzahl der Dreiecke, die für Schatten verwendet wurden, ging um etwa 120.000 zurück. Die GPU-Zählerdaten in AGI zeigten, dass die GPU-Nutzung um etwa 2 % gesunken ist, die Menge des GPU-Speichers, die aus dem Systemspeicher gelesen wurde, um 130 MB/s und die Menge, die von der GPU in den Systemspeicher geschrieben wurde, um etwa 23 MB gesunken ist.
Auto-Instancing: Mit der automatischen Instancing-Funktion, die sowohl für die Optimierung des Schattenpasses als auch des Basispasses angewendet werden kann, können Sie dieselben Renderbefehle zur Laufzeit zusammenführen und dann alle gleichzeitig rendern. So konnte NEWSTATE mobile globale Beleuchtung auf einzelne Objekte anwenden, ohne dass die Leistung beeinträchtigt wurde. Die automatische Instanzenerstellung ist eine grundlegende Funktion der UnrealEngine4.
Auswirkungen gemessen: Die Anzahl der Draw-Aufrufe wurde um 500 reduziert. Dadurch wurden etwa 48% der Draw-Aufrufe reduziert. Die GPU-Auslastung ging um etwa 3,5 % zurück. Diese Messungen wurden mit OpenGL durchgeführt.
Abbildung 3: Interne Daten zur Verringerung der GPU-Nutzung
Ergebnisse
Durch die Verwendung von AGI konnte NEW STATE Mobile die GPU-Auslastung um 22 % senken. Durch die Optimierung des Depth-Prepasses und des Schattenpasses konnte die GPU-Auslastung um 19% bzw. 3% gesenkt werden. Auch die Anzahl der Draw-Aufrufe und die Gesamtmenge des Arbeitsspeichers, die von der GPU aus dem Systemspeicher gelesen und geschrieben wird, wurde erheblich reduziert.
Erste Schritte
Mit dem Android GPU Inspector (AGI) können Sie die Auswirkungen Ihres Spiels auf Android-Geräten analysieren, indem Sie Leistungsprobleme und Bereiche identifizieren, die optimiert werden können.