Erste Schritte mit dem Android Dynamic Performance Framework (ADPF) in der Unreal Engine

Das Android Dynamic Performance Framework (ADPF) ist ein leistungsstarkes Tool von Google für Entwickler, die die Leistung ihrer Apps optimieren möchten. Über seine thermischen APIs bietet ADPF Echtzeitinformationen zum thermischen Zustand des Geräts, die dann zur Anpassung der Grafikeinstellungen in der Anwendung verwendet werden.

Zu Forschungszwecken hat Arm eine Demo mit der Unreal Engine und ADPF entwickelt, um zu untersuchen, wie ADPF zur Optimierung der Spieleleistung verwendet wird.

ADPF überwacht den thermischen Status und passt die Grafikqualität in der Game Engine entsprechend an.

Das Ziel besteht darin, dass Nutzer das Spiel länger spielen können, ohne dass das Gameplay beeinträchtigt wird und das Gerät zu viel Strom verbraucht.

Hinweis

Bevor wir uns die Demo genauer ansehen, sollten wir die offizielle Google-Dokumentation zu ADPF hervorheben. Diese Dokumentation ist eine unschätzbare Ressource, die detaillierte Informationen und Anleitungen zur Verwendung von ADPF enthält.

Wenn Sie jedoch lieber ein anpassbares Lernprogramm verwenden möchten, enthält das ADPF-Beispiel-Repository praktische Beispiele für die Implementierung von ADPF in Android-Anwendungen.

Anpassung der Grafikeinstellungen

In der Unreal Engine können wir die Grafikeinstellungen dynamisch anpassen, um die Leistung aufrechtzuerhalten.

Wir haben den Thermal State Monitor und die Thermal Headroom API in ADPF verwendet, um die thermische Drosselung zu überwachen. Wenn das Gerät die Leistung drosselt, können Sie die Qualitätseinstellungen wie Schattenqualität, Reflexionsqualität und Texturqualität anpassen.

Mit den folgenden Einstellungen für die Grafikqualität in der Unreal Engine können verschiedene Einstellungen geändert werden:

  • ViewDistanceQuality
  • ShadowQuality
  • GlobalIlluminationQuality
  • ReflectionQuality
  • AntiAliasingQuality
  • TextureQuality
  • VisualEffectQuality
  • PostProcessingQuality
  • FoliageQuality
  • ShadingQuality
  • OverallScalabilityLevel

Tests unter realen Bedingungen

Arm entwickelt eigene Demospiele, die für die Forschung an mobilen Grafik- und Spieletechnologien verwendet werden. In diesem Jahr haben wir ADPF in einer dieser Demos, der SteelArms-Demo, getestet.

SteelArms hat unterschiedliche Grafikintensitäten und eine erhebliche CPU-Arbeitslast. Es ist so konzipiert, dass es modernen mobilen Spielen ähnelt, damit wir das Spielverhalten auf modernen Smartphones simulieren können. Außerdem können wir damit testen, wie verschiedene Technologien in einem Spiel auf Arm-basierten Mobilgeräten funktionieren.

Ergebnisse

Abbildung 1: SteelArms-Vollbildvergleich mit und ohne ADPF

Die vorherigen Bilder zeigen den Unterschied zwischen der besten (Kino) und der niedrigsten (Niedrig) Qualität, wenn ADPF aktiviert ist, um die Grafikeinstellungen anzupassen. Diese Änderung erfolgt schrittweise und ist für Nutzer während des Spiels nicht wahrnehmbar.

Abbildung 2:Spiel mit ADPF-Integration: Splitscreen

Ein Splitscreen mit den höchsten Grafikeinstellungen links (blauer Roboter) und den niedrigsten Grafikeinstellungen rechts (roter Roboter).

Abbildung 3: Spiel mit ADPF-Integration: Vergleich der Details
Abbildung 4:Spiel mit ADPF-Integration: Vergleich

In den vorherigen Abbildungen 3 und 4 ist dieselbe Ansicht des Roboters nebeneinander zu sehen. Bei genauerem Hinsehen sind die Grafikeinstellungen zu sehen, die mit ADPF angepasst wurden. Sehen Sie sich den Boden des Rings, die Schulter des Roboters, die Seile des Rings und die Menge an. Alle haben eine etwas geringere Qualität, was durch die Verwendung von ADPF zustande kam.

Wenn eine Drosselung bevorstand, wurden diese Effekte in der SteelArms-Demo reduziert. Diese kleinen Reduktionen bei der Nachbearbeitung und bei visuellen Effekten sind kaum zu erkennen. Außerdem fallen sie Nutzern beim Spielen in der Regel nicht auf. So können Sie den Großteil des visuellen Erscheinungsbildes des Spiels beibehalten, ohne das Gameplay zu beeinträchtigen. Dabei bleibt die Leistung des Spiels und die Akkulaufzeit des Geräts gleich.

Wie bereits erwähnt, vergleichen wir zu Demonstrationszwecken die Bilder mit den höchsten und niedrigsten Qualitätseinstellungen. Deshalb ist der Unterschied bei genauer Betrachtung immer noch zu erkennen. Wenn sie jedoch während des Spiels herunterskaliert wird, ist sie für den Nutzer kaum wahrnehmbar, während das Gameplay stabil bleibt.

Ergebnisse

Abbildung 5: Vergleich von FPS, Gerätetemperatur, thermischem Zustand und Headroom bei aktivierter/deaktivierter ADPF (ca. 57% Verbesserung der Framerate)

Das Gerät vermeidet eine Überhitzung und hält sich innerhalb des thermischen Spielraums von 1,0.

Energieverbrauch

Abbildung 6: Vergleich des Stromverbrauchs mit aktivierter/deaktivierter dynamischer Auslagerungssteuerung

ADPF-Ergebnisse

Die Ergebnisse der Deaktivierung und Aktivierung von ADPF sind in den vorherigen Abbildungen zu sehen. Es wird gezeigt, dass es einen Unterschied zwischen der Framerate des Spiels und dem Energieverbrauch der Kerne gibt. Wenn ADPF aktiviert ist, kann die Framerate um bis zu 57% gesteigert werden. Wenn ADPF deaktiviert ist, verbraucht die GPU viel Strom. Der große CPU-Kern hat dann Leistungsspitzen, die der GPU-Arbeitslast entsprechen. Erholt sich von der Verarbeitungsmenge, die er bewältigen muss. Im Vergleich dazu reagiert der große CPU-Kern bei aktivierter ADPF auf das Drosseln und senkt die Gesamtstromaufnahme aller Kerne im Gerät.

Fazit

ADPF kann den Stromverbrauch von Spielen erheblich senken. Das bedeutet letztendlich eine längere Spielzeit für Gamer, eine verbesserte Akkulaufzeit und eine niedrigere Temperatur des verwendeten Geräts. Aus Sicht der Entwickler sorgt ADPF für die richtige Framerate des Spiels. Gleichzeitig haben sie die Flexibilität, die Qualitätseinstellungen zu reduzieren und den Nutzern trotzdem ein hervorragendes Spielerlebnis zu bieten.

Sowohl neue als auch ältere Geräte können von der Verwendung von ADPF profitieren. So können Spiele auf älteren Gerätegenerationen ohne zusätzliche Optimierungen flüssig laufen.