Les interventions Game Mode sont des optimisations spécifiques aux jeux définies par les fabricants d'équipement d'origine (OEM) pour améliorer les performances des jeux qui ne sont plus mis à jour par les développeurs. Exemple :
- Utiliser le redimensionnement du tampon d'arrière-plan WindowManager.
- Utilisation d'ANGLE au lieu des pilotes GLES natifs
Vous pouvez demander à votre jeu de prendre en charge et de gérer l'API Game Mode pour qu'il remplace les interventions Game Mode fournies par l'OEM.
L'API et les interventions Game Mode sont disponibles sur :
- Certains appareils Android 12
- Les appareils équipés d'Android 13 ou version ultérieure
Chaque jeu peut:
- Implémentez le comportement de l'API Game Mode.
- Proposer des paramètres d'intervention Game Mode aux OEM ou
- Désactivez explicitement les interventions en mode Jeu.
Arrière-plan
Cette section décrit le fonctionnement des interventions en mode Jeu et comment optimiser votre jeu pour chaque mode.
Redimensionnement du tampon d'arrière-plan WindowManager
L'intervention de redimensionnement du tampon d'arrière-plan WindowManager peut réduire la charge GPU d'un appareil. Elle permet également de réduire la consommation de la batterie lorsqu'un jeu respecte le nombre de frames par seconde cible.
L'activation du redimensionnement peut entraîner une réduction de la consommation d'énergie du GPU pouvant atteindre 30% et de la consommation d'énergie globale du système de 10 %. Les résultats peuvent varier en fonction de l'appareil utilisé, des conditions environnementales et d'autres facteurs, tels que le traitement simultané.
Un jeu sans nombre de frames par seconde défini et reposant sur le GPU est susceptible d'afficher une fréquence de frames plus élevée lors des charges de GPU réduites.
Nous vous recommandons vivement de faire en sorte que le nombre de frames par seconde soit correctement défini pour tous les jeux, car des fréquences de frames irrégulières ont un impact important sur la façon dont les utilisateurs perçoivent les performances.
Limitation du FPS
La limitation du FPS Android est une intervention du mode Jeu qui permet aux jeux de s'exécuter à une fréquence d'images plus stable afin de réduire la consommation de la batterie. L'intervention est disponible sur Android 13 ou version ultérieure. Pour en savoir plus, consultez la présentation du contrôle des FPS.
Évaluer les interventions en mode Jeu
Cette section utilise la commande adb.
Configurer les modes
Vous devez désactiver les modes Jeu dans le fichier de configuration du mode Jeu de l'application avant de tester les interventions du mode Jeu. Sinon, la plate-forme les contournera et ne respectera que les optimisations dans le jeu.
<?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"
/>
(Facultatif) Sauvegarder la configuration de l'appareil existant
Pour les Pixel ou d'autres appareils, il est possible qu'une configuration d'intervention dans les jeux préexistante soit définie dans la configuration de votre appareil. Vous pouvez interroger la configuration à l'aide de la commande suivante:
adb shell device_config get game_overlay <PACKAGE_NAME>
Si la requête renvoie null
, ignorez la configuration préexistante. Sinon, enregistrez-le et rétablissez-le après l'évaluation.
Évaluer les interventions
Pour évaluer l'intervention de redimensionnement du tampon d'arrière-plan WindowManager seule, utilisez la commande suivante pour définir différentes valeurs de redimensionnement de la mémoire tampon WindowManager dans les modes de jeu.
adb shell device_config put game_overlay <PACKAGE_NAME>
mode=2,downscaleFactor=0.9:mode=3,downscaleFactor=0.5
Dans l'exemple ci-dessus, mode=2
correspond à "Performances" et mode=3
à "Économiseur de batterie". La valeur downscaleFactor
est spécifiée en tant que pourcentage qui s'applique au paramètre de redimensionnement (par exemple, 0,7 correspond à 70% et 0,8 à 80%). Un redimensionnement de 90 % (0,9) est presque négligeable, alors qu'un redimensionnement de 50% (0,5) est considérable.
Avertissement:Il est possible que les processus enfants ne soient pas redimensionnés correctement dans Android 12. En particulier, assurez-vous que les notifications et les pop-ups s'affichent correctement. Nous vous recommandons de limiter le paramètre de redimensionnement à au moins 70%.
Une fois les nouvelles valeurs de redimensionnement configurées, passez d'un mode de jeu à un autre pour voir l'impact de l'intervention de redimensionnement du tampon d'arrière-plan WindowManager sur votre jeu:
adb shell cmd game mode [standard|performance|battery] <PACKAGE_NAME>
Veillez à redémarrer le jeu après chaque sélection de mode de jeu. L'intervention de réduction de la taille nécessite un redémarrage de l'application.
Désactiver les interventions
Vous pouvez choisir de ne pas appliquer d'intervention à votre jeu. Chaque intervention a son propre paramètre de désactivation.
- Le même fichier XML de configuration utilisé pour contrôler l'activation et la désactivation des modes de jeu est également utilisé pour les paramètres d'intervention:
<?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"
/>
- Recompilez votre jeu et renvoyez-le pour le désactiver l'intervention.
Par défaut, les interventions définies par les fabricants d'équipement d'origine (OEM) sont utilisées, sauf si vous désactivez explicitement leur utilisation pour votre jeu.
Ressources
Pour en savoir plus sur la mesure et l'optimisation des performances des jeux, consultez les liens suivants :
Profileurs système : analysez l'utilisation du processeur et les appels graphiques.
Android GPU Inspector : profilez les graphiques sur Android.
Bibliothèque Android Frame Pacing : permet aux jeux OpenGL et Vulkan d'obtenir un rendu fluide et un rythme de frames par seconde adapté.
Android Performance Tuner : mesurez et optimisez la fréquence de frames et les graphismes sur des appareils Android à grande échelle.
Profileur d'alimentation : déterminez quelles parties de votre application consomment plus d'énergie que nécessaire.