Le profilage et l'optimisation des performances sont des tâches complexes qui peuvent sembler plus relever de l'art que de la science. Les nombreux éléments mobiles qui doivent être parfaitement synchronisés dans un jeu, combinés à la complexité d'une scène donnée, peuvent rendre difficile la compréhension et l'isolement des problèmes. Sur ChromeOS, de nombreux outils sont conçus pour les chipsets ARM. Voici quelques conseils pour accélérer le processus.
Lorsque vous optimisez les performances de votre jeu sur ChromeOS, gardez à l'esprit que les problèmes de performances sous-jacents sont communs à tous les appareils. Les améliorations profiteront donc aux performances et à l'autonomie de la batterie pour tous les utilisateurs. ChromeOS, qui a tendance à utiliser des écrans plus grands et des périphériques de saisie pour ordinateur, peut simplement faire apparaître certains problèmes plus facilement. Par exemple, un algorithme de chargement de textures inefficace peut "fonctionner correctement" sur des appareils mobiles haut de gamme, mais ne pas être en mesure de suivre le rythme sur un Chromebook avec un écran 4K. Améliorer l'algorithme permettra d'améliorer le jeu sur tous les appareils.
Si vous n'avez jamais créé de profil, voici une bonne approche générale :
- Déterminez si les performances sont limitées par :
- Processeur
- GPU
- Autre : Entrée/Disque/Réseau
- Essayez d'identifier la cause principale.
- Essayer d'optimiser
- Répéter
Dans la plupart des cas, les jeux se révèlent être liés au processeur ou au GPU. À l'aide des conseils et outils de profilage ci-dessous, essayez de déterminer où le système "passe son temps" à chaque frame. Par exemple, si le calcul et le chargement des sommets prennent beaucoup de temps avant que le GPU ne commence le rendu, votre jeu peut être lié au processeur. En revanche, si vous utilisez un grand nombre de filtres détaillés basés sur le GPU, votre jeu est probablement lié au GPU. N'oubliez pas que de nombreux téléphones mobiles et appareils ChromeOS ne sont pas équipés de cartes graphiques dédiées. Un jeu pour ordinateur de bureau qui suppose que les filtres GPU sont rapides peut constater que les GPU intégrés mettent trop de temps à afficher chaque scène.
Pour en savoir plus sur l'approche du profilage, consultez le guide ARM sur le processus d'optimisation.
Outils
Bien qu'il soit certainement possible de déterminer vous-même les goulots d'étranglement, disposer des bons outils vous permettra d'analyser plus facilement les performances de votre jeu et de vous assurer que vous vous concentrez sur les bons éléments. Il existe de nombreux outils, mais voici quelques-uns de nos programmes de référence.
Profileur Android Studio
Le moyen le plus simple de commencer à profiler une application Android est d'utiliser le profileur Android Studio intégré. Dans Android Studio, au lieu de cliquer sur "Exécuter", choisissez simplement "Profiler" pour exécuter votre application et obtenir des informations en temps réel sur l'utilisation du processeur, de la mémoire et du réseau. Les traces de processeur simples peuvent être un moyen rapide d'isoler les zones de code à examiner.
Cet outil ne fournit pas d'informations réelles sur l'utilisation du GPU ni sur ce qui se passe entre chaque synchronisation de frame. Il est donc utile, mais probablement insuffisant pour que votre jeu fonctionne à son plein potentiel.
Snapdragon Profiler
Comme le comportement de vos jeux sera le même sur tous les appareils, un bon moyen d'obtenir des informations détaillées sur les performances consiste à utiliser Snapdragon Profiler sur un téléphone ARM basé sur Qualcomm. Bien que cela ne permette pas de profiler directement sur un appareil ChromeOS, cela devrait vous donner des informations sur l'endroit où votre jeu passe la majeure partie de son temps à chaque frame, et peut vous donner un aperçu des appels GPU spécifiques qui sont utilisés.
Par exemple, si vous constatez qu'une grande partie du temps est consacrée à vos filtres GPU anisotropes et qu'ils dominent le travail effectué à chaque frame, vous pouvez probablement améliorer considérablement les performances en modifiant ce paramètre.
Si les temps GPU sont courts et réguliers, mais que les temps CPU sont dominants et vous font manquer des synchronisations de frames, examinez vos algorithmes de chargement de textures/préparation de frames.
Pour en savoir plus, consultez la documentation officielle sur l'utilisation.
ARM Mobile Studio
ARM Mobile Studio est un autre outil de profilage ARM utile. Certains développeurs peuvent le préférer à Snapdragon Profiler, mais il peut être utilisé de manière similaire. Consultez la documentation officielle sur l'utilisation.
Android GPU Inspector
Android GPU Inspector est un nouvel outil développé par Google et spécialement conçu pour vous aider à optimiser les performances de votre jeu avec OpenGL et Vulkan. Elle est actuellement en version Preview pour les développeurs. Sa configuration peut prendre un certain temps et elle ne fonctionne actuellement que sur un nombre limité d'appareils. Il devrait devenir l'un des principaux outils de profilage graphique à l'avenir. Consultez la documentation officielle.
Trace de présentation ARC
Il existe également un outil plus généralisé, ARC Overview Tracing, qui fonctionne de la même manière que l'outil ARC Graphics Tracing ci-dessus. Ce traceur fournit des métriques générales sur les performances d'une application et de ChromeOS. Les résultats affichent les FPS de l'application et de Chrome lui-même, ainsi que l'utilisation du processeur et du GPU, la consommation d'énergie et plus encore. Vous pouvez exécuter l'outil plusieurs fois et afficher les graphiques de chaque exécution superposés, avec des couleurs pour les différencier. Chaque modèle de tracé sera enregistré dans votre dossier "Téléchargements" et pourra être réimporté pour de futures comparaisons. Pour les vérifications générales de l'état des applications, le traçage de la vue d'ensemble ARC est un bon point de départ.
Accédez à chrome://arc-overview-tracing dans le navigateur sur ChromeOS pour accéder à cet outil.
Étapes suivantes
Vous avez peut-être identifié des points de blocage, mais vous ne savez pas comment les résoudre. Ou vous les avez identifiées et résolues, mais vous ne savez pas par où commencer. Vous trouverez ci-dessous une liste de conseils et de ressources généraux pour Android et spécifiques au moteur.
Conseils d'ordre général
Le portail des développeurs Android propose d'excellents conseils pour améliorer les performances de votre application. Vous y trouverez des informations sur les temps de chargement, l'utilisation du multithreading, la gestion du décalage d'entrée et plus encore.
N'oubliez pas de profiler tôt et souvent, surtout si vous ciblez des machines moins puissantes ou si vous repoussez les limites de l'architecture haut de gamme. Le suivi des statistiques de performances de votre application vous aidera à identifier les modifications qui ont fait chuter votre fréquence d'images et celles qui vous aident à maintenir l'expérience fluide que vous recherchez.
Moteur Unity
En plus de leur documentation Android générale, Unity fournit une documentation spécifique à ChromeOS pour vous aider à créer une application ChromeOS performante à l'aide de son moteur. Consultez leur documentation ChromeOS sur les premiers pas, les entrées, le débogage et la création, y compris la création de versions x86. Pour en savoir plus sur les performances, consultez Comprendre l'optimisation et le cours Performances et optimisation.
Nous vous recommandons de lire le guide ARM sur le profilage et l'optimisation des jeux Unity, ainsi que les bonnes pratiques associées. Vous allez découvrir comment profiler un exemple de jeu dans Unity avec l'outil Streamline, un aspect d'ARM Mobile Studio.
Unreal Engine
Unreal a rédigé ses propres documents sur les consignes de performances et les conseils et astuces qui vous expliquent comment tirer le meilleur parti des nombreuses options et paramètres fournis par le moteur. Vous y trouverez des astuces sur le niveau de détail, comment tirer le meilleur parti de l'éclairage, des guides détaillés sur les paramètres de qualité des matériaux et les nuanceurs, ainsi que d'autres suggestions.
Pour en savoir plus sur les optimisations graphiques, ARM a rédigé un guide sur l'optimisation des jeux mobiles. Vous trouverez des conseils d'optimisation généraux et des considérations spécifiques aux graphiques Unreal ici.