Précisions concernant la stabilité de l'UEFN

Bonjour à tous,

Comme la plupart d’entre vous le savent, la récente mise à jour 32.00 de Fortnite a engendré divers problèmes de stabilité. Cela comprend de perturbations importantes, comme l’inaccessibilité au contenu de l’UEFN et du mode Créatif de Fortnite par les joueurs, l’indisponibilité de l’UEFN et du portail de créateur pour les créateurs et des bugs de certaines fonctionnalités.

Avec la version 32.10, le contenu et les outils de l’UEFN ont également connu une indisponibilité par intermittence pendant plusieurs heures pour les joueurs et les créateurs.

Ces problèmes ne sont pas acceptables à nos yeux, c’est pourquoi nous avons eu de nombreuses discussions en interne pour essayer de comprendre comment ils n’avaient pas été détectés plus tôt afin de trouver des solutions pour améliorer les choses à l’avenir.

Faire évoluer rapidement l’écosystème Fortnite tout en en assurant la stabilité et la compatibilité avec toutes les expériences et les fonctionnalités proposées est un défi de taille, mais un défi que nous nous efforçons de relever. Pour cela, nous devons apprendre de nos erreurs et en assumer la responsabilité. Nous souhaitons également être transparents quant aux problèmes majeurs rencontrés par les créateurs récemment et quant aux réponses et changements que nous allons apporter.

Dans cet esprit, vous trouverez ci-dessous la liste des problèmes majeurs rencontrés dans la version 32.xx. Chaque thème détaille le problème, sa cause, ses conséquences et les changements que nous apportons en fonction de ce que nous avons appris.

Bien qu’il ne s’agisse pas des seuls bugs de la version 32.00 et de la version 32.10, ces problèmes ont eu un impact sur tout l’écosystème et ont déclenché la procédure d’incident critique interne d’Epic.

Problème : dégradation du service de contenu (32.00 et 32.10)

Le service de contenu est notre système interne de suivi de tout le contenu créé dans le mode Créatif de Fortnite et dans l’UEFN, dont les métadonnées telles que les versions et les statuts de publication. Il sert essentiellement « d’index du métavers » et est crucial pour le bon fonctionnement de Fortnite et de l’UEFN.

À mesure que nous élargissons l’usage de l’UEFN chez Epic, nous avons en conséquence de plus en plus besoin du service de contenu.

Dans la mise à jour 32.00, les changements apportés au client Fortnite et au serveur ont malencontreusement augmenté de manière considérable le trafic du service de contenu, avec une multiplication par dix à un moment donné. Cette explosion a fait apparaître un problème qui a causé des erreurs lorsque le service de contenu a tenté de s’adapter à la charge, ce qui a ensuite eu un impact sur de nombreuses fonctionnalités de l’UEFN et du mode Créatif de Fortnite.

Nos tentatives de reconfiguration ou de redimensionnement du service ont échoué et il nous était impossible de modifier le comportement du client ou du serveur dans l’immédiat. Fort heureusement, notre équipe dédiée à la sécurité de l’écosystème a réussi à configurer notre pare-feu afin qu’il parvienne à réduire le trafic à un niveau gérable, ce qui a permis à nos services de continuer à fonctionner.

Nous nous sommes occupés du trafic surchargé du client et du serveur pour la version 32.10, mais lors de la sortie de la mise à jour, nous avons constaté un niveau de trafic naturel qui, encore une fois, dégradait les performances du service de contenu. Cette fois-ci, le service n’a pas flanché, mais l’accès aux îles créatives et aux fonctionnalités de l’UEFN a été impossible pendant plusieurs heures. Fortnite Recharge a également connu une indisponibilité pendant ce laps de temps.

Conséquences : du contenu Fortnite, dont Recharge, les pistes musicales et les îles créatives, ont été indisponibles entre 7h et 18h (CET) lors de la sortie de la mise à jour 32.00 le 2 novembre.

