Spielmodus-Interventionen sind spielspezifische Optimierungen, die von Erstausrüstern (Original Equipment Manufacturers, OEMs) festgelegt werden, um die Leistung von Spielen zu verbessern, die nicht mehr vom Entwickler aktualisiert werden. Beispiel:
- WindowManager-Backbuffer-Größenänderung verwenden
- ANGLE anstelle von nativen GLES-Treibern verwenden
Sie können die Game Mode API von Ihrem Spiel unterstützen und verwalten, damit sie vom OEM bereitgestellte Game Mode-Interventionen überschreibt.
Die Game Mode API und die Eingriffe sind auf folgenden Geräten verfügbar:
- Geräte mit Android 12
- Geräte mit Android 13 oder höher
Für jedes Spiel gilt:
- Implementieren Sie das Verhalten der Game Mode API,
- OEMs Einstellungen für Spielmodus-Interventionen vorschlagen oder
- Sie können die Eingriffe des Spielmodus ausdrücklich deaktivieren.
Hintergrund
In diesem Abschnitt wird beschrieben, wie sich die Eingriffe im Spielmodus auswirken und wie Sie Ihr Spiel für jeden Modus optimieren.
WindowManager-Backbuffer-Größenänderung
Durch die Änderung der Größe des Backbuffers durch den WindowManager kann die GPU-Auslastung eines Geräts reduziert werden. Außerdem kann der Akkuverbrauch reduziert werden, wenn ein Spiel mit einer Ziel-Framerate ausgeführt wird.
Wenn Sie die Größenänderung aktivieren, kann der GPU-Energieverbrauch um bis zu 30% und der Gesamtenergieverbrauch des Systems um 10% gesenkt werden. Die Ergebnisse können je nach verwendetem Gerät, Umgebungsbedingungen und anderen Faktoren wie der gleichzeitigen Verarbeitung variieren.
Bei einem nicht getakteten Spiel, das GPU-gebunden ist, sind bei geringerer GPU-Auslastung wahrscheinlich höhere Frameraten möglich.
Wir empfehlen dringend, dass alle Spiele gut flüssig laufen, da ungleichmäßige Frameraten sich erheblich auf die Wahrnehmung der Leistung durch die Nutzer auswirken.
FPS-Drosselung
Die FPS-Drosselung von Android ist eine Maßnahme im Game Mode, die dazu beiträgt, dass Spiele mit einer stabileren Framerate laufen, um den Akkuverbrauch zu senken. Die Intervention ist ab Android 13 verfügbar. Weitere Informationen finden Sie in der Übersicht zur FPS-Drosselung.
Maßnahmen für den Spielmodus bewerten
In diesem Abschnitt wird der Befehl adb verwendet.
Modi einrichten
Sie müssen die Spielmodi in der Konfigurationsdatei für den Spielmodus der App deaktivieren, bevor Sie die Interventionen für den Spielmodus testen können. Andernfalls werden sie von der Plattform ignoriert und es werden nur In-Game-Optimierungen berücksichtigt.
<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
xmlns:android="http://schemas.android.com/apk/res/android"
android:supportsBatteryGameMode="false"
android:supportsPerformanceGameMode="false"
/>
(Optional) Vorhandene Gerätekonfiguration sichern
Auf Pixel oder anderen Geräten ist möglicherweise bereits eine Konfiguration für die Spieleingriffsfunktion in der Gerätekonfiguration vorhanden. Sie können die Konfiguration mit dem Befehl abfragen:
adb shell device_config get game_overlay <PACKAGE_NAME>
Wenn die Abfrage null
zurückgibt, ignorieren Sie die vorhandene Konfiguration. Andernfalls speichern Sie ihn und setzen ihn nach der Bewertung wieder zurück.
Interventionen bewerten
Wenn Sie die Intervention zur Größe des WindowManager-Backbuffers separat bewerten möchten, verwenden Sie den folgenden Befehl, um für die verschiedenen Spielmodi unterschiedliche Werte für die Größe des WindowManager-Buffers festzulegen.
adb shell device_config put game_overlay <PACKAGE_NAME>
mode=2,downscaleFactor=0.9:mode=3,downscaleFactor=0.5
Im Beispiel oben ist mode=2
„Leistung“ und mode=3
„Energiesparmodus“. Der Wert downscaleFactor
wird als Prozentsatz angegeben, der auf die Einstellung für die Größenerstellung angewendet wird (z.B.0,7 für 70% und 0,8 für 80%). Eine Größenänderung von 90 % (0,9) ist fast vernachlässigbar, während 50% (0,5) erheblich sind.
Warnung:Untergeordnete Prozesse werden unter Android 12 möglicherweise nicht richtig skaliert. Achten Sie insbesondere darauf, dass Toasts und Pop-ups korrekt gerendert werden. Wir empfehlen, die Einstellung für die Größe auf mindestens 70 % zu begrenzen.
Nachdem Sie die neuen Werte für die Größe festgelegt haben, wechseln Sie zwischen den Spielmodi, um zu sehen, wie sich die Änderung der Größe des WindowManager-Backbuffers auf Ihr Spiel auswirkt:
adb shell cmd game mode [standard|performance|battery] <PACKAGE_NAME>
Starte das Spiel nach jeder Auswahl des Spielmodus neu. Für die Downscaling-Intervention ist ein App-Neustart erforderlich.
Interventionen deaktivieren
Sie können festlegen, ob eine Intervention auf Ihr Spiel angewendet wird. Für jede Intervention gibt es eine eigene Deaktivierungseinstellung.
- Die gleiche Konfigurations-XML-Datei, die zum Aktivieren und Deaktivieren von Spielmodi verwendet wird, wird auch für die Einstellungen für Interventionen verwendet:
<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
xmlns:android="http://schemas.android.com/apk/res/android"
android:allowGameDownscaling="false"
android:allowGameFpsOverride="false"
/>
- Erstellen Sie Ihr Spiel neu und reichen Sie es noch einmal ein, um die Funktion zu deaktivieren.
Standardmäßig werden von den Erstausrüstern (OEMs) festgelegte Interventionen verwendet, sofern Sie die Verwendung nicht explizit deaktivieren.
Ressourcen
Weitere Informationen zum Messen und Optimieren der Spielleistung:
Systemprofiler: Analysieren die CPU-Auslastung und Grafikaufrufe.
Android GPU-Prüfer: Profiliert Grafiken auf Android-Geräten.
Android Frame Pacing Library: Hilft OpenGL- und Vulkan-Spielen, ein flüssiges Rendering und eine korrekte Frame-Taktung zu erreichen.
Android Performance Tuner: Mit dieser Funktion können Sie die Framerate und Grafik auf Android-Geräten messen und optimieren.
Energy Profiler: Hier sehen Sie, wo Ihre App mehr Energie als nötig verbraucht.