Le dicton « Patch day, no
play » a malheureusement trop souvent été vérifié sur de nombreux MMO,
comme sur Dofus-Arena. Alors que nous nous apprêtons à apporter un patch de
contenu au jeu dans quelques jours, je reviens un peu sur ce qui fait que
sortir un patch est toujours une opération très délicate.


On aime comparer les jeux vidéo
onlines à un sac de nœuds (ça s'applique en fait à n'importe quel logiciel
ayant atteint une certaines masse en ligne de code). Si on tire sur un des bouts
de ficelle, on ne sait jamais trop quelles autres ficelles vont bouger. Le
mouvement induit aux autre ficelles par la ficelle qu'on tire est appelé
« effet de bord » et c'est sûrement la crainte numéro 1 lors de la
sortie d'un patch.

Au fur et à mesure qu'un projet
comme Dofus-Arena avance, les lignes de code s'accumulent et les
interdépendances se multiplient. Ce qui fait que 4 ans après, quand on ajoute
une nouvelle fonction qui vient en plus modifier certaines lignes de codes,
même en prenant le plus de précautions possible on a toujours peur de l'effet
de bord néfaste.

Vous pourriez me dire « les
testeurs servent à ça, non ? ». C'est en partie vrai. Le problème
c'est que justement, on ne sait jamais où va apparaitre un éventuel effet de
bord et que tester toutes les fonctionnalités du jeu se révèle simplement
impossible vu le temps que cela prendrai. C'est d'autant plus vrai pour les
jeux online qui peuvent très bien fonctionner quand il y a seulement 4-5
testeurs sur le serveur de jeu mais qui peuvent partirent en cacahuète quand
des milliers de joueurs arrivent dessus.

Prenons par exemple une des
nouvelles fonctionnalités que l'on va introduire dans le prochain patch de
Dofus-Arena : La reprise d'un combat en cours après avoir été déconnecté.
Actuellement, le jeu supporte relativement bien les mini-coupures de connexion,
mais si un des joueurs par exemple a un crash de son pc ou de son modem, il a
perdu la partie. Dans ce prochain patch, il lui sera possible s'il se dépêche
(oui parce qu'on ne peut pas faire attendre trop son adversaire non plus) de
rejoindre la partie qu'il avait quitté.

Cette fonctionnalité est bien sûr
super cool, mais a demandé de changer beaucoup de lignes de code concernant la
gestion du combat et des abandons. S'il est facile de prévoir que les abandons
doivent être testés pour voir s'ils n'ont pas hérités de bugs, il est plus ardu
de deviner que peut-être le processus de gestion des tournois ne va pas
comprendre ce qui se passe avec ce combattant qui se déconnecte puis reprend un
match de tournois et va crasher.

Ce sont des exemples simples bien
sûr, en vrai, c'est bien plus compliqué que ça et on a déjà galéré pendant 3
jours à trouver l'origine d'un bug soudainement apparu après un patch avant de
comprendre qu'il venait d'une ligne de code partagée avec le jeu Wakfu (vu
qu'on utilise le même moteur de jeu qui évolue un peu tous les jours, pour le
bien des 2 jeux).

Si on peut se permettre en
période de béta-test de rencontrer de tels bugs qui parfois ont même nécessité
de remettre à zéro les bases de données (les joueurs perdaient donc tout ce
qu'ils avaient gagné et devaient recréer un perso), on ne peut évidemment plus
se le permettre maintenant que le jeu est sorti.

Au final on comprend vite que la
sortie d'un patch devient presque plus stressante que la sortie du jeu en
lui-même, il y a beaucoup plus à perdre (comprenez par là des données
importantes comme les données des joueurs) surtout qu'on sait qu'avant le
patch, le jeu fonctionne très bien. Mais on sait aussi que rares maintenant
sont les jeux online de type MMO qui sortent « finis » et qui ne
bénéficieront pas de patchs de contenu voir d'extensions. C'est donc un risque
à prendre.

Une fois une batterie de tests
ciblés (et dans le meilleur des cas un serveur de test publique mis en place),
il reste donc à annoncer la sortie du patch pour que les joueurs soient au
courant que les serveurs vont fermer pour une partie de la journée. Une fois le
serveur de jeu mis à jour, toute l'équipe se connecte au jeu avec le nouveau
client pour tester une dernière fois les fonctionnalités critiques, et vérifier
que tous les processus (comme le gestionnaire de ladder) ont bien redémarré.

Une fois ce dernier test
effectué, le serveur est rendu à nouveau accessible par les joueurs et leur client
s'auto-update. Dans les jeux à très forte affluence, l'attente d'un patch de
contenu a un effet néfaste supplémentaire : Beaucoup plus de joueurs que
d'habitude décident de se connecter en même temps, ce qui a pour effet de
générer du lag supplémentaire.

Cumulé aux 2-3 bugs qui risquent
d'apparaître seulement dans ces conditions (beaucoup de connexion, un peu de
lag, ...), il ne fait souvent clairement pas bon jouer le jour d'un patch, d'où
le fameux « patch day, no play ». Mais au final, dites vous que ceux
qui en souffrent le plus, ça reste quand même les pauvres développeurs, même si
on a signé pour ça.

Et vous généralement, comment
réagissez vous à l'arrivée d'un patch sur votre jeu préféré ? Vous pestez
sur cette soirée perdue pour votre raid ? Vous êtes impatients de tester
toutes ces nouveautés que l'on vous offre gracieusement mais vous savez
attendre un jour de plus pour ne pas devoir affronter le lag ?