Le 13 novembre, jour de la sortie de la version 32.10, l’accès aux îles créatives et aux fonctionnalités de l’UEFN a été perturbé entre 13h et 19h (CET), période durant laquelle les joueurs n’ont réussi que 70% du temps à rejoindre les îles. Fortnite Recharge a également connu une indisponibilité pendant ce laps de temps.

Changements apportés : nous travaillons dur pour résoudre ce problème et pensons qu’il ne se reproduira pas d’ici la fin de l’année.

Nous allons également augmenter le nombre d’analyses du trafic du client et du serveur antérieures à la sortie des mises à jour lors des prochaines mises à jour afin de détecter en amont les problèmes introduits accidentellement.

Problème : perte de Persistance (32.00)

Peu après la restauration des fonctionnalités du service client, certains créateurs utilisant Persistance nous ont signalé que les joueurs avaient remarqué la disparition de certains types d’objets de leurs inventaires.

Notre enquête a révélé que du contenu Fortnite avait été réorganisé en vue d’une initiative future. À cause de cette réorganisation, certains objets suivis, comme les diamants, ont adopté un nouveau chemin d’accès à la ressource, les faisant apparaître dans l’inventaire comme de nouveaux objets en quantité fixée à 0. Bien que l’Unreal Engine possède un système capable de gérer les ressources déplacées (redirecteurs), un bug dans le code de Persistance a empêché que la redirection s’opère correctement.

Pour pallier ceci, nous avions deux axes prioritaires :

  1. Résoudre le problème afin d’empêcher la perte de données d’autres joueurs.
  2. Restaurer les inventaires des joueurs déjà affectés par le problème.

La première tâche a demandé la création, le test et le déploiement d’un nouveau serveur. Cela prend généralement moins de 24h mais, à cause de plusieurs facteurs, dont le désir d’y incorporer des changements pour d’autres problèmes, le nouveau serveur n’a pas pu être déployé avant le 5 novembre, 3 jours plus tard. Ce délai est, nous le reconnaissons, complètement inacceptable pour un incident d’une telle gravité.

La seconde tâche a demandé la création d’un script pour restaurer l’inventaire des joueurs ayant joué sur une île depuis la sortie de la version 32.00. Dans cette situation, la restauration peut s’avérer être un choix difficile car son impact varie selon les îles. La décision de restaurer les données ou de garder les nouvelles dépend de l’impact de la restauration et du temps qu’elle prendra.

Nous avons restauré les inventaires des créateurs qui avaient signalé un problème et avons commencé à restaurer les données des joueurs ayant joué sur ces îles le 6 novembre à 20h. La tâche s’est terminée le 7 novembre à 21h.

Changements apportés : bien que nous disposions d’un système automatisé qui nous signale la suppression des ressources, pour que les objets dans les îles créatives ne disparaissent pas, par exemple, cette automatisation ne nous a pas signalé leur déplacement. Nous allons corriger cela afin que les ressources déplacées soient également signalées.

De plus, nous réfléchissons à développer, pour les prochaines versions de Fortnite, des options d’automatisation des signalements lorsque des objets stockés dans les inventaires ne sont pas chargés, vu l’ampleur du problème et la difficulté avec laquelle nous allons devoir le régler.

Enfin, et comme nous l’avons dit précédemment, le temps de déploiement du serveur corrigé n’était pas acceptable. Nous allons améliorer ce processus.

Problème : instabilité générale du client (32.00)

Nous avons rapidement remarqué une hausse considérable des plantages du client sur toutes les plateformes.

La cause principale étant un changement apporté dans la mise à jour 32.00 afin de corriger des bugs concernant les dégâts des armes dans les zones d’altération. Ce changement a créé une situation de course dans laquelle deux fils pouvaient accéder en même temps à la même matrice. En fonction du moment et des actions des joueurs durant les réapparitions, un plantage pouvait survenir.

Puisque ces plantages se produisaient sur le client et ne pouvaient être résolus par des ajustements du serveur, nous avons été obligés de créer un patch du client sur toutes les plateformes. Il faut plus de temps pour créer des patchs du client et ceux-ci nécessitent des certifications sur certaines plateformes, c’est pourquoi la mise à jour n’a pas pu être publiée avant le samedi 16 novembre.

Conséquence : les clients de toutes les plateformes ont connu une grande instabilité avec la mise à jour 32.00.

Changements apportés : durant le développement de chaque mise à jour de Fortnite, nous traquons et résolvons les plantages détectés. Notre enquête n’a pas permis de déceler d’occurrences antérieures de ce plantage, même après de longues heures de test. Malgré l’identification de la cause, nous n’avons pas été en mesure de la reproduire en interne.

Ce problème d’échelle n’est pas nouveau. Par exemple, un plantage qui se produit 0,01% du temps ne va peut-être pas être détecté durant le développement, mais avec un million de joueurs quotidiens, il peut concerner 10 000 plantages par jour.

Afin de pallier cela, nous avons l’intention d’utiliser de plus en plus de « versions d’assainissement » pendant les phases de test. Ces versions sont plus efficaces pour détecter des problèmes d’accès à la mémoire, même si ceux-ci ne sont pas les causes principales de plantages. Même si nous ne pouvons pas savoir avec certitude que cette méthode aurait détecté les problèmes récents, il est fort probable qu’elle saura le faire à l’avenir.

Problème : plantage de l’éditeur lors du chargement des projets (32.00)

À la sortie de la mise à jour 32.00, nous avons rapidement reçu des signalements de la part de créateurs dont l’éditeur plantait lorsqu’ils tentaient d’ouvrir leurs projets. Au début, nous pensions que ces plantages étaient liés à la dégradation en cours du service de contenu, mais avons vite réalisé qu’il s’agissait d’un problème à part.

Le diagnostic du problème n’a pas été une mince affaire, car il impliquait un plantage dans le pilote graphique qui ne fournit généralement que peu d’informations sur les raisons du plantage. Une fois identifié, nous avons incité les créateurs à passer l’UEFN sur Direct3D 11 comme solution temporaire.

La cause originelle a finalement été trouvée dans les projets ayant subi un grand nombre d’avertissements au démarrage dans la fenêtre pop-up en bas à droite. Chaque message d’avertissement consommait une quantité excessive de mémoire de rendement et lorsqu’un grand nombre d’avertissements survenaient, la mémoire utilisée pouvait dépasser les limites et causer un plantage.

Heureusement, l’UEFN peut être mis à jour indépendamment de Fortnite et nous avons pu en sortir une nouvelle version dès le lendemain.

Ce qui nous a cependant frustrés, c’est que ce bug qu’un utilisateur de l’UEFN interne avait déjà rencontré dans une version antérieure à la mise à jour 32.00 n’a pas pu être reproduit par les développeurs et ainsi être réglé définitivement.

Conséquence : plusieurs centaines de plantages de l’UEFN se sont produits durant les huit premières heures de la mise à jour.

Changements apportés : lors de notre analyse à froid, nous nous sommes rendu compte que nos postes de travail étaient souvent dotés de meilleures configurations que celles des joueurs lambdas, notamment en ce qui concerne la mémoire vidéo.

Avant, nos tests de compatibilité se concentraient principalement sur « l’expérience du nouvel utilisateur » et moins sur la mise en œuvre de grands projets grâce à l’UEFN. À l’avenir, nous comptons mettre l’accent sur les phases de tests sur des machines aux configurations minimales ou similaires à celles des joueurs grâce à de gros projets internes capables d’identifier plus facilement les potentiels problèmes.

Nous espérons que cette analyse vous aidera à mieux comprendre les causes des problèmes que vous avez rencontrés depuis la sortie de la mise à jour 32.00. Fournir aux créateurs un environnement stable pour concevoir et améliorer des expériences pour les joueurs est et restera notre cheval de bataille.

Nos objectifs sont de continuer à améliorer nos systèmes et notre gestion, à être à l’écoute des problèmes que vous rencontrez et à communiquer régulièrement sur notre manière de travailler dans le but d’améliorer au maximum l’UEFN et le mode Créatif de Fortnite.

En vous remerciant !

Andrew