Pourquoi le mode Terrain de jeu a rencontré beaucoup de problèmes et comment Epic Games a réussi à les corriger

Gaston Cuny

Avant de sortir complètement le mode de jeu temporaire Terrain de jeu, Epic Games a rencontré de nombreux problèmes.

En effet, après une très brève apparition, Epic Games avait décidé de l’enlever car il causait trop de problèmes aux serveurs en général. 

Aujourd’hui, Epic Games s’est livré sur les différents problèmes qu’ils ont rencontré en expliquant comment ils sont arrivés, comment ils ont été corrigés et ce qu’ils ont appris.

Par L’équipe Fortnite

Bonjour à toutes et à tous !

Nous avons lancé notre mode temporaire Terrain de jeu le 27 juin vers 10 heures du matin (heure française). Peu de temps après, notre service de matchmaking a enregistré une surcharge qui a entraîné la défaillance non seulement de Terrain de jeu, mais aussi des modes normaux. Nous avons fait en sorte de rétablir le service et avons pu finalement lancer le mode dans la nuit du 2 au 3 juillet.

Que s’est-il passé ?
Notre système de matchmaking est bâti sur un « Matchmaking Service » (ou MMS), qui est responsable de la bonne liaison entre les joueurs cherchant à rejoindre une partie et un serveur dédié disponible capable d’accueillir cette partie. Chaque nœud dans la grappe de serveurs de matchmaking héberge une longue liste de serveurs dédiés, distribués aléatoirement selon les régions afin qu’il y ait toujours un nombre à peu près proportionnel de serveurs libres pour chacune d’elles. Les joueurs qui se connectent au MMS envoient donc une demande de serveur pour leur région, puis le MMS assigne le joueur à un nœud, et enfin le nœud sélectionne dans sa liste un serveur libre pour la région demandée.

Le mode Terrain de jeu créant des parties pour 1 à 4 personnes au lieu de 100, il nécessite la création d’entre 25 et 100 fois plus de parties que dans le cas des modes normaux. S’il nous était possible d’héberger des serveurs virtuels plus étroits pour chaque processeur physique spécifiquement pour Terrain de jeu, cela aurait tout de même nécessité 15 fois plus de serveurs que pour les autres modes. Nous avons pu mobiliser la totalité de la capacité des serveurs, mais cela signifiait que la liste que chaque nœud devait gérer était soudain 15 fois plus longue elle aussi.

Quand un nœud de MMS n’arrive pas à trouver un serveur libre pour la région demandée dans sa liste, il doit demander aux autres nœuds de lui en trouver un en consultant leurs propres listes. Un nœud dont la liste est soudain 15 fois plus longue est forcément ralenti. Alors quand on doit aller consulter toutes les autres listes qui sont elles aussi 15 fois plus longues, cela ralentit jusqu’à 15 fois chaque nœud et entraîne des temps de calcul plusieurs fois plus élevés que la normale. Quand nous avons lancé Terrain de jeu, la demande a été si écrasante qu’elle a épuisé les listes locales des nœuds de MMS bien plus rapidement que le système pouvait les actualiser. Chacun des nœuds envoyait aux autres des demandes de serveur supplémentaires alors qu’aucun d’eux n’était disponible, ou en tout cas cela prenait beaucoup de temps pour en trouver un dans les listes non locales. Le long délai de calcul a fait que le processeur se retrouvait avec une liste de requêtes en attente, entraînant une boucle qui a finalement débouché sur l’interruption du système.

Comment avons-nous réglé le problème ?
Après avoir désactivé le mode, la première chose que nous avons faite a été d’isoler le MMS de Terrain de jeu afin qu’il fonctionne sur sa propre grappe de serveurs. C’était indispensable non seulement pour éviter que la surcharge de trafic affecte les modes de jeu normaux, mais aussi pour nous permettre de modifier et de corriger le service aussi souvent que nécessaire le temps de travailler à la remise en ligne de Terrain de jeu. Nous avons tenté des restructurations de plus en plus majeures de l’architecture réseau et avons effectué des tests à chaque étape afin d’atteindre une situation suffisamment satisfaisante pour relancer le mode.

Une fois que nous avons identifié le problème – l’épuisement des sessions des listes locales –, la solution a consisté à donner à la grappe de serveurs la capacité de rééquilibrer les sessions des autres nœuds afin de contourner la nécessité des recherches répétées. En faisant en sorte que le système transfère en permanence les capacités régionales des nœuds avec un excédent vers les nœuds peu remplis, les chances de tomber sur un nœud épuisé dans une région précise et d’avoir à chercher en dehors de sa liste locale ont été grandement réduites. Bien que les modes de jeu classiques de Fortnite Battle Royale ne connaissent pas un tel problème actuellement, nous allons intégrer cette amélioration sur la grappe de serveurs MMS principale, afin de nous assurer que le système soit préparé à ce que l’avenir réserve.

Nous avons poussé le processus de redistribution de la charge jusque dans ses limites lors de la restructuration du MMS, car ce que nous tentions de simuler dépassait de très loin l’ampleur des usages habituels ou des modèles de test. Nous avons dû simuler des millions d’utilisateurs théoriques et les balancer sur notre système de MMS pour Terrain de jeu afin de créer un gigantesque raz-de-marée capable d’éprouver les limites de notre nouveau système de rééquilibrage des sessions. Le cycle d’évaluation prenait plusieurs heures par boucle, mais cela nous a permis de peaufiner le comportement du système de redistribution jusqu’au point où nous le pensions capable de gérer le trafic. Nous avons aussi pu identifier et corriger des bugs inattendus qui auraient pu couper court à nos efforts pour tenter de remettre Terrain de jeu en ligne.

Qu’avons-nous appris ?
Pour faire court, nous avons beaucoup appris sur le fonctionnement de notre système de matchmaking ainsi que sur ses fragilités. En prenant en compte notre nombre de joueurs (avec une marge acceptable), nous avons évalué ce que nous pensions être la limite maximale de capacité de traitement du système de matchmaking, mais cela ne nous a pas permis d’anticiper le problème provoqué par l’afflux initial de joueurs qui a entraîné le tarissement des listes locales.

Lorsque le mode a été relancé, nous avions donc acquis de l’expérience. Nous avons choisi de réactiver progressivement Terrain de jeu dans certaines régions et sur certaines plateformes dans le but de réduire la surcharge initiale du système et de le remettre en fonction étape par étape. Mais en faisant cela, nous avons encouragé exactement l’inverse, car les joueurs changeaient volontairement de région pour se placer dans celles où le mode était réactivé, ce qui nous a contraints à ralentir le lancement du fait des problèmes de capacité que cela entraînait. D’un autre côté, cela nous a donné une bien meilleure visibilité qu’avant sur les ressources totales sur le cloud dont nous disposons en Asie. Nous aimerions donc dire un grand merci à nos partenaires spécialisés dans le cloud, qui nous ont aidés à nous adapter le plus vite possible !

La remise en service de Terrain de jeu sous une forme stable a été plus difficile que nous l’aurions souhaité, mais cela nous a plus que jamais rappelé à quel point les systèmes fondés sur une redistribution complexe peuvent avoir des comportements inattendus. Nous avons été contraints de procéder en urgence à des améliorations majeures de notre système de matchmaking, mais ces changements seront finalement bénéfiques pour le jeu au fur et à mesure que le nombre de joueurs continuera à croître.

Source : Epic Games

À Propos De L’Auteur

Gaston est rédacteur gaming et notamment Pokémon pour Dexerto depuis 2018. Il a également participé à la rédaction d'articles en anglais pour EarlyGame. Pendant son temps libre, il apprécie passer du temps sur différents types de jeux, dont Fortnite, EA FC ou encore Hearthstone. Si vous voulez le contacter, vous pouvez le solliciter via [email protected].