Je suis Chris Shankland, directeur technique chez Odyssey Interactive et ancien responsable technique sur Omega Strikers. Omega Strikers est un brawler footballistique survolté mettant aux prises deux équipes de 3 joueurs dans des arènes hautes en couleur. Nous avons lancé Omega Strikers sur toutes les plateformes principales : PC, PlayStation, Xbox, Nintendo Switch, iOS et Android. Je vais vous parler de certaines des techniques déployées pour proposer une expérience de qualité sur mobile sans faire de compromis sur les graphismes ou l'aspect compétitif du titre. Bien sûr, c'est grâce aux efforts combinés de toute l'équipe que nous avons pu adapter aussi rapidement un jeu aussi abouti qu'Omega Strikers, et je vais simplement vous présenter nos défis ainsi que les solutions que nous avons mises en place, en espérant pouvoir aider les studios qui travaillent sur des jeux similaires.
Omega Strikers est avant tout un jeu compétitif et nous n'avons voulu faire aucun compromis sur ce point. En pratique, cela veut dire que nous avons mis l'accent sur les performances, le gameplay, la clarté et les commandes. À partir de cette base, nous avons cherché à optimiser les graphismes pour mettre en avant le travail fabuleux de nos artistes. Et pour atteindre nos objectifs en termes de graphismes et de performances, nous avons dû composer avec des contraintes bien connues : mémoire, processeur et processeur graphique. Je vais vous présenter des exemples bien précis dans chacun de ces domaines afin d'illustrer les processus utilisés pour identifier et résoudre les problèmes bloquants.
Omega Strikers repose sur son casting de personnages, avec 15 joueurs proposés au lancement et de nouveaux protagonistes régulièrement ajoutés au fil des mises à jour. Au début du développement, nous avions moins de personnages, moins d'options et des visuels temporaires. À cette époque, il était plus pratique de travailler sur nos personnages et tous les contenus associés avec un ensemble de références figées. Grâce à cette approche, les tests réalisés en interne sur des appareils moins performants se sont bien passés pendant la majeure partie du développement. Mais plus la date de sortie approchait, plus la fidélité visuelle du titre augmentait, et avec elle, la quantité de ressources nécessaires. Les problèmes de mémoire se sont accumulés et le jeu a fini par ne plus démarrer sur les appareils embarquant une configuration moins puissante.
Visualisation des packages sur une version d'Omega Strikers au début du développement
Deux stratégies s'offraient alors à nous : réduire la taille des ressources ou refondre entièrement notre système de gestion des ressources pour pouvoir les charger à la demande. La deuxième option répondait mieux aux attentes d'un jeu-service en matière de flexibilité, alors c'est celle que nous avons choisie. Cela impliquait de convertir toutes les références figées pointant vers les ressources imposantes, comme les textures ou les personnages, en références relatives. Nous conservons en mémoire toutes les ressources de données, qui représentent le catalogue du jeu, pour les récupérer rapidement et de manière synchrone. Cette méthode a réduit le nombre d'opérations de refactorisation nécessaires : une semaine nous a suffi pour réaliser ces modifications. Cette solution nous a permis de proposer quatre mises à jour majeures pour Omega Strikers, avec de nouvelles cartes et de nouveaux personnages, sans rencontrer de problèmes de mémoire.
Capture de mémoire Unreal Insights - Références figées
Capture de mémoire Unreal Insights - Références relatives
Nous essayons d'anticiper les performances des différents processeurs pour que nos lancements se passent le mieux possible. C'est ce que nous avons fait pendant tout le développement et nous avons ainsi pu éviter les phases d'optimisation majeures à l'approche du lancement. La stratégie était simple : jouer régulièrement sur des appareils embarquant la configuration minimale requise et prioriser notre action sur les baisses de performance. Et lorsqu'un problème est détecté, Unreal Insights est notre outil de choix.
Proposer des graphismes de qualité sur un vaste éventail d'appareils mobiles constitue un véritable défi. Les joueurs s'attendent à des graphismes haut de gamme sur les appareils haut de gamme, mais aussi à des performances irréprochables sur tous les appareils. Omega Strikers utilise une gestion standard du niveau de détail pour les textures et les maillages, avec des paramètres personnalisés pour adapter la qualité des environnements. Ces paramètres sont exposés et gérés via des variables de console, qui nous permettent de créer des profils d'appareils et qui permettent aux utilisateurs de personnaliser leur configuration. Nous nous sommes appuyés sur Unreal Insights pour générer la majorité des données de profilage qui nous ont permis d'optimiser les visuels. RenderDoc et son plug-in nous ont également aidés à nous pencher sur les performances de certains appareils ou à rentrer davantage dans les détails.
La mise en cache PSO s'est vite imposée comme une évidence pour éviter les décalages créés par les shaders sur les appareils mobiles. Nous avons développé un processus automatisé qui crée une version du jeu générant automatiquement tous les visuels possibles, avec tous les paramètres de qualité, et qui est ensuite déployée sur un appareil physique. Une fois ce processus terminé, l'application intègre le cache PSO complet dans notre pipeline de génération afin de l'inclure dans les futures versions.
Afin de pouvoir lancer et mettre régulièrement à jour un jeu comme Omega Strikers sur les appareils mobiles avec une petite équipe, il nous a fallu tenir compte dès le début des exigences particulières de ces plateformes et nous appuyer sur les outils de l'Unreal Engine pour rationaliser nos efforts de développement. Nous avons utilisé des stratégies pour alléger la charge de travail sur les appareils les moins puissants, pour charger des ressources ou des données sur les appareils ayant moins de mémoire ou pour utiliser des solutions spécifiques aux environnements mobiles lorsque c'était absolument nécessaire, par exemple, pour l'IU ou les commandes. Valider régulièrement le jeu sur des appareils moins performants nous a permis d'identifier les problèmes dès leur apparition et d'éviter les surprises par la suite. En planifiant et en testant nos versions très tôt lors du développement, nous avons pu mettre en place les stratégies et les budgets adaptés avant de passer en production. Mises bout à bout, ces solutions ont permis à notre incroyable équipe de lancer Omega Strikers sur un large éventail de plateformes et d'assurer son avenir en tant que jeu-service avec un maximum de fluidité.
Nous espérons que d'autres studios pourront tirer parti de ces enseignements et j'ai déjà hâte d'essayer leurs prochains jeux !
Obtenez l'Unreal Engine dès maintenant !
Procurez-vous l'outil de création le plus ouvert et le plus avancé au monde.
L'Unreal Engine est prêt à l'emploi, avec toutes les fonctionnalités et un accès complet au code source.