Aktualisierungsraten optimieren

In Android 15 wird für Spiele standardmäßig eine Aktualisierungsrate von 60 Hz festgelegt, um den Energieverbrauch zu optimieren. Wenn Sie höhere Frameraten wie 120 fps nutzen möchten, müssen Sie diese jetzt explizit mit der Frame Rate API oder der Swappy-Bibliothek anfordern.

Das System kann diese Anfrage jedoch aufgrund von Faktoren wie dem Akkustand oder der Gerätetemperatur überschreiben. Höhere Bildwiederholraten verbessern zwar die visuelle Flüssigkeit, erfordern aber auch mehr Strom und erzeugen zusätzliche Wärme. Daher ist es wichtig, Nutzern die Möglichkeit zu geben, die gewünschte Bildwiederholrate auszuwählen, und die Leistung sorgfältig zu überwachen, um eine ausgewogene Nutzererfahrung zu gewährleisten.

setFrameRate() API verwenden

Mit der setFrameRate() API können die Spieleentwickler eine bestimmte Bildwiederholrate verwenden. Dazu sind zwei Schritte erforderlich:

  1. Prüfen Sie die Kompatibilität von Gerät und Android-Version.
  2. Mit setFrameRate() kannst du eine hohe Framerate anfordern.

Kompatibilität von Gerät und Android-Version prüfen:

Mit den Methoden Display.getSupportedModes() kannst du feststellen, ob das Gerät 90 Hz, 120 Hz oder andere Bildwiederholraten unterstützt. Wenn das Gerät auf 60 Hz begrenzt ist, kann dieses Limit nicht überschritten werden.

Kotlin

val display = windowManager.defaultDisplay
val supportedModes = display.supportedModes
for (mode in supportedModes) {
  Log.d("DisplayInfo", "Supported mode: ${mode.physicalWidth}x${mode.physicalHeight}, ${mode.refreshRate}Hz")
}

Hohe FPS anfordern

Rufen Sie setFrameRate() auf, wenn der Rendering-Loop beginnt, während der Initialisierung des Spielfensters oder wenn die Displayaktualisierungsrate aufgrund der Ziel-FPS geändert werden muss.

Auch wenn Sie eine höhere Bildwiederholrate anfordern, kann das System die Bildwiederholrate aufgrund von Faktoren wie dem Energiesparmodus oder der thermischen Drosselung auf 60 Hz begrenzen. Wenn die Renderingleistung Ihres Spiels die Ziel-FPS nicht erreicht, kann eine höhere Bildwiederholrate zu unnötigem Stromverbrauch und einer höheren Gerätetemperatur führen.

Im folgenden Snippet wird gezeigt, wie du mit der setFrameRate() API eine zu hohe Bildwiederholrate vermeidest.

Kotlin

val targetFps = 120f
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
  window.setFrameRate(
      targetFps,
      Window.FrameRateCompatibility.FRAME_RATE_COMPATIBILITY_FIXED_SOURCE,
      0
  )
}

Auf der Seite zur Framerate finden Sie weitere Informationen.

Frame-Pacing-Bibliothek verwenden

Die Frame-Pacing-Bibliothek, auch Swappy genannt, ist eine Open-Source-Bibliothek, die die Verwaltung von VSync und die Frame-Planung in C/C++-Android-Game-Engines vereinfacht. Dieses Tool optimiert die Bildwiederholraten und dient als Abstraktionsebene für Funktionen wie setFrameRate(). Außerdem bietet Swappy zusätzliche Funktionen, mit denen sich die Gesamtflüssigkeit und Leistung Ihres Spiels verbessern lassen.

Auf der Swappy-Seite finden Sie weitere Informationen.

Weitere Tipps für die besten Ergebnisse

Im folgenden Abschnitt finden Sie einige wichtige Tipps:

  1. Dynamische Framerate-Umschaltung
  2. Leistungsüberwachung
  3. Bieten Sie FPS-Optionen basierend auf der maximalen Displayaktualisierungsrate an.

Dynamische Framerate-Umschaltung

Um sowohl die Leistung als auch den Energieverbrauch zu optimieren, sollten Sie in Ihrem Spiel eine dynamische Framerate-Umschaltung implementieren. So können Sie nahtlos zwischen höheren Bildwiederholraten wie 120 Hz für ein flüssigeres Gameplay bei anspruchsvollen Szenen und niedrigeren Raten wie 60 Hz in weniger intensiven Momenten wechseln oder die Akkulaufzeit verlängern, wenn Sie weniger als 60 fps anstreben. Ein dauerhafter Betrieb bei 120 Hz kann zu übermäßiger Wärmeentwicklung und einem schnellen Akkuverbrauch führen, was sich negativ auf die Nutzerfreundlichkeit auswirken kann. Durch die intelligente Anpassung der Bildwiederholrate an die aktuelle Rendering-Auslastung und die Gerätebedingungen können Sie ein Gleichgewicht zwischen visueller Treue und Energieeffizienz finden.

Leistungsüberwachung

Damit Ihr Spiel bei höheren Bildwiederholraten optimal funktioniert, sollten Sie Tools zur Leistungsüberwachung wie einen Frame-Counter oder ein Leistungs-Overlay einbinden. Diese Tools liefern Echtzeitfeedback zur tatsächlichen Framerate Ihres Spiels. So können Sie prüfen, ob Sie die Ziel-Framerate von 120 fps durchgehend erreichen.

Wenn die Framerate stark schwankt, solltest du eine niedrigere, auf dem jeweiligen Gerät erreichbare Framerate anstreben. So können Sie die Leistung optimieren und Leistungseinbrüche vermeiden, die bei der höchsten Bildwiederholrate auftreten können.

FPS-Optionen basierend auf der maximalen Displayaktualisierungsrate bereitstellen

Ihr Spiel sollte die maximale Displayaktualisierungsrate erkennen, die vom aktuellen Gerät unterstützt wird, z. B. 60 Hz, 90 Hz oder 120 Hz, und die FPS-Einstellungen entsprechend begrenzen. Wenn das Gerät beispielsweise nur bis zu 60 Hz unterstützt, sollten Sie in den Spieleinstellungen alle Optionen deaktivieren, die über 60 fps liegen, um Verwirrung zu vermeiden.