In Android 15 ist standardmäßig eine Aktualisierungsrate von 60 Hz für Spiele festgelegt, um den Stromverbrauch zu optimieren. Wenn Sie höhere Frameraten wie 120 fps verwenden möchten, müssen Sie diese jetzt explizit über die Frame Rate API oder die Swappy Bibliothek anfordern.
Das System kann diese Anfrage jedoch aufgrund von Faktoren wie dem Akkustand oder der Gerätetemperatur überschreiben. Höhere Aktualisierungsraten verbessern zwar die visuelle Glätte, erfordern aber auch mehr Strom und erzeugen zusätzliche Wärme. Daher ist es wichtig, Nutzern die Möglichkeit zu geben, ihre bevorzugte Aktualisierungsrate auszuwählen, und die Leistung sorgfältig zu überwachen, um eine ausgewogene Nutzererfahrung zu gewährleisten.
Die setFrameRate() API verwenden
Mit der setFrameRate() API können Spieleentwickler eine bestimmte Aktualisierungsrate für das Display
verwenden. Dazu sind zwei Schritte erforderlich:
- Überprüfen Sie die Kompatibilität des Geräts und der Android-Version.
- Fordern Sie hohe fps mit
setFrameRate()an.
Kompatibilität des Geräts und der Android-Version überprüfen:
Verwenden Sie die Methoden Display.getSupportedModes(), um zu ermitteln, ob das Gerät
90 Hz, 120 Hz oder andere Aktualisierungsraten 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 Ihre Rendering-Schleife beginnt, während der Initialisierung des Spielfensters
oder wenn die Ziel-fps die Aktualisierungsrate des Displays ändern müssen.
Auch wenn Sie eine höhere Rate anfordern, kann das System die Aktualisierungsrate aufgrund von Faktoren wie dem Energiesparmodus oder der thermischen Drosselung auf 60 Hz begrenzen. Wenn die Rendering-Leistung Ihres Spiels die Ziel-fps nicht erreicht, kann das Anfordern einer höheren Aktualisierungsrate zu unnötigem Stromverbrauch und einer höheren Gerätetemperatur führen.
Das folgende Snippet zeigt, wie Sie mit der setFrameRate() API eine zu hohe Aktualisierungsrate vermeiden.
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 Framerate finden Sie weitere Informationen.
Frame-Pacing-Bibliothek verwenden
Die Frame-Pacing-Bibliothek (Swappy) ist eine Open-Source-Bibliothek, mit der die
VSync-Verwaltung und die Frame-Planung in C/C++-Android-Spiele-
Engines vereinfacht werden.
Dieses Tool optimiert den Prozess der Aktualisierungsraten und fungiert effektiv
als Abstraktionsebene höherer Ebene für Funktionen wie
setFrameRate(). Darüber hinaus bietet Swappy zusätzliche Funktionen, mit denen Sie die allgemeine Glätte und Leistung Ihres Spiels verbessern können.
Weitere Informationen finden Sie auf der Swappy-Seite.
Zusätzliche Tipps für die besten Ergebnisse
Im folgenden Abschnitt finden Sie einige wichtige Tipps:
- Dynamische Framerate-Umschaltung
- Leistungsmonitoring
- fps-Optionen basierend auf der maximalen Aktualisierungsrate des Displays bereitstellen
Dynamische Framerate-Umschaltung
Um sowohl die Leistung als auch den Stromverbrauch zu optimieren, sollten Sie in Ihrem Spiel die dynamische Framerate-Umschaltung implementieren. Mit dieser Technik können Sie nahtlos zwischen höheren Aktualisierungsraten wie 120 Hz für ein flüssigeres Gameplay in anspruchsvollen Szenen und niedrigeren Raten wie 60 Hz in weniger intensiven Momenten oder wenn die Akkulaufzeit ein Problem darstellt oder weniger als 60 fps angestrebt werden, wechseln. Wenn das Spiel ständig mit 120 Hz ausgeführt wird, kann dies zu übermäßiger Wärmeentwicklung und schneller Akkuentladung führen, was sich negativ auf die Nutzererfahrung auswirken kann. Durch die intelligente Anpassung der Aktualisierungsrate basierend auf der aktuellen Rendering-Last und den Gerätebedingungen können Sie ein Gleichgewicht zwischen visueller Qualität und Energieeffizienz erzielen.
Leistungsmonitoring
Um sicherzustellen, dass Ihr Spiel bei höheren Aktualisierungsraten optimal funktioniert, sollten Sie Tools zur Leistungsüberwachung wie einen Frame-Zähler oder eine Leistungsüberlagerung einbinden. Diese Tools liefern Echtzeit-Feedback zur tatsächlichen Framerate Ihres Spiels, sodass Sie überprüfen können, ob Sie die Ziel-fps von 120 durchgängig erreichen.
Wenn die Framerate erheblich schwankt, sollten Sie eine niedrigere erreichbare Framerate auf dem jeweiligen Gerät anstreben. So können Sie eine flüssigere Nutzererfahrung erzielen, ohne die Leistungseinbrüche, die auftreten können, wenn Sie die höchste Aktualisierungsrate anstreben.
fps-Optionen basierend auf der maximalen Aktualisierungsrate des Displays bereitstellen
Ihr Spiel sollte die maximale Aktualisierungsrate des Displays 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, ist es ratsam, alle Optionen über 60 fps in den Spieleinstellungen zu deaktivieren, um den Spieler nicht zu verwirren.