Optimisation de Godforge : Plus de 200 héros, des mondes composés de millions de polygones

Découvrez notre entretien avec Simon Lockerby et Hisham Saleh, cofondateurs et co-PDG de Fateless, dans lequel ils nous dévoilent les stratégies d'optimisation essentielles qu'ils ont mises en œuvre pour gérer un roster de plus de 200 héros et des environnements ultra-réalistes pouvant compter jusqu'à un million de polygones dans Godforge. Ils expliquent comment l'utilisation d'Unity leur a permis de réduire l'utilisation de la mémoire de 4 Go à 1,3 Go et d'augmenter la fréquence d'images de 57 %.
SIMON LOCKERBY : Godforge est un jeu de rôle par équipes au tour par tour inspiré de la mythologie. Tu pourrais te mesurer à Râ, à Zeus ou même à l'un des dieux mayas comme Cizin, et te lancer dans des combats de boss épiques.
Lorsque nous avons commencé à travailler avec Unity, les principaux défis auxquels nous avons été confrontés en matière d'optimisation pour les appareils mobiles concernaient principalement la taille des builds, la fréquence d'images en jeu et la vitesse de téléchargement.
Nous avions plusieurs points que nous souhaitions optimiser, notamment les variantes de shaders, l'amélioration du nombre d'images par seconde, la réduction de la taille de notre fichier APK à télécharger et la vitesse globale de téléchargement

ÉVOLUTION DES PERFORMANCES AU FIL DU TEMPS
HISHAM SALEH : Comme nous sommes en pleine croissance et que nous développons le jeu, ce n'est pas un projet qui se limite à six mois. Cela a été un long processus. En réalité, les objectifs d'optimisation et les appareils cibles ont évolué au fil du temps, et c'était tout à fait prévisible.
Nous souhaitons toujours prendre en charge le plus grand nombre possible d'appareils mobiles. Nous voulions nous assurer d'avoir une configuration PC de qualité, c'est pourquoi nous avons veillé à ce que l'équipe sache clairement quelles étaient les exigences minimales et à lui fournir un repère de ce qu'il fallait pour y parvenir. Et puis, nous voulons que le rendu soit le plus réussi possible sur les écrans les plus petits, puis sur les mobiles, en mettant l'accent sur ces derniers. Unity a développé toute une série d'outils pour nous permettre de le faire.
SIMON LOCKERBY : Cela nous a vraiment aidés à nous préparer pour l'avenir grâce aux outils fournis par l'équipe Unity. Cela nous a permis de repérer les cas où des maillages volumineux ou des maillages en double étaient intégrés à la compilation, afin de nous assurer que nous utilisions correctement les atlas dès le départ. Tous ces systèmes mis en place nous permettent désormais de contrôler la taille future de la compilation, les vitesses de téléchargement, les fréquences d'images, et tout ce genre de choses.
HISHAM SALEH : Si je regarde ce sur quoi nous nous sommes vraiment concentrés, tu sais, ces environnements, ces personnages, et ce que l'on voit à l'écran. Si vous avez des millions de polygones – enfin, pas tout à fait des millions, mais peut-être un million de polygones dans une scène – et que vous essayez de tout charger d'un seul coup, ça ne va pas se charger très vite.
Du coup, grâce à l’occlusion, on a vraiment pu faire tout ce qu’on voulait : non seulement le rendu était super cool, mais le chargement était aussi ultra-rapide. Du coup, les joueurs se connectaient, jouaient la bataille, et au lieu de devoir attendre, je sais pas, parfois cinq ou six secondes, ce qui était ridicule, ça se chargeait, tu vois, le chargement est très rapide sur un appareil haut de gamme et prend peut-être une ou deux secondes tout au plus sur les appareils bas de gamme.

OPTIMISATION DES PERFORMANCES DE CHARGEMENT DES RESSOURCES
SIMON LOCKERBY : Le plus marquant, c'est quand on a réuni toute notre collection, car on collectionne les figurines de héros : on en a plus de 200. Ainsi, un joueur peut disposer à tout moment de plus de 200 portraits de héros. Du coup, le fait de les intégrer dans un atlas a rendu le chargement de notre liste de héros ultra-rapide, alors qu'avant, c'était une véritable galère.
HISHAM SALEH : L'application des meilleures pratiques à Addressables a permis de réduire considérablement la taille du CDN, ce qui nous a été d'une grande aide. En gros, il s'agissait surtout de veiller à ne pas charger ce qui n'était pas nécessaire, de fournir les éléments au joueur au moment opportun, et d'éviter d'avoir des tonnes et des tonnes de versions et de copies qui traînaient dans la version de développement.
Parfois, quand on se concentre vraiment sur l'avancement du projet et qu'on s'assure que le jeu soit beau, agréable à jouer et qu'il fonctionne correctement, on peut perdre de vue ces bonnes pratiques, et il faut alors revenir en arrière pour corriger le tir.

AMÉLIORER LA MÉMOIRE ET LA FRÉQUENCE D'AFFICHAGE
HISHAM SALEH : Je dirais que c'est l'optimisation des ressources qui a eu le plus d'impact. Je pense que, face à un appareil d'entrée de gamme doté de 2 à 3 Go de mémoire, il est difficile de faire tourner un jeu qui réponde aux critères de qualité que nous visons. C'est donc en optimisant les mipmaps et en veillant à ce que tout soit uniformisé, chargé correctement et au bon moment que nous avons vraiment réussi à atteindre le niveau de qualité que nous recherchions.
SIMON LOCKERBY : Nous sommes littéralement passés, je crois que nous avions 4 Go de mémoire avant de commencer ces optimisations, à 1,3 Go. C'était donc un changement radical.
L'équipe Unity a réussi à améliorer les performances de nos variantes de shaders d'environ 76 %. Ils ont réussi à améliorer notre fréquence d'images de 57 %. Il existe d'excellents outils permettant d'identifier le type d'appareil qui vient d'essayer de lancer le jeu.
Donc, vous voyez, au moment du chargement, on peut choisir un réglage faible, moyen ou élevé, selon le type d'appareil, ce qui permet d'activer le profil adapté à cet appareil. C'est vraiment une avancée majeure pour nous quand on passe en direct.
Découvrez d'autres jeux Made with Unity sur notre page Steam Curator, et consultez d'autres témoignages de développeurs Unity sur le blog Unity et le Centre de ressources.
