Ce guide explique comment utiliser un plug-in Unity pour enregistrer et importer des données de temps de rendu à partir d'Unity 2017.4 ou version ultérieure.
Pour les moteurs de jeu basés sur C ou C++, consultez le guide spécifique aux moteurs de jeux natifs.
Arrière-plan
Les performances de rendu constituent un élément clé de toute expérience de jeu. Elles dépendent de deux facteurs :
- La fréquence de frames : fréquence à laquelle chaque frame apparaît.
- Les paramètres de qualité graphique : le niveau de fidélité auquel un frame apparaît, y compris la fidélité de simulation et des éléments graphiques.
Pour les jeux, voici comment sont définies les performances de rendu :
- Fréquence de frames stable et cohérente (c'est-à-dire un pourcentage de frames dont le rendu s'effectue à la fréquence souhaitée).
- Rendu des frames à la fréquence la plus élevée possible tout en préservant la stabilité (généralement 30 ou 60 FPS, selon le type de jeu).
- Maximisation du niveau de détail pour chaque utilisateur en fonction de la taille et de la densité de son écran, tout en respectant une fréquence de frames stable et suffisante
La bibliothèque Android Frame Pacing limite les variations des temps de rendu, offrant ainsi une fréquence de frames stable pour les jeux. Certaines variations du temps de rendu subsistent en raison du niveau de détail de certaines scènes du jeu et des fonctionnalités graphiques de l'appareil. Grâce à Android Performance Tuner, vous pouvez identifier les moments où le temps de rendu dans le jeu est plus lent ou plus rapide que souhaité, et mettre en corrélation ces problèmes et ces marges d'amélioration avec :
- des paramètres de qualité spécifiques ;
- des scènes spécifiques de votre jeu ;
- des modèles ou caractéristiques techniques spécifiques d'appareils.
Enregistrer et importer des données
La bibliothèque Tuning Fork s'appuie sur l'appel à chaque frame de l'une de ses fonctions tick par la bibliothèque Android Frame Pacing (ou par le moteur Unity pour les anciennes versions de Unity, dans lesquelles la bibliothèque Frame Pacing n'est pas présente). Dans la bibliothèque, ces informations de tick sont agrégées sous forme d'histogrammes, qui sont ensuite régulièrement importés sur Google Play via un point de terminaison HTTP. Chaque tick est enregistré comme étant associé à une clé d'instrumentation et à une annotation. Les annotations sont définies à l'aide du plug-in Unity.
Clés d'instrumentation
Une clé d'instrumentation indique d'où provient le tick dans le frame. C'est un nombre entier qui doit être transmis dans chaque appel de la fonction tick. Cette opération est effectuée automatiquement par le plug-in Unity. Si l'option Optimized Frame Pacing (rythme de frames optimisé) est activée dans les paramètres Unity pour votre jeu (disponible dans Unity 2019.3.14 ou version ultérieure), Android Performance Tuner utilise les informations de la bibliothèque Android Frame Pacing pour signaler les métriques améliorées.
Annotations
Les annotations fournissent des informations contextuelles sur le comportement de votre jeu lorsqu'un tick est enregistré. Par exemple, une annotation peut identifier l'un des éléments suivants :
- Niveau actuel du jeu
- Chargement en cours d'une scène spécifique
- Apparition à l'écran d'un "big boss"
- Toute autre information pertinente sur l'état du jeu
Les annotations sont définies dans une boîte de dialogue fournie par le plug-in Unity.
En interne, la bibliothèque Tuning Fork utilise le format de tampon de protocole de Google pour stocker les annotations et les paramètres de fidélité. Il s'agit d'un protocole multilingue bien défini destiné aux données extensibles et structurées. Pour en savoir plus, consultez la documentation consacrée aux tampons de protocole.
Paramètres de fidélité
Les paramètres de fidélité influent sur les performances et la fidélité graphique de votre jeu, par exemple le niveau de détail du maillage, la résolution des textures et la méthode d'anticrénelage. Tout comme les annotations, les paramètres de fidélité sont définis dans une boîte de dialogue fournie par le plug-in Unity.
Ressources nécessaires en mémoire et en processeur
Toute la mémoire utilisée par la bibliothèque Tuning Fork est allouée lors de l'initialisation afin d'éviter les mauvaises surprises en plein jeu. La taille des données dépend du nombre de clés d'instrumentation, du nombre d'annotations possibles et du nombre de buckets dans chaque histogramme. C'est un multiple de tous ces éléments multipliés par quatre octets pour chaque bucket. Il existe également deux copies de tous les histogrammes pour l'envoi avec une mise en mémoire tampon double.
L'envoi a lieu sur un thread distinct et ne bloque pas les appels de la fonction tick. Si aucune connexion d'importation n'est disponible, l'envoi est mis en file d'attente pour une importation ultérieure.
L'appel d'une fonction tick nécessite peu de ressources, car il calcule simplement un index dans le tableau de buckets d'histogramme et l'incrémente d'un nombre entier.
Requêtes Web
La bibliothèque envoie deux types de requêtes au point de terminaison du serveur :
- Une requête
generateTuningParameters
lors de l'initialisation - Une requête
uploadTelemetry
régulière pendant le jeu pour envoyer des données au serveur
Joueurs hors ligne
Si aucune connexion n'est disponible lors de l'initialisation, la requête est relancée plusieurs fois avec un temps d'attente croissant. Si aucune connexion n'est disponible lors de l'importation, cette dernière est mise en cache. Les importations sont stockées sous forme de fichiers dans un espace de stockage temporaire.
Conditions requises
Pour utiliser le plug-in dans votre jeu, utilisez une version compatible d'Unity :
- Unity version 2017.4 ou ultérieure et .NET version 4.6
- Unity version 2018.2 pour pouvoir utiliser des fichiers d'extension pour APK
- Unity version 2019.3.14 ou ultérieure pour pouvoir améliorer le temps de rendu et les mesures de GPU
- Unity version 2019.3 ou ultérieure et le package Addressables 1.19.4 ou version ultérieure pour la prise en charge des scènes adressables
Intégrer Android Performance Tuner dans Unity
Pour en savoir plus sur l'intégration d'Android Performance Tuner dans Unity, consultez la section Activer l'API.