Arrière-plan
NEW STATE Mobile est un jeu de battle royale de Krafton lancé dans le monde entier en novembre 2021. Il a enregistré plus de 45 millions de téléchargements au cours du premier mois de son lancement. KRAFTON, Inc. est un collectif de studios de développement de jeux indépendants qui se sont réunis pour créer des expériences de divertissement innovantes et attrayantes pour les joueurs du monde entier. Elle comprend PUBG Studios, Bluehole Studio, Striking Distance Studios, RisingWings, Dreamotion et Unknown Worlds, chacun disposant de son expertise unique. NEW STATE Mobile a été créé avec Unreal Engine 4. Nous avons essayé de réduire la chaleur et la consommation de la batterie causées par une utilisation élevée du GPU en raison de ses fonctionnalités de jeu distinctives.
Les joueurs peuvent participer à des batailles à longue portée. Le moteur de jeu doit donc pouvoir afficher des scènes à une distance assez éloignée. De plus, de nombreuses végétations sont présentes sur le champ de bataille, ce qui entraîne une forte baisse des performances en raison du forçage de ces végétations. L'équipe a donc utilisé Android GPU Inspector (AGI) pour optimiser l'utilisation du GPU du jeu et éliminer les goulots d'étranglement.
Figure 1: Capture d'écran de NEW STATE Mobile
Ce qu'ils ont fait
NEW STATE Mobile a utilisé l'AGI pour accéder à de nombreuses informations sur les compteurs GPU et optimiser l'utilisation de ces GPU en conséquence. Ils ont identifié des passes de rendu inutiles à l'aide des données de profilage de l'activité du GPU fournies par AGI. Après avoir identifié les segments qui occupaient l'utilisation du GPU et la bande passante de la mémoire, il a continué à vérifier la progression de l'optimisation à l'aide du compteur du GPU et de l'activité du GPU pour vérifier qu'il allait dans la bonne direction.
Figure 2: Capture d'écran de NEW STATE Mobile
Voici quelques-uns des enseignements qu'il a tirés sur les performances du jeu grâce à l'IA générative:
Optimisation de la passe de base: le prépassage de profondeur, une technologie qui augmente l'utilisation d'Early-z, a permis de réduire l'utilisation de l'ombrage de fragment. Le prépass de profondeur était spécifiquement utilisé pour le LOD0, qui occupe la majeure partie de l'espace à l'écran, ce qui réduit la charge pouvant résulter d'appels de dessin supplémentaires. De plus, l'utilisation du format de couleur de scène 32 bits peut améliorer les performances de l'ensemble du passage de rendu. Le format SceneColor par défaut d'UnrealEngine4 est FloatRGBA, qui est au format 64 bits. Si un format 32 bits est utilisé, la bande passante mémoire peut être réduite de moitié.
Impact mesuré: après l'application du prépassage de profondeur, l'utilisation du GPU a chuté de 7,5%. En raison du prépassage de profondeur, un plus grand nombre de fragments peuvent être Early-Z. Le temps nécessaire pour l'ombrage de fragment a diminué de 2%. Grâce au format scenecolor 32 bits, l'utilisation du GPU a été réduite de 5,3%. Le nombre de nuanceurs actifs a diminué de 2%, et la lecture totale du GPU à partir de la mémoire système a diminué de 330 Mo/s. La quantité d'écritures du GPU dans la mémoire système a été réduite de 78 Mo/s, et la lecture de la mémoire de texture a également été réduite de 43 Mo/s.
Optimisation du pass d'ombre: lorsque des maillages sont utilisés comme projecteurs d'ombres, l'utilisation d'un niveau de détail élevé en polygones n'a pas vraiment d'incidence sur la qualité. Il est préférable d'utiliser un LOD à faible nombre de polygones, ce qui permet de réduire le nombre de triangles. Dans Unreal Engine 4, vous pouvez utiliser un niveau de détail à faible nombre de polygones à l'aide de la commande de console "ForceLODShadow".
Impact mesuré: le nombre de triangles utilisés pour les ombres a diminué d'environ 120 000. Les données du compteur GPU dans AGI ont montré que l'utilisation du GPU a diminué d'environ 2%, que la quantité de mémoire GPU lue à partir de la mémoire système a diminué de 130 Mo/s et que la quantité écrite à partir du GPU vers la mémoire système a diminué d'environ 23 Mo/s.
Instanciation automatique: l'instanciation automatique, qui peut être appliquée à la fois pour l'optimisation du pass d'ombre et du pass de base, vous permet de fusionner les mêmes commandes de rendu au moment de l'exécution, puis de les afficher toutes en même temps. NEWSTATE Mobile a ainsi pu appliquer une illumination globale à des objets individuels sans perdre en performances. L'instanciation automatique est une fonctionnalité de base fournie par UnrealEngine4.
Impact mesuré: le nombre d'appels de dessin a été réduit de 500. Cela a réduit d'environ 48% les appels de dessin. L'utilisation du GPU a diminué d'environ 3,5%. Ces mesures ont été effectuées à l'aide d'OpenGL.
Figure 3: Données internes montrant la réduction de l'utilisation du GPU
Résultats
En utilisant l'AGI, NEW STATE Mobile a réduit son utilisation des GPU de 22%. L'optimisation du prépassage de profondeur et du passage d'ombre a permis de réduire l'utilisation du GPU de 19% et de 3 %, respectivement. Les appels de dessin et la mémoire totale lue et écrite par le GPU à partir de la mémoire système ont également été considérablement réduits.
Premiers pas
Découvrez comment analyser l'impact de votre jeu sur les appareils Android en identifiant les problèmes de performances et les axes d'optimisation à l'aide d'Android GPU Inspector (AGI).