NETTOYAGE DU CLIENT : 2020 et suite du programme

Nous récapitulons la progression de 2020 et parlons de nos projets pour 2021.

Nous vous avons promis de vous parler régulièrement de notre travail en coulisses pour améliorer la performance et la fiabilité du client de League of Legends.

Aujourd'hui, il s'agit du sixième article de la série. (Voir le premier, le deuxième, le troisième, le quatrième et le cinquième article ici.)

Pour résumer : tout au long de 2020, nous avons amélioré le temps de démarrage du client, son architecture, la sélection des champions, l'écran de fin de partie, les fuites de mémoire, les plantages et corrigé des bugs. Nous sommes en train d'établir le planning du 1er trimestre 2021 autour de l'amélioration du panneau social et de la stabilité générale du client.


Résumé de 2020

Notre équipe s'est formée fin 2019, et beaucoup de nos premières missions consistaient à comprendre l'état du client de League of Legends. Dans le cadre de ce travail, nous avions décidé de nous concentrer sur les parties du client dont les joueurs (vous tous !) se plaignaient le plus pour déterminer les axes d'amélioration. Il nous reste du travail, mais en nous repenchant sur 2020, nous avons pu apporter des améliorations conséquentes au client.

  • Lancement de notre sondage mondial sur le client auprès des joueurs, afin de déterminer sur quoi nous devions travailler. La plupart des améliorations que vous verrez ci-dessous sont le résultat des modifications que les joueurs désiraient.
  • Nous avons porté le temps de démarrage du client à 16 secondes pour 90 % des joueurs dans le monde (contre 29,5 secondes début 2020).
    • Cela a été accompli grâce à un travail sur l'architecture, dont une réduction de 63 % des applications Ember au lancement du client, et une réduction de 57 % des plug-ins dans le client. En d'autres termes, nous avons nettoyé pas mal de code.
  • Amélioration de la réactivité et de la fiabilité de la sélection des champions lorsque vous choisissez et bannissez des champions.
    • Correction des problèmes de performance en filtrant les champions et amélioration de la grille de sélection des champions.
    • Analyse de l'utilisation de certaines fonctionnalités dans la sélection des champions. Nous en reparlerons ci-dessous.
    • Amélioration du temps pour confirmer et bannir les champions.
    • Correction de fuites de mémoire dans et autour de la sélection des champions (indiquées ci-dessous).
  • Élimination des plantages complets et des écrans noirs lorsque les joueurs reviennent via l'écran de fin de partie après la fin d'une partie.
  • Élimination des plantages lors de l'utilisation du bouton « Reconnexion » dans l'écran de fin de partie, là où il n'aurait même pas dû s'afficher.
  • 175 bugs corrigés en 2020, des petits dysfonctionnements comme des problèmes qui traînaient depuis le début.
    • Les noms des joueurs remplacés par « … » dans la messagerie.
    • La barre des tâches ne s'allumait pas lorsque vous receviez un message dans la messagerie.
    • Les nouveaux joueurs qui n'avaient pas le panneau social.
    • Les paramètres réinitialisés lorsqu'un joueur se connecte à un autre ordinateur.
    • Les notifications de cadeau répétées à la connexion.
    • Les joueurs qui revenaient vers un écran de démarrage noir après différentes actions dans le client.
  • Amélioration de la réactivité de l'onglet Collections et chacune de ses sous-parties.
  • Réduction du temps de chargement de l'onglet Runes de 40 %, interface des runes rendue plus fluide et plus fiable.
  • Élimination de 30 fuites de mémoire dans le client. C'est un domaine particulièrement difficile que nous avons découvert en fin d'année et nous sommes particulièrement heureux d'avoir pu livrer les améliorations avant les fêtes.
    • Les fuites de mémoire ont lieu lorsqu'une partie du programme oublie de vider sa mémoire après avoir terminé une tâche. Cela laisse moins de mémoire globale pour les autres programmes du système. Le cumul de ces résultats est toujours pénible, mais les causes sont souvent difficiles à détecter, surtout dans de grandes applications.
    • Avant notre premier correctif de fuite de mémoire dans le patch 10.23, les joueurs des régions Riot avaient subi 193 000 plantages de fuite mémoire lors de chaque patch. Au dernier patch de 2020, le 10.25, nous avons constaté une baisse de 55 % de ces plantages !

Comme mentionné, nous avons utilisé vos réponses dans le sondage mondial sur le client pour guider nos efforts. Les améliorations ci-dessus représentent le progrès dans les domaines dont vous vous plaigniez le plus, mais cela ne sert à rien si vous ne trouvez pas que tout va dans le bon sens. Voilà pourquoi nous sommes heureux, en plus des mesures en jeu, d'avoir constaté des tendances positives dans le sondage sur tous les domaines, ce qui signifie que les joueurs sont de plus en plus nombreux à connaître une expérience de client plus satisfaisante !

Moins frustrante. Nous avons encore beaucoup de choses à accomplir cette année et nous continuerons de vous en informer.


Fonctionnalités peu utilisées de la sélection des champions

Si vous avez eu l'occasion de lire notre article précédent, nous avions envisagé de supprimer certaines fonctionnalités peu utilisées de la sélection des champions pour améliorer la performance globale. Après avoir évalué les favoris, les missions et les emotes, nous avons décidé de n'en supprimer aucun et allons plutôt les optimiser. Nous avons déjà corrigé un problème avec les emotes et travaillons à ce que les favoris et les missions fonctionnent comme prévu.


Quel est le programme ?

Nous finissons actuellement le planning du premier trimestre, mais voici les prochains problèmes que nous souhaitons régler dans le client de League :

Panneau social

Nous avons vu une augmentation des problèmes concernant le panneau social au cours de l'an passé. En décembre, nous avons corrigé un problème avec les fenêtres d'information pour les amis en jeu, qui n'affichaient pas le type de jeu ou le champion. Voici les prochains problèmes que nous comptons régler :

  1. Panneau social non connecté
  2. Liste d'amis qui ne se charge pas, statut incorrect affiché, liste d'amis non renseignée
  3. Le joueur ne reçoit pas de demande d'ami si sa liste d'amis est pleine
  4. Les informations de classement disparaissent de la fenêtre d'information lorsqu'un joueur est dans une partie normale
  5. La messagerie tremble lorsque vous tapez des messages en succession rapide
  6. Les dossiers se réordonnent entre les sessions
  7. Les dossiers LoR et Valorant disparaissent lors des classements par « Grouper les jeux et les serveurs »
  8. Cliquer sur « Montrer les dates » dans la fenêtre de messagerie entraîne la superposition des champs de texte
  9. La notification de demande d'ami n'apparaît que lorsque l'option est désactivée et vice-versa

Nous allons abandonner un vieux cadre en Javascript (nous reparlerons de JS) et déplacer le panneau social vers des applications Ember. Cette transition est une bonne occasion de nettoyer des nœuds de problèmes dans le code, ce qui donnera davantage de fiabilité et moins de bugs.

Stabilité du client

Nous allons introduire deux nouveaux sujets d'amélioration pour la stabilité du client de League : les plantages de client et les erreurs Javascript qui peuvent avoir tout un tas d'effets, dont… des plantages de client. Au lieu de nous concentrer sur une portion spécifique du client pour ce sujet (par exemple la sélection des champions, le démarrage du client), nous adoptons une approche plus large du client. Avec le travail de stabilisation que nous prévoyons déjà, voici les quatre domaines différents :

  • Réduction des plantages : dans le patch 10.25, les joueurs des 16 régions Riot ont subi 2,2 millions de plantages du client. Après notre enquête initiale, il semble que la meilleure option pour régler la majorité des plantages soit de mettre à niveau notre version de Chromium. C'est le navigateur Internet qui sous-tend l'architecture du client de League.
  • Réduction des erreurs Javascript : dans le patch 10.25, les joueurs de 16 régions Riot ont subi 36 millions d'erreurs Javascript (JS) dans le client. Toutes les erreurs JS n'ont pas causé un plantage ou une réduction des performances, même les erreurs invisibles peuvent peu à peu se cumuler et avoir un impact plus général. La réduction de ce nombre apportera toutes sortes d'améliorations dans le client.
  • Continuer de colmater les fuites de mémoire : leur correction a été une grande réussite pour nous l'an dernier. Nous voulons continuer ce travail cette année.
  • Poursuite du travail d'architecture pour nettoyer notre base de code : pour mettre à niveau Chromium comme nous l'avons indiqué ci-dessus, nous devons accomplir toutes sortes de tâches préliminaires qui amélioreront encore la performance du client. Nous comptons terminer ce travail et lancer une mise à niveau de Chromium en milieu d'année environ.
    • La dernière fois que nous avons amélioré Chromium, nous étions en décembre 2019, quelques mois avant le début de la campagne de nettoyage du client. Cette mise à niveau nous a apporté de bons résultats (CTRL+F « Chromium ») et nous signalerons les améliorations qui suivront cette nouvelle mise à niveau lorsque nous serons sur le point de la déployer.



    Nous sommes reconnaissants pour vos commentaires au sujet du client et nous restons à l'écoute ! Nous avons passé une bonne année 2020 et nous allons conserver cet élan pour améliorer le client pour nos joueurs !