Que seraient les championnats du monde sans un petit bug qui vient dire bonjour ? Probablement toujours les championnats du monde, mais il y a chaque année un petit quelque chose qui vient perturber le déroulement de la compétition. L'an dernier avec Gragas et son fût roulant (A/Q) qui disparaît pendant le match EDG vs FNC, forçant Riot à désactiver le champion, ce dernier ne pouvant plus utiliser la compétence à la suite du bug, l'année précédente avec l'affaire du rappel de Kha'Zix et du déclenchement de l'effet homeguard malgré des dégâts subit avec l'artillerie vivante (Ultime) de Kog'Maw une fraction de seconde avant la fin du rappel pendant le match FNC vs OMG, et cette année donc, avec l'Aurelion Sol de Xiaohu, et des étoiles invisibles pour Bjergsen, pendant le match TSM vs RNG.
Si les bugs sont malheureusement toujours de la partie cette année, Riot a heureusement comme d'habitude publié une annonce expliquant ce qu'il s'est passé. Une chose qui est la bienvenue, et qui a été réalisée par Penrif.
Un problème complexe
Du point de vue du joueur, le problème est simple, les étoiles gravitant autour d'Aurelion Sol étaient invisibles. Mais d'un point de vue technique, c'est bien plus complexe. Il faut donc se plonger un peu dans les détails et dans le fonctionnement d'Aurelion Sol pour comprendre ce qui n'allait pas.
Les étoiles d'Aurelion Sol ont pour cible... Aurelion Sol. D'habitude, la cible d'un projectile est l'objet sur lequel il atterrit, mais dans le cas des étoiles d'Aurelion Sol, Riot utilise cette information de ciblage pour définir autour de quelle unité les étoiles doivent tourner. Toutefois, pour le client de jeu, il peut survenir un problème. Les étoiles d'Aurelion Sol sont visibles même lorsque lui ne l'est pas, car caché dans les buissons (Un fonctionnement normal, pour rappel). Et lorsque le client de jeu reçoit comme un information un projectile qui vise une cible qui n'est pas visible, il crée un objet temporaire (Aussi appelé "Placeholder") pour indiquer qu'il n'a pas l'information concernant la cible en question. Cela évite que le jeu n'utilise une information qui n'est plus valable sur une cible qui existe pour lui, mais n'est pas visible.
Lorsque les étoiles d'Aurelion Sol peuvent être vues, mais que lui ne peut pas l'être, il y a un mécanisme qui fait que le serveur envoie la position d'Aurelion Sol au client de jeu, de sorte à ce que la trajectoire des étoiles puisse être simulée correctement, et qu'elles apparaissent au bon endroit. Ce procédé est appelé "Synchronisation secondaire", et Riot a rencontré quelques problèmes avec les étoiles apparaissant au mauvais endroit parfois. Un problème corrigé en faisant en sorte que les étoiles restent invisibles jusqu'à ce que l'information de la position d'Aurelion Sol arrive jusqu'au client de jeu. Une chose qui peut aussi se produire avec la synchronisation secondaire, ou si Aurelion Sol devient visible.
La dernière chose à savoir est que le client de jeu qui permet de regarder les parties dans la compétition n'est pas configuré de la même manière pour les joueurs que pour les grandes compétitions. Lorsque vous regardez une partie, vous n'êtes pas connecté directement au serveur de jeu, mais à un service qui récupère les données du serveur de jeu, et qui est capable de les diffuser à une large audience, et avec un délai. Ce n'est pas idéal pour une diffusion de compétition, donc le mode spectateur utilisé pour les grandes compétitions dispose d'un mécanisme spécialement conçu qui permet de se connecter directement au serveur de jeu.
La cause du problème
Maintenant que vous savez comment tout cela fonctionne, vous devriez comprendre l'origine du problème. Pour déterminer si le système de synchronisation secondaire vu plus haut doit être actif ou non, le jeu cherche le statut des 12 clients de jeu connectés à la partie. Ils sont organisés par l'ID du compte, peu importe s'il s'agit d'un joueur, ou d'un spectateur. 12 étant le nombre maximum de joueurs dans une partie de League of Legends (Pensez au mode Hexakill), c'est un nombre normal à vérifier pour la synchronisation secondaire.
Le problème, c'est que le jour où le bug s'est produit, tous les comptes spectateurs utilisés étaient plus anciens que les comptes des joueurs. Cela a eu pour effet que les comptes des spectateurs avaient un ID de compte plus faible, les plaçant en tête de la liste des vérifications pour la synchronisation secondaire, devant les comptes des joueurs. Et en suivant la logique des 12 clients au maximum, la synchronisation secondaire ne s'est appliquée qu'aux spectateurs, qui étaient plus de 12. Synchronisation secondaire qui est par ailleurs inutile pour les spectateurs, ces derniers voyant tout. Ainsi, même dans une situation où la synchronisation secondaire aurait dû être activée, elle est restée désactivée pour les joueurs. Et sans cette synchronisation secondaire, les étoiles d'Aurelion Sol n'apparaîtront plus et ne le suivront plus, une fois qu'il est rentré dans le brouillard de guerre, comme on peut le voir ici :
En soit c'est déjà un gros problème, dans la mesure où le joueur n'a plus accès à une information cruciale. Mais cela empire ensuite. Le client de jeu s'appuie sur la synchronisation secondaire pour retrouver la cible des étoiles, qui est donc l'objet temporaire (Le "placeholder"), puisque le joueur n'a plus la vision sur Aurelion Sol. Cela place alors les étoiles dans un état où elles n'auront jamais une cible correcte. Puisque les étoiles ne sont visibles qu'avec la synchronisation secondaire, ou si la cible (Aurelion Sol) devient visible, elles sont désormais invisibles pour toujours, puisque aucune de ces conditions n'a été validée.
La résolution du problème
Maintenant que le problème est identifié, et compréhensible, il peut être corrigé. Toutefois, il y a un risque significatif à déployer une nouvelle version du jeu pendant un évènement en cours. Aussi, Riot préfère contourner le problème à la place. En utilisant des comptes spectateurs qui sont plus récents que les comptes des joueurs, le problème peut être évité, et les tests menés par Riot ont démontré que c'était une solution viable, et bien moins risquée qu'un correctif.
Un correctif sera toutefois déployé plus tard, dans les patchs à venir, de sorte à ce que ce contournement ne soit plus nécessaire. En attendant, Aurelion Sol a pu faire son retour au 4ème jour des phases de groupe !
L'avis de Philidia :
Petite info bonus pour commencer, ce problème est différent de celui qui s'est produit - avec les mêmes effets cependant - plus tôt cette année, et qui était déjà corrigé au moment du match TSM - RNG.
Concernant le bug lui-même, on a un nouvel exemple de la complexité d'un jeu comme League of Legends. Pour qu'un ID de compte puisse changer l'affichage de la compétence d'un champion, avouez que ça va chercher loin ! Et cette complexité fait que malheureusement, même avec tout un plan de test, on ne peut pas déceler tous les bugs. Il est dû ici au traitement particulier des comptes, et au mode spectateur de grande compétition. Autant dire que ce n'est pas quelque chose qu'on pense forcément à tester. Et si Riot faisait des tests aussi poussés, il serait surement difficile d'avoir un patch toutes les deux semaines.
Heureusement pour cette fois, le bug est facile à contourner et ne demande pas la désactivation du champion. Espérons que ce sera le seul des championnats du monde de cette année ! La compétition est prometteuse, et si les performances de l'Europe sont au moment de cet article bien mauvaises, on ne peut que respecter certaines équipes comme CLG pour avoir battu l'un des favoris de la compétition (ROX Tigers), ou Flash Wolves pour avoir battu SKT. Une chose est sûre, ces worlds sont remplis de surprises, et intéressants à suivre.
Et en parlant de suivi, vous aurez surement un récapitulatif dans la semaine. N'ayant plus de rédacteurs eSport pour le faire, il sera de moi. Soyez indulgent, le PBE me prenant déjà énormément de temps, je n'ai pas pu voir les matchs. Donc je vais surtout lire ce qu'en pensent les analystes, regarder les Highlights, et vous pondre quelque chose à partir de ça. J'espère que ça vous plaira ! :)