Optimiser les fréquences d'actualisation

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éverrouiller 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 les fréquences d'actualisation plus élevées améliorent la fluidité visuelle, elles nécessitent également plus d'énergie et génèrent de la chaleur supplémentaire. Il est donc 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'API setFrameRate()

L'API setFrameRate() permet aux développeurs de jeux d'utiliser une fréquence d'actualisation d'affichage spécifique. Pour ce faire, procédez comme suit:

  1. Vérifiez la compatibilité de l'appareil et de la version d'Android.
  2. Demandez un nombre élevé d'images par seconde à l'aide de setFrameRate().

Vérifiez 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 les fréquences d'actualisation de 90 Hz, 120 Hz ou d'autres fréquences. Si l'appareil est limité à 60 Hz, il est impossible 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 des FPS élevés

Appelez setFrameRate() au début de votre boucle de rendu, 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 l'étranglement thermique. Si les performances de rendu de votre jeu n'atteignent pas le FPS cible, demander un taux de rafraîchissement plus élevé peut entraîner une consommation d'énergie inutile et augmenter la température de l'appareil.

L'extrait de code suivant montre comment éviter un taux de rafraîchissement trop élevé 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 sur la fréquence d'images.

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, agissant efficacement 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:

  1. Changement de fréquence d'images dynamique
  2. Surveillance des performances
  3. Fournissez des options de FPS en fonction de la fréquence d'actualisation maximale de l'écran.

Changement dynamique de la fréquence d'images

Pour optimiser à la fois les performances et la consommation d'énergie, envisagez d'implémenter un changement 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, à des fréquences plus basses, comme 60 Hz, lors de moments moins intenses, ou lorsque l'autonomie de la batterie est un problème ou que vous ciblez moins de 60 FPS. Un fonctionnement constant à 120 Hz 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 d'images ou un affichage superposé des 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 systématiquement les 120 FPS cibles.

Si votre fréquence d'images fluctue de manière significative, envisagez de cibler une fréquence d'images plus faible sur l'appareil donné. Cela peut offrir une expérience plus fluide, sans les à-coups de performances qui peuvent se produire lorsque vous essayez d'obtenir le taux de rafraîchissement le plus élevé.

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 perturber le joueur.