Android 15 définit une fréquence d'actualisation par défaut de 60 Hz pour les jeux afin d'optimiser la consommation d'énergie. Pour débloquer des fréquences d'images plus élevées, comme 120 FPS, vous devez désormais les demander explicitement à l'aide de l'API Frame Rate ou de la bibliothèque Swappy.
Toutefois, le système peut remplacer cette requête en fonction de facteurs tels que le niveau de la batterie ou la température de l'appareil. Bien que des fréquences d'actualisation plus élevées améliorent la fluidité visuelle, elles nécessitent également plus de puissance et génèrent plus de chaleur. Par conséquent, il est essentiel de permettre aux utilisateurs de choisir leur fréquence d'actualisation préférée et de surveiller attentivement les performances pour garantir une expérience utilisateur équilibrée.
Utiliser l'setFrameRate() API
L'API setFrameRate() permet aux développeurs de jeux d'utiliser une fréquence d'actualisation d'écran
spécifique. Pour ce faire, vous devez suivre deux étapes :
- Vérifiez la compatibilité de l'appareil et de la version d'Android.
- Demandez un FPS élevé à l'aide de
setFrameRate().
Vérifier la compatibilité de l'appareil et de la version d'Android :
Utilisez les méthodes Display.getSupportedModes() pour déterminer si l'appareil
est compatible avec 90 Hz, 120 Hz ou d'autres fréquences d'actualisation. Si l'appareil est limité à 60 Hz, il n'est pas possible de dépasser cette limite.
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")
}
Demander un FPS élevé
Appelez setFrameRate() lorsque votre boucle de rendu démarre, lors de l'initialisation de la fenêtre de jeu
ou lorsque le FPS cible doit modifier la fréquence d'actualisation de l'écran.
Même si vous demandez une fréquence plus élevée, le système peut toujours limiter la fréquence d'actualisation à 60 Hz en raison de facteurs tels que le mode d'économie d'énergie ou la limitation thermique. Si les performances de rendu de votre jeu n'atteignent pas le FPS cible, demander une fréquence d'actualisation plus élevée peut entraîner une consommation d'énergie inutile et augmenter la température de l'appareil.
L'extrait suivant montre comment éviter une fréquence d'actualisation trop élevée avec l'API setFrameRate().
Kotlin
val targetFps = 120f
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.setFrameRate(
targetFps,
Window.FrameRateCompatibility.FRAME_RATE_COMPATIBILITY_FIXED_SOURCE,
0
)
}
Pour en savoir plus, consultez la page Framerate.
Utiliser la bibliothèque Frame Pacing
La bibliothèque Frame Pacing, ou Swappy, est une bibliothèque Open Source conçue pour
simplifier la gestion de la synchronisation verticale et la planification des frames dans les moteurs de jeu Android C/C++.
Cet outil simplifie le processus d'optimisation des fréquences d'actualisation, en agissant comme une couche d'abstraction de niveau supérieur sur des fonctionnalités telles que
setFrameRate(). De plus, Swappy fournit des fonctionnalités supplémentaires qui peuvent améliorer la fluidité et les performances globales de votre jeu.
Pour en savoir plus, consultez la page Swappy.
Conseils supplémentaires pour obtenir de meilleurs résultats
La section suivante présente plusieurs conseils importants :
- Commutation dynamique de la fréquence d'images.
- Surveillance des performances.
- Fournir des options de FPS en fonction de la fréquence d'actualisation maximale de l'écran.
Commutation dynamique de la fréquence d'images
Pour optimiser les performances et la consommation d'énergie, envisagez d'implémenter la commutation dynamique de la fréquence d'images dans votre jeu. Cette technique vous permet de passer facilement d'une fréquence d'actualisation plus élevée, comme 120 Hz, pour un gameplay plus fluide lors de scènes exigeantes, à une fréquence plus faible, comme 60 Hz, lors de moments moins intensifs ou lorsque l'autonomie de la batterie est un problème ou que la cible est inférieure à 60 FPS. Une fréquence de 120 Hz constante peut entraîner une génération de chaleur excessive et une décharge rapide de la batterie, ce qui peut avoir un impact négatif sur l'expérience utilisateur. En ajustant intelligemment la fréquence d'actualisation en fonction de la charge de rendu actuelle et des conditions de l'appareil, vous pouvez trouver un équilibre entre la fidélité visuelle et l'efficacité énergétique.
Surveillance des performances
Pour vous assurer que votre jeu fonctionne de manière optimale à des fréquences d'actualisation plus élevées, intégrez des outils de surveillance des performances tels qu'un compteur de frames ou une superposition de performances. Ces outils fournissent des commentaires en temps réel sur la fréquence d'images réelle de votre jeu, ce qui vous permet de vérifier si vous atteignez constamment les 120 FPS cibles.
Si votre fréquence d'images fluctue de manière significative, envisagez de cibler une fréquence d'images réalisable plus faible sur l'appareil donné. Cela peut offrir une expérience plus fluide sans les problèmes de performances qui peuvent survenir lorsque vous vous efforcez d'obtenir la fréquence d'actualisation la plus élevée.
Fournir des options de FPS en fonction de la fréquence d'actualisation maximale de l'écran
Votre jeu doit détecter la fréquence d'actualisation maximale de l'écran compatible avec l'appareil actuel, par exemple 60 Hz, 90 Hz ou 120 Hz, et limiter les paramètres de FPS en conséquence. Par exemple, si l'appareil n'est compatible qu'avec 60 Hz, il est conseillé de désactiver toutes les options supérieures à 60 FPS dans les paramètres du jeu pour éviter de dérouter le joueur.