Récapitulatif de la conférence Restaurer l’histoire : WoW Classic
WoW Classic est attendu de pied ferme par la communauté. Pour réellement prendre mesure de la grandeur de la tâche que représente la restitution d’une expérience Blizzard de qualité, les ingénieurs logiciel Brian Birmingham et Omar Gonzalez, ainsi que le directeur du jeu Ion Hazzikostas, sont montés sur scène pour nous présenter leur travail.
À la recherche des pièces perdues
Pour simplifier les éléments qui constituent un jeu vidéo, Omar les a réduits à trois composants principaux : la base de données, les ressources artistiques et le code source.
- La base de données contient les points de vie d’une créature, la valeur d’Endurance présente sur un objet, les emplacements d’apparition dans le monde entier, et des millions d’autres valeurs.
- Les ressources artistiques englobent des éléments aussi variés que l’apparence d’un Elfe de la nuit lorsqu’il se camoufle dans l’ombre, les effets sonores d’une Explosion pyrotechnique ou l’animation d’un orc frappant avec sa hache.
- Le code source, quant à lui, fournit les instructions permettant d’afficher le jeu, de traiter les données saisies et de connecter les joueurs.
Pour commencer, nous avons dû chercher jusqu’où remontait notre code source, et avons découvert que notre référentiel de code datait de 1997, soit bien avant le début du développement de World of Warcraft.
C’était un bon départ, mais nous avons rencontré des difficultés relatives à la façon dont le développement gérait à l’époque les mises à jour des bases de données. Contrairement à notre code, qui possédait plusieurs branches du jeu pouvant être modifiées et développées séparément, notre plus ancienne base de données était écrasée à chaque mise à jour. Fort heureusement, nous avons pu résoudre ce problème très rapidement, et quand nous avons inspecté la base de données, nous avons découvert des éléments remontant à la version 1.12, et même au-delà.
Enfin, nous avons mis la main sur nos ressources artistiques, préservées sur de vieilles sauvegardes analogiques, et qui correspondaient à toutes les bases de données que nous avions conservées.
En assemblant ces trois composants, nous avons pu procéder à un test et nous connecter au jeu, créer de nouveaux personnages, massacrer des sangliers et accomplir quelques quêtes.
Une jouabilité classique dans un monde moderne
Si nous tenions désormais une version fonctionnelle du jeu, il nous restait bien des obstacles à surmonter. La technologie permettant de faire tourner le jeu a connu des progrès considérables depuis sa sortie : sauvegardes dans le cloud, intégration à l’application Battle.net, fonctionnalités d’assistance clientèle et correction de nombreuses erreurs et exploitations de bugs.
Pour pallier ce problème, nous avons fait la différence entre ce qui nous plaisait (les ressources artistiques et les données) et ce que nous n’aimions pas (le code). Nous voulions voir s’il était possible d’exploiter les ressources artistiques et les données classiques avec notre code moderne, et de faire en sorte que tout fonctionne sans accroc. Tout n’a pas immédiatement marché, mais en tâtonnant, nous avons pu mettre sur pied une preuve de concept illustrant une potentielle marche à suivre pour obtenir une version jouable. Cela a renforcé notre confiance, et nous a convaincus que nous pouvions assurer la qualité Blizzard sur notre plateforme actuelle.
Du prototype à la démo
Nos composants de base (code source, bases de données et ressources artistiques) interagissent les uns avec les autres pour créer des éléments visibles par le joueur, comme le terrain, la jouabilité, les animations et l’éclairage. Selon la fonctionnalité voulue, ces composants communiquent entre eux de diverses manières.
Pour véritablement comprendre ces interactions, prenons le terrain comme exemple. Cela concerne le placement des collines et vallées, des arbres, des bâtiments et de bien d’autres choses encore. Lorsque nous avons chargé les vieux fichiers contenant les données relatives au terrain dans notre environnement de jeu moderne, nous avons constaté que le système interprétait différemment les données. Par conséquent, le système moderne et les données classiques ne s’alignaient pas correctement, et donnaient lieu à des erreurs, comme l’apparition de feux de camp kolkar sous l’eau ou d’arbres calcinés datant de l’époque de Cataclysm.
Données de terrain de la version 1.12 |
Moteur de la version 1.12 |
Moteur moderne |
||||||||||||||||||||
|
|
|
Heureusement, notre éditeur moderne est capable de convertir certaines de ces données, et en ce qui concerne les données de terrain, il est possible de les convertir avec l’éditeur que nous utilisons actuellement pour Battle for Azeroth. L’éditeur moderne peut charger le vieux format de terrain, le transformer en nouveau format et l’exporter dans notre moteur moderne. Cela corrigeait les placements de feux de camp erronés et l’apparition des arbres, entre autres.
Autre obstacle à surmonter : la façon dont nous stockons et fusionnons nos données. Il y a toujours plusieurs mises à jour de World of Warcraft en développement simultané, car chacune d’entre elles en est à un autre stade de son développement. Si nous ajoutons une ressource artistique ou un fichier de terrain à une mise à jour, nous voulons qu’elle figure automatiquement dans les mises à jour ultérieures. Au cours des quatorze années de développement continu du jeu, cela a toujours été fait selon une chronologie fixe et linéaire. Si nous avions simplement inséré la mise à jour pour WoW Classic dans le système de développement actuel, nous aurions remplacé des éléments tel que l’actuel barrage de Loch Modan par les versions précédentes, désormais restaurées. Cela aurait causé des soucis pour la sortie de Battle for Azeroth.
Pour contourner ce problème, nous avons enseigné de nouveaux tours à nos outils, afin de pouvoir implémenter la mise à jour classique sans affecter la version actuelle du jeu. Nous avons copié les données de la version 1.12 dans un nouveau projet et appris à nos outils à faire la différence. Dorénavant, lorsque nous déployons une mise à jour, toutes les modifications restent limitées à la chaîne classique, sans interagir avec les mises à jour actuelles. Cela peut sembler enfantin (on s’imagine qu’il suffit de copier un répertoire), mais il n’est pas si facile que ça d’apprendre à tous nos outils à faire la différence, afin qu’ils puissent procéder aux modifications automatiquement. La possibilité d’avoir recours à nos outils internes représente un énorme avantage, et nous voulions nous assurer que WoW Classic puisse accéder à l’intégralité de notre infrastructure et de nos données.
Modèles et animations classiques
Nous avons également pris le temps de restaurer intégralement les modèles classiques. Cependant, alors que nous travaillions sur cette restauration, nous nous sommes rendu compte que certains modèles étaient défectueux. Dans certains cas, des textures manquaient, et nous avons dû faire des recherches pour savoir à quoi ces objets devaient ressembler, puis les corriger dans notre système.
Les animations d’origine ont aussi été restaurées, mais notre système d’animation est étroitement lié à notre code de jeu. Il a fallu apporter des modifications à la fois aux bases de données et au code pour retrouver les animations de la version 1.12. Ce faisant, nous sommes tombés sur quelques bugs, faisant notamment apparaître debout les modèles devant être couchés, et vice-versa, mais nous avons pu les corriger sans mal.
Restauration des systèmes des classes
Rien qu’en convertissant les données en code, nous avions déjà bien progressé. Or, certains systèmes ne possèdent aucun équivalent moderne. La classe la plus affectée par ceci est sans doute le chasseur. Les systèmes de bonheur et de loyauté des familiers ont été supprimés, ainsi que l’entraînement des familiers et la possibilité d’équiper à la fois une arme à distance et une arme de mêlée. Dans ces cas-là, convertir les vieilles données dans le nouveau système ne fonctionnait pas, car il n’existe tout simplement pas de nouveau système pouvant les interpréter. Aussi, nous nous sommes trouvés contraints d’exhumer le vieux code. Heureusement, la restauration s’est déroulée sans heurt, bien que la nécessité d’acheter à nouveau des flèches et de nourrir ses familiers en ait surpris plus d’un.
Ce problème ne se limitait pas aux chasseurs ; il a également fallu modifier le code gérant les points de combo des voleurs, car notre système de ressources actuel prend en charge la génération et la dépense des points de combo, mais pas leur disparition en cas de changement de cible. En outre, il faut prendre en compte les anciennes formules de combat. Dans le cas présent, nous avons récupéré le code régissant des formules comme les coups critiques et les coups écrasants. La chance de déclenchement de ces derniers est également modifiée par la différence entre la défense de la cible et la compétence d’arme de l’attaquant. Eh oui, les compétences d’arme sont de retour ! Nous disposions des données les concernant, mais nous avons dû restaurer le code qui les faisait progresser lorsque vous maniiez vos armes, et qui les faisait influer sur vos chances de toucher ou de voir votre coup dévié.
Interface utilisateur et éclairage
L’écran de personnage est un exemple parfait d’interface utilisateur emblématique que nous nous devions de restaurer. Aussi, nous nous sommes efforcés de restituer l’impression d’origine, jusqu’aux plus subtils effets visuels et éclairages présents derrière le personnage. Si nous ne voulons pas vous promettre la perfection, nous pouvons en revanche vous garantir que nous procédons à des comparaisons très détaillées et travaillons d’arrache-pied pour recréer une expérience authentique.
Pour vous donner un autre exemple concernant l’éclairage, nous nous sommes penchés sur la forêt d’Elwynn. À un moment dans la vie de World of Warcraft, nous avons modifié toutes les équations définissant l’éclairage, et nos concepteurs des environnements ont dû revoir toutes les zones afin d’améliorer l’éclairage et de tirer parti des nouvelles équations. Pour restituer l’expérience d’origine, il a fallu annuler ces modifications. Tout d’abord, nous avons restauré les anciennes données d’éclairage. Cela représentait un grand pas en avant (ou en arrière), et quelques modifications supplémentaires apportées aux formules de distance et de brouillard, ainsi qu’aux ombres, nous ont rapprochés encore plus de l’éclairage original.
Vous avez bientôt terminé ?
Avec tout ce travail derrière nous, vous vous demandez certainement si nous en avons bientôt terminé, ou s’il ne serait pas plus facile de mettre simplement à jour le client de référence.
Au terme d’une année de labeur sur ce projet, de nombreux bugs corrigés et de défis surmontés, l’écart entre ce que nous avons entre nos mains et notre objectif final reste clairement visible. Quand on compare la version actuelle de World of Warcraft et sa version classique, les différences sautent aux yeux. Si nous tentions de mettre à jour le client de référence, nous devrions passer notre temps à traquer d’innombrables modifications cachées, comme des bugs prêts à être exploités, des plantages qui ne surviendraient pas avant que des millions de joueurs se connectent en même temps, et pire encore. Nous avons opté pour une approche qui rend les tâches restantes évidentes, plutôt qu’implicites et attendant de nous sauter à la gorge.
Nous ne sommes pas encore au bout de nos peines : nous allons devoir nous attaquer à des tas de fonctionnalités propres aux capitales, comme les banques et les hôtels des ventes, nous devons tester les raids et donjons pour nous assurer que toutes les capacités des boss fonctionnent encore correctement, et nous devons nous pencher sur tous les systèmes JcJ.
Philosophie et projets pour l’avenir
Avec WoW Classic, nous tenons à proposer une expérience suffisamment authentique pour qu’un joueur n’ayant plus joué depuis cette époque puisse reprendre à l’endroit précis où il s’est arrêté, sans constater de différence. Certes, le jeu sera un peu plus fluide et l’infrastructure plus robuste, mais il est crucial que vous ayez l’impression de jouer à World of Warcraft comme en 2006. Cela ne tient pas uniquement aux équations de combat et à la jouabilité plus exigeante, mais également aux systèmes sociaux et à l’interdépendance entre joueurs. Trouver un groupe demandera plus d’efforts, et en conséquence, vous devrez compter sur vos alliés une fois dans un donjon ou en train d’aborder d’autres types de contenu. De même, nous ne voulions pas trop changer les données de la version 1.12, et affecter ainsi l’expérience de jeu globale.
Beaucoup de décisions nous ont paru évidentes. Les fonctionnalités tel que l’outil Donjons étaient proscrites d’avance. De même, pas question d’ajouter les groupes inter-royaumes, les hauts faits, les hôtels des ventes unifiés ou les montures volantes.
D’autres décisions ont été plus délicates. Il fut un temps, il ne pouvait y avoir plus de 8 affaiblissements sur une même cible. Plus tard, cette limite a été portée à 16, pour être finalement supprimée. Cette modification a radicalement perturbé l’équilibrage des classes, ainsi que les stratégies pouvant être mises en œuvre pour triompher des défis du jeu. Pour éviter d’avoir à interférer avec les données de la version 1.12, nous avons opté pour une limite de 16 affaiblissements pour WoW Classic.
Les courriers en jeu entre membres d’une même guilde sont actuellement instantanés, mais à l’époque, ils prenaient une heure pour parvenir à leur destinataire, comme les courriers entre inconnus. L’introduction du courrier instantané a rendu les choses plus commodes, mais a fait disparaître l’interaction sociale qui survenait lorsque vous retrouviez quelqu’un pour obtenir votre objet plus rapidement. C’est pourquoi nous avons décidé de remettre ce délai en place. D’autres fonctionnalités pratiques, comme le complètement automatique des noms ou la possibilité de vider rapidement une boîte aux lettres, n’ont pas été retirées. Cela nous a semblé aller de soi, car il aurait été possible de faire la même chose grâce à des add-ons, et il nous semblait futile de supprimer ce genre de commodité.
Par le passé, pour échanger du butin, il fallait bien souvent faire appel à l’assistance clientèle, lorsque quelqu’un ramassait accidentellement un objet dont il ne voulait pas. Dans le système actuel, les joueurs disposent d’un délai au cours duquel ils peuvent donner ce butin à d’autres joueurs. Nous avons décidé de conserver cet aspect pratique, plutôt que de créer un volume tout à fait superflu de requêtes d’assistance (et tant pis pour les voleurs de butin !).
Les classes dépendant de la régénération d’énergie, comme les voleurs, ont elles aussi connu leur lot de changements depuis cette époque. Auparavant, la régénération se faisait par tranches rythmées par les « battements de cœur » du serveur. C’est-à-dire que pour récupérer 20 points d’énergie, il fallait attendre 2 secondes entières. Aujourd’hui, le système a été normalisé, de sorte que vous régénérez 1 point d’énergie tous les dixièmes de seconde. Cette différence modifie complètement le timing de certaines capacités. Ce qui semble être une commodité mineure de nos jours chamboule profondément le rythme des rotations de combat et du potentiel de « burst » dans le style de jeu de WoW Classic. Selon nous, il était crucial de restaurer cette subtilité, afin de préserver l’authenticité de l’expérience.
Les add-ons ont beaucoup évolué au fil des années, pour devenir bien plus sophistiqués à mesure que leurs auteurs accumulaient expérience et savoir-faire. Nous n’avons pas encore tranché sur ce point, mais nous sommes certains d’une chose : nous ne reviendrons pas à l’API d’add-on de la version 1.12. Cela laisserait le champ libre à l’automatisation quasi complète des décisions de combat, et permettait un comportement quasi robotique contraire à l’expérience fondamentale du jeu. Nous nous opposons fermement à cela. D’un autre côté, l’API moderne est dotée d’outils permettant de créer des fonctionnalités sociales qui dénatureraient l’expérience authentique de WoW Classic. Nous réfléchissons encore aux détails et essayons de trouver un bon compromis. Nous suivrons de près les commentaires de la communauté et des auteurs d’add-ons pour définir où doit se situer la limite.
Déploiement prévisionnel du contenu
Si nous débuterons directement avec la version 1.12, nous voulons également garantir aux joueurs la progression à laquelle ils s’attendent. Pour vous donner une idée de notre feuille de route, voici les quatre étapes que nous comptons intégrer progressivement à l’expérience :
- Étape 1 : Cœur du Magma, Onyxia, Hache-Tripes, Kazzak, Azuregos
- Étape 2 : Repaire de l’Aile noire, champs de bataille et récompenses JcJ, Zul’Gurub
- Étape 3 : Ahn’Qiraj (avec évènement d’ouverture), palier 0,5, contenu de Silithus, dragons verts
- Étape 4 : raid de Naxxramas, invasion du Fléau
Ce programme est susceptible de changer, mais nous tenions à vous offrir un aperçu de ce qui vous attend. Il nous tarde de recueillir vos avis, et sachez que nous avons encore du pain sur la planche.
Les visiteurs de la BlizzCon et les détenteurs d’un billet virtuel de la BlizzCon 2018 peuvent jouer à la démo de WoW Classic dès aujourd’hui ! Pour plus d’informations, lisez notre dernier café avec les développeurs, ainsi que ce message de forum détaillant les restrictions de la démo (en anglais).