Les héros qui glissaient à travers Sovngarde
Le matin du 17 octobre, l’un de nous a combattu les héros de Sovngarde et en a mis deux à terre. Dans le jeu de ce joueur, chaque héros tombait, se relevait au bout d’un moment et repartait. Dans le jeu de l’autre joueur, les mêmes héros restaient étendus et glissaient sur le sol derrière l’endroit où marchaient les vrais, comme quelque chose qu’on traîne au bout d’une corde.
Pourquoi
Chaque PNJ tourne dans un seul jeu, celui de son propriétaire, et chacun des autres jeux en montre une copie qui rejoue ce que fait le propriétaire.
La santé du héros est aussi tombée à zéro dans l’autre jeu, et ce jeu a mis sa copie à terre de lui-même, en la laissant s’effondrer, inerte, comme une poupée de chiffon. Le héros du propriétaire n’était pas tombé de cette façon. À partir de là, chaque action rejouée depuis le propriétaire écrivait aussi l’état du propriétaire par-dessus celui de la copie, y compris la partie qui dit si un corps est étendu au sol. Celui du propriétaire ne l’était pas, donc on disait à la copie qu’elle ne l’était pas non plus.
Une copie ne fait pas tourner la mise à jour propre au jeu ; c’est son propriétaire qui s’en charge. La partie du jeu qui remet sur pied un corps tombé ne tournait donc jamais pour la copie. Quand le héros du propriétaire s’est relevé, la copie a refusé le « relève-toi » qu’on lui envoyait, parce que du point de vue de ses animations, elle n’était pas dans l’état auquel « relève-toi » met fin.
Puis le héros du propriétaire est reparti, et la copie a été déplacée à sa suite, à chaque image, toujours à plat sur le sol.
Ce qui a changé
Une copie garde désormais son propre état « étendu au sol ». Tant qu’elle est au sol, elle fait tourner la mise à jour du jeu, si bien qu’elle se relève comme n’importe quel corps mis à terre, et elle n’est pas déplacée avant d’être debout. Si son relèvement se fait toujours attendre une seconde et demie après que son propriétaire s’est relevé, le mod le déclenche lui-même.
Le test qui ne testait rien
Nous avions déjà un test pour ça, et il passait. Il faisait mettre un bandit à terre par le jeu, puis le relever, en enregistrant le tout, puis notre bot rejouait cet enregistrement sur un bandit à lui, pour que la copie de ce bandit dans le jeu reçoive les vraies actions.
Sauf qu’elle n’en recevait aucune. Les bandits viennent d’une liste, et la copie du bandit du bot avait tiré un autre bandit de cette liste, d’une autre race. Le mod traite une copie d’un autre type comme une autre créature et ne rejoue sur elle aucune des actions du propriétaire, parce qu’elles ne lui iraient pas. La copie restait simplement debout, si bien que « il s’est relevé » n’était vrai que parce qu’il n’était jamais tombé.
Le test utilise désormais un PNJ nommé, qui n’est pas tiré d’une liste, et il vérifie que la copie est du même type. Lors de sa première exécution honnête, avec la moitié du correctif en place, la copie est restée étendue jusqu’au bout, sans glisser. Avec le reste du correctif, elle se relève au bout d’environ cinq secondes, et bouge d’une dizaine de centimètres pendant qu’elle est au sol.
État
Dans la build que nous testons. Pas encore vu en vraie session ; ce sera dans la prochaine release.