Avec le rapprochement du déploiement de World of Warcraft : Shadowlands et l'introduction du nouveau système de missions, les Aventures, les développeurs se sont également attelé à une tâche parallèle bien plus complexe qu'il n'y paraît : la mise à jour de l'application mobile WoW Companion !
Important : L'application mobile est disponible sur iOS et Android, elle sera mise à jour lors de la sortie du PréPatch de Shadowlands qui ne devrait pas tarder à être annoncé, il est d'ores et déjà disponible au téléchargement sur le launcher Battle.net. L'extension Shadowlands est quant à elle prévue pour le 27 octobre 2020.
Historique
C'est lors de la sortie de l'extension Legion, en 2016, que l'application mobile WoW Companion est sortie afin de permettre aux joueurs d'avoir accès à leurs tables de missions, un calendrier et la carte des expéditions. Pour la sortie de Battle For Azeroth, l'application a été mise à jour mais au détriment du contenu de Légion qui a tout simplement disparu entrainant quelques remontrances de la part des joueurs.
Les développeurs se sont ainsi donné pour mission pour la sortie de l'extension Shadowlands, prévue pour le 27 octobre 2020, de proposer une application mobile qui regroupent le contenu des 3 dernières extensions de World of Warcraft.
C'est dans un Atelier de l'Ingénieur publié sur le site officiel que l'équipe de développement nous partagent les difficultés rencontrées en voulant améliorer l'application.
Difficultés
Les développeurs ont rencontré quelques difficultés à proposer une application qui regroupe les trois extensions mais par chance la majorité du code spécifique à Legion était toujours présent dans l'application. La principale difficulté a été de séparer les différents contenus. Pour mener à bien cette tâche, l'équipe mobile s'est appuyée sur trois axes majeurs :
- L'application doit effacer les données de l'extension en cours et récupérer celles de la nouvelle
- Le code d'interface de chaque extension doit être clairement séparé
- Les données rattachées à chaque extension doivent être divisés afin de réduire la consommation de l'application
Données d'extension
L'équipe mobile nous explique que le code du serveur gérant les requêtes était conçu pour uniquement le contenu de Legion. Lors de la sortie de Battle For Azeroth, les développeurs ont modifiés le code afin que seules les données de Battle For Azeroth soient renvoyées. Pour la prochaine mise à jour de l'application, qui sera disponible lors de la sortie du pré patch de Shadowlands, il a fallu trouver une solution pour que le système récupère les données de n'importe quelle extension. Concrètement cela signifie que les données dédiées aux sujets devaient préciser de quelle extension ils proviennent, il en est de même pour les expéditions.
De nouvelles données ont été ajoutées lors de Battle For Azeroth, l'exemple donné est celui des ressources de guerre qui faisaient conflit avec les ressources de domaines de Legion. Ainsi pour Shadowlands, au lieu d'ajouter une nouvelle monnaie avec le même nom, l'équipe mobile a décidé de transposer le système de monnaie complet du client PC, ainsi chaque extension pourra accéder aux monnaies qui lui sont propres dans l'application.
Code d'interface
La majorité du code pour Battle For Azeroth provient du code écrit pour Légion, il est donc difficile de savoir quel code était actif. Cela c'est principalement vu sur les sujets et leurs armements mais les fonctionnalités de ces deux extensions étant assez proches pour ne pas causer plus de problèmes. L'ajout de Shadowlands apporte son lot de complications car demander à un même code de gérer les fonctionnalités des liens d'âmes et des congrégations risque de complexifier tout le développement de l'application.
C'est pourquoi les développeurs ont décidé de séparer les fonctionnalités partagées par les trois extensions de celles qui étaient spécifiques à l'une d'entre elles. Ils ont décortiqué chaque code afin de les ranger au mieux avec un système de sous-classes et de composantes. Par exemple, seules les missions de Legion ont besoin du bouton Combattant Allié, alors que les aventures de Shadowlands ne nécessitent pas d'informations issues de Legion ou Battle For Azeroth et ainsi afficher les portraits d'adversaires à la place des icônes de missions.
Une des modifications majeures de l'application mobile est la façon dont les fichiers sont générés, le code et la base de données sont ainsi construits sur le même schéma que sur PC. Cela permet de déterminer plus facilement sur quelle carte chaque expédition doit s'afficher, par exemple. En effet avec trois extensions qui ont chacune plusieurs cartes à gérer, cela pouvait entrainer des conflits.
Fichiers de ressources
Une des principales contraintes du développement mobile est qu'il faut prendre en compte que certains joueurs disposent d'une connexion à faible débit ou de données limitées. Il faut ainsi rendre l'application la moins gourmande en données possibles. La solution qui a été trouvées est de limiter la quantité de données à télécharger.
Chaque extension possède ses propres ressources et fichiers, avec l'arrivée de Shadowlands cela allait tripler le volume de données nécessaires. Les développeurs ont donc regroupé les textures haute résolution de la carte, les fonds d'ambiance des emplacements de missions et les portraits des sujets et des ennemis sous la forme de packs pour chaque extension. Ainsi il sera possible de charger que les données nécessaires. Ainsi si le contenu d'une ou de plusieurs des trois extensions ne vous intéresse pas ou plus vous pourrez ne télécharger que les données dont vous avez besoin.
Modifications du système de traitement des données
Pour séparer les ressources par extension a nécessité de modifier l'outil de conservation des données et celui de création de données. L'outil de conservation a été développé pour Legion et Battle For Azeroth, les développeurs ont donc dû le redévelopper afin qu'il fonctionne avec toutes les extensions. Cette nouvelle version plus adéquate va directement chercher dans la liste des contenu ce dont l'application a besoin et renvoie les données de chaque extension séparément. Ainsi l'ajout de nouvelles données sera plus facile et plus rapide sans avoir à refaire toute l'application.
La création de fichiers de ressources utilise la fonctionnalité de variantes "AssetBundle" du moteur Unity, cela permet à l'application de traiter différentes versions d'un pack de ressources comme s'il était un même pack. Cette technique permet de charger plus facilement les données de chaque extension sans avoir à supprimer les données précédemment chargées. Ainsi chaque extension peut prétendre être la seule présente dans l'application.