Sessions lentes

"Sessions lentes" est une nouvelle métrique Android Vitals de la Google Play Console. Une lenteur est une session au cours de laquelle plus de 25% des images s'affichent trop lentement. Un cadre est lente si elle n'est pas présentée moins de 50 ms après l'image précédente ; (équivalent à 20 FPS). Android Vitals enregistre aussi une seconde "session lente" avec une cible de 34 ms (équivalent à 30 FPS). Avec les sessions lentes, vous peut comprendre les performances de votre jeu en termes de fréquence d'images, est fluide et fluide pour les utilisateurs.

À terme, Play évitera de proposer aux utilisateurs des jeux qui ne peuvent pas à 20 FPS sur leurs téléphones. Notez qu'Android Vitals ne peut surveiller de fréquence d'images après que votre jeu s'est exécuté pendant une minute.

Consultez notre Centre d'aide pour en savoir plus sur la métrique.

Graphiques semblables à un graphique à secteurs qui indiquent le nombre d'images affichées trop lentement ou pas trop lentement.
Figure 1. Session lente dans Android Vitals

Mesurer le FPS et détecter les images lentes

La commande Android dumpsys surfaceflinger timestats indique le FPS moyen et Histogramme temporel de présent à présent pour toutes les couches en cours rendu. Le délai présent à présent d'une image correspond à l'intervalle entre l'image actuelle et l'image précédente étant dessinée. Voici étape par étape pour utiliser la commande permettant de collecter les FPS de votre jeu:

  1. Exécutez la commande avec les options enable et clear pour commencer la capture. informations:

    adb shell dumpsys SurfaceFlinger --timestats -clear -enable
    
  2. Lorsque vous jouez suffisamment longtemps, exécutez à nouveau la commande avec L'option dump pour vider les informations:

    adb shell dumpsys SurfaceFlinger --timestats -dump
    

    Les informations vidées indiquent le nombre total de frames et l'histogramme "presentToPresent" pour tous les calques affichés par SurfaceFlinger. Vous devez trouver la section de votre jeu en filtrant en fonction de layerName:

    layerName = SurfaceView[com.google.test/com.devrel.MainActivity]@0(BLAST)#132833
    

    La fréquence d'images lente de la session a pu être calculée à partir des informations de : chaque couche.

    Par exemple, le pourcentage d'images affichées trop lentement est de 20 FPS = (somme des valeurs de 54 ms à 1 000 ms) / totalFrames x 100

    totalFrames = 274
    ...
    presentToPresent histogram is as below:
    0ms=0 1ms=0 2ms=0 3ms=0 4ms=0 5ms=0 6ms=0 7ms=0 8ms=0 9ms=0 10ms=0 11ms=0 12ms=0
    13ms=0 14ms=0 15ms=0 16ms=1 17ms=0 18ms=0 19ms=0 20ms=0 21ms=0 22ms=0 23ms=0
    24ms=0 25ms=0 26ms=0 27ms=0 28ms=0 29ms=0 30ms=0 31ms=0 32ms=0 33ms=269 34ms=0
    36ms=0 38ms=0 40ms=0 42ms=0 44ms=0 46ms=0 48ms=0 50ms=1 54ms=0 58ms=0 62ms=0
    66ms=0 70ms=1 74ms=0 78ms=0 82ms=0 86ms=0 90ms=0 94ms=0 98ms=0 102ms=0 106ms=0
    110ms=0 114ms=0 118ms=0 122ms=0 126ms=0 130ms=0 134ms=0 138ms=0 142ms=0 146ms=0
    150ms=0 200ms=0 250ms=0 300ms=0 350ms=0 400ms=0 450ms=0 500ms=0 550ms=0 600ms=0
    650ms=0 700ms=0 750ms=0 800ms=0 850ms=0 900ms=0 950ms=0 1000ms=0
    

    Le fichier de vidage indique également le FPS moyen de chaque couche:

    ...
    averageFPS = 30.179
    ...
    
  3. Une fois toutes les informations recueillies, vous devez désactiver timestats à l'aide de l'option disable:

    adb shell dumpsys SurfaceFlinger --timestats -disable
    

Causes et solutions de lenteur d'affichage

Il existe de nombreuses raisons pour lesquelles une image peut apparaître ou s'afficher plus longtemps à l'écran. que la cible du développeur. Le jeu peut être lié au processeur/GPU. Ou l'appareil surchauffe et active un état thermique de limitation. Ou la fréquence d'images du jeu ne correspond pas à celle de l'écran de l'appareil. la fréquence d'actualisation des données.

Utilisez Android Frame Pacing (Swappy). Vulkan et ADPF pour résoudre ces problèmes et améliorer les performances de votre jeu.

Qu'est-ce que Swappy ?

La bibliothèque Android Frame Pacing, également appelée Swappy, fait partie du Bibliothèques AGDK. Swappy aide les jeux OpenGL et Vulkan obtenir un rendu fluide et un frame pacing correct sur Android.

Le frame pacing est la synchronisation de la logique et de la boucle de rendu d'un jeu avec le sous-système d'affichage d'un système d'exploitation et le matériel d'affichage sous-jacent. Android le sous-système d'affichage a été conçu pour éviter les artefacts visuels (ou "déchirures") Cela peut se produire lorsque le matériel d'affichage passe à un nouveau cadre en cours de route une mise à jour. Pour éviter ces artefacts, le sous-système d'affichage les éléments suivants:

  • Met en mémoire tampon les images précédentes
  • Détecte les envois d'images tardifs
  • Réaffiche des images passées en cas d'images tardives détectées

Utiliser Swappy dans les projets natifs

Consultez les guides suivants pour intégrer la bibliothèque Android Frame Pacing. dans votre jeu:

Utiliser Swappy dans le moteur de jeu Unity

Unity a intégré Android Frame Pacing à son moteur. Pour activer cette fonctionnalité fonctionnalité dans Unity 2019.2 ou supérieure, cochez la case "Optimized Frame Pacing" (Frame pacing optimisé) sous Project Settings > Lecteur > Paramètres pour Android > Résolution et présentation:

Boîte de dialogue "Project settings" (Paramètres du projet)
Figure 2. Activez le frame pacing dans Unity Engine.

Vous pouvez également activer de manière automatisée l'option "Optimized Frame Pacing" dans votre code logique pour permettre à Unity de répartir les images pour réduire les variations de fréquence d'images et créer un gameplay plus fluide.

Utiliser Swappy dans le moteur de jeu Unreal

Unreal 4.25 et les versions ultérieures intègrent la bibliothèque Android Frame Pacing, qui fait partie du Android Game Development Kit. L'article Mobile Frame Pacing explique comment activer le frame de Bibliothèque Frame Pacing et comment contrôler le frame pacing à partir du code C++

Qu'est-ce que Vulkan ?

Vulkan est une API multiplate-forme moderne pour les graphismes 3D conçue pour minimiser l'abstraction entre le matériel graphique de l'appareil et votre jeu. Vulkan est la principale API graphique de bas niveau sur Android. Elle remplace OpenGL ES. OpenGL ES est toujours compatible avec Android, mais ses fonctionnalités ne sont plus en cours de développement.

Vulkan offre les avantages suivants par rapport à OpenGL ES :

  • Architecture plus efficace avec une surcharge du processeur réduite dans le pilote graphique
  • Nouvelles stratégies d'optimisation pour améliorer les performances du processeur
  • De nouvelles fonctionnalités graphiques ne sont pas disponibles dans OpenGL ES, telles que les API sans liaison et traçage de rayon

Utiliser Vulkan dans des projets Android natifs

L'atelier de programmation Premiers pas avec Vulkan sur Android vous guide tout au long de la configuration votre pipeline de rendu Vulkan, puis rendre un triangle texturé et rotatif à l'écran. Suivez cet atelier de programmation pour apprendre à afficher les graphismes de votre jeu.

Utiliser Vulkan dans le moteur de jeu Unity

Pour activer la sélection automatique des appareils sur Unity, suivez la procédure de configuration API Auto Graphics :

Boîte de dialogue "Project settings" (Paramètres du projet)
Figure 3. Activer l'API Unity Auto Graphics.

Vous pouvez également activer Vulkan manuellement en désactivant l'API Auto Graphics. et attribuer la priorité la plus élevée à Vulkan dans la liste des API graphiques. Si vous utilisez avec Unity 2021.1 ou une version antérieure, c'est la seule façon d'utiliser Vulkan.

Boîte de dialogue "Project settings" (Paramètres du projet)
Figure 4. Choisissez manuellement Vulkan comme API graphique principale dans Unity.

utiliser le plug-in de moteur Unity VkQuality ; pour fournir des recommandations de lancement de l'API graphique que votre jeu peut utiliser sur des appareils spécifiques.

Utiliser Vulkan dans le moteur de jeu Unreal

Pour activer l'API graphique Vulkan, accédez à Paramètres du projet > Plates-formes > Android > Compiler, puis sélectionnez Prendre en charge Vulkan. Si vous sélectionnez Assistance Vulkan et compatible avec OpenGL ES3.2 : Unreal utilise Vulkan par défaut. Si l'appareil n'est pas compatible avec Vulkan, Unreal revient à OpenGL ES 3.2.

Boîte de dialogue "Project settings" (Paramètres du projet)
Figure 5 : Activez Vulkan dans Unreal Engine.

Si vous utilisez des fonctionnalités Vulkan spécifiques connues pour leur comportement insatisfaisant certains appareils, vous pouvez personnaliser votre fichier BaseDeviceProfile.ini pour exclure ces appareils. Consultez la page Personnalisation des profils d'appareils et de l'évolutivité. pour Android pour découvrir comment personnaliser BaseDeviceProfile.ini. Comme les nouveaux pilotes de périphériques pourraient résoudre précédemment les appareils malveillants connus, mettez régulièrement à jour le fichier BaseDeviceProfile.ini les optimisations.

Qu'est-ce que l'ADPF ?

Android Dynamic Performance Framework (ADPF) optimise les jeux en fonction des fonctionnalités dynamiques de gestion thermique, de gestion du processeur et du GPU sur Android. L'accent est mis sur les jeux, mais vous pouvez aussi utiliser les fonctionnalités les applications gourmandes en performances.

ADPF est un ensemble d'API permettant aux jeux et aux applications haute performance d'interagir plus directement avec les systèmes d'alimentation et thermiques des appareils Android. Avec ces API, vous pouvez surveiller le comportement dynamique sur les systèmes Android et optimiser les performances des jeux à un niveau durable, sans surchauffer les appareils.

Voici les principales fonctionnalités d'ADPF :

  • API thermique: surveillez l'état thermique d'un appareil afin que l'application puisse ajuster la charge de travail de manière proactive avant qu'elle ne devienne instable.
  • API CPU Performance Hint: fournissent des indices de performances permettant à Android de choisir les paramètres de performances appropriés (par exemple, le cœur ou le point d'exploitation du processeur) en fonction de la charge de travail.
  • API Game Mode et API Game State: activez l'optimisation du jeu en donnant la priorité aux caractéristiques de performances ou d'autonomie de la batterie, en fonction des paramètres de l'utilisateur et des configurations spécifiques au jeu.
  • Mode performances fixes: activez le mode performances fixes sur un appareil lors de l'analyse comparative pour obtenir des mesures qui ne sont pas modifiées par l'horloge dynamique du processeur.
  • Mode économie d'énergie: indique à la session que les threads de la session Performance Hint peuvent être programmés en toute sécurité pour privilégier l'efficacité énergétique plutôt que les performances. Disponible sur Android 15 (niveau d'API 35).

Utiliser ADPF dans les projets Android natifs

L'atelier de programmation Intégrer des fonctionnalités d'adaptabilité dans votre jeu natif vous guide pour intégrer les fonctionnalités ADPF à vos jeu en proposant des étapes que vous pouvez suivre à votre rythme. À la fin de vous avez intégré les fonctionnalités suivantes:

  • API thermique: écoutez l'état thermique de l'appareil et réagissez avant qu'il ne passe en état de limitation thermique.
  • API Game Mode: identifiez les préférences d'optimisation des joueurs (maximiser les performances ou économiser la batterie) et effectuez les ajustements nécessaires.
  • API Game State: indiquez au système l'état de votre jeu (chargement, jeu, interface utilisateur, etc.). Il pourra ainsi ajuster les ressources en conséquence (booster les E/S, le processeur, le GPU, etc.).
  • API Performance Hint: indiquez au système votre modèle de thread et votre charge de travail pour qu'il puisse allouer les ressources en conséquence.

Utiliser ADPF dans le moteur de jeu Unity

La fonctionnalité Performances adaptatives d'Unity est un pour les développeurs qui souhaitent optimiser leurs jeux sur mobile, en particulier pour l'écosystème varié d'Android. Adaptive Performance permet votre jeu pour s'adapter aux performances et aux caractéristiques thermiques de l'appareil en temps réel, pour une expérience de jeu fluide et efficace.

Fournisseur Android Adaptive Performance vous guide à travers les étapes d'implémentation d'ADPF dans Unity.

Boîte de dialogue "Project settings" (Paramètres du projet)
Figure 6 : Intégrez ADPF à Unity Engine.

Utiliser ADPF dans le moteur de jeu Unreal

<ph type="x-smartling-placeholder">
</ph> Boîte de dialogue &quot;Project settings&quot; (Paramètres du projet)
Figure 7. Intégrez ADPF à Unreal Engine.
  1. Télécharger le plug-in
  2. Copiez le plug-in dans le dossier du plug-in du projet.
  3. Activer le plug-in ADPF Unreal Engine dans l'éditeur Unreal
  4. Relancer l'éditeur Unreal
  5. Développer et cuisiner le jeu

Plug-in Android Dynamic Performance Framework(ADPF) pour Unreal Engine fournit des performances stables et empêche la limitation thermique. Télécharger le plug-in depuis GitHub. Ce plug-in modifie les fonctionnalités en paramétrant Unreal Console values (Valeurs de console irréelles).