2e chronique sur la cohérence du gameplay dans VALORANT

L'équipe Gameplay de VALORANT revient vous donner des nouvelles de son approche de la cohérence entre les parties.

Re-bonjour ! Nous sommes l'équipe Technologie du gameplay de VALORANT et nous venons avec la deuxième partie des résultats de nos recherches et les mesures prises au service de la cohérence du jeu.

Si vous avez besoin d'un rappel sur le résumé des retours que nous avons reçus, lisez notre article précédent qui date du mois dernier. Nous y parlions des catégories générales dans lesquelles nous pouvions ranger vos impressions et, rapidement, des domaines que nous comptions explorer (latence, justesse et performances des joueurs au ping élevé).

Maintenant que les questions « quoi » et « pourquoi » sont résolues, nous voulions vous parler aujourd'hui en détails des principaux domaines dans lesquels nous avons progressé : la latence et la mémoire tampon. Nous allons vous expliquer en quoi ces deux paramètres sont importants dans le contexte de VALORANT, analyser avec vous les résultats de nos recherches, puis parler des solutions trouvées et des mesures prises pour le long terme.

Voici un bref résumé de ce qui sort déjà avec le patch 4.10 :

  • Nous avons repéré et corrigé quelques problèmes qui survenaient suite à des pics d'instabilité du réseau Internet, à des pertes d'images par seconde dans le client, après une commande Alt+Tab ou à cause d'un réseau en dents de scie sur de longues périodes.
    • Cela entraînait chez les joueurs touchés une sensation de retard cumulé dans le calcul de leurs actions par le serveur, ou un décalage du déplacement des ennemis à l'écran.
  • Le patch 4.10 contient des mises à jour qui devraient améliorer le comportement de la mémoire tampon du réseau dans ces situations. Nous mettons également à disposition des joueurs les données qui permettent de comprendre ce qui se passe sous le capot.
  • Cette correction résout ce que nous avons identifié comme la cause principale du sentiment d'incohérence de latence du réseau et des temps de réaction entre les parties, mais nous gardons un œil dessus pour continuer à faire mieux.
    • Si vous rencontrez toujours des problèmes en jeu, nous espérons que les nouveaux graphiques vous aideront à quantifier et mesurer ce qui se passe.

LATENCE ET MÉMOIRE TAMPON

Dans notre précédent article, nous disions que nous étions toujours en train d'enquêter sur la latence et les performances de la mémoire tampon dans VALORANT. Nous sommes depuis arrivés à une conclusion, et nous pouvons implémenter des corrections à quelques problèmes identifiés dans le patch 4.10.

Avant d'aller plus loin, il est sans doute utile de préciser ce que nous entendons quand nous parlons de « mémoire tampon du réseau » et de « calcul des retards ».

Dans les jeux en ligne comme VALORANT, vous envoyez vos commandes au serveur pour qu'il les exécute, puisque c'est lui qui a la vision réelle du jeu. Chaque fois que le serveur réactualise sa simulation du jeu (ce qui arrive 128 fois par seconde), la commande que vous avez envoyée depuis le client doit être exécutée pour votre agent. Si votre commande subit un retard pendant son trajet par Internet, le serveur ne va pas attendre qu'elle arrive et devra simuler une action à votre place.

Or, ce que le serveur prévoit pour vous est souvent en désaccord avec votre commande qui tarde à arriver. Ce désaccord provoque des corrections qui se matérialisent dans votre vision par de petites téléportations vers la position correcte. Si ces corrections arrivent trop souvent, elles rendent le jeu « saccadé » voire, à partir d'un certain seuil, injouable.

Le moyen d'éviter que le serveur choisisse à votre place est de lui faire stocker quelques commandes en mémoire tampon et de les lui faire exécuter avec un peu de retard. C'est une stratégie très répandue quand on essaie de faire voyager n'importe quelle donnée par Internet, et qui permet de garantir que le serveur exécutera les commandes de votre agent sans accroc à chaque image. Néanmoins, cette mise en mémoire tampon crée un délai le temps que le serveur analyse vos commandes, et un usage excessif de cette méthode peut donner l'impression que vous jouez avec un ping bien plus élevé que ce qu'affiche votre Network Round Trip Time (RTT, soit le temps que met un signal à faire le tour complet du réseau).

Déterminer la bonne quantité de stockage en mémoire tampon est un exercice d'équilibriste essentiel. Laissez trop peu d'espace dans la mémoire tampon et vous vous retrouvez avec beaucoup de commandes prévues par le serveur et de corrections a posteriori. Autorisez-en trop et vous obtenez une forte latence qui vous rend vulnérable à des failles comme l'avantage de l'attaquant, par exemple. Si l'on parvient au juste équilibre, alors VALORANT devient à la fois fluide et réactif.

De la même façon que le serveur stocke vos commandes en mémoire tampon avant de les exécuter, votre client doit également stocker l'information des actions ennemies avant de pouvoir les afficher à l'écran. Cela évite que les joueurs adverses semblent se téléporter autour de vous quand vous avez une mauvaise connexion, au profit d'une vision fluide et plus facile à suivre de leurs mouvements.

NOS RECHERCHES

Une partie de nos recherches visait à avoir une vision précise des performances de cette mise en mémoire tampon.Nous avons mis au point un nouvel outil de débugage pour observer combien de temps les commandes mettaient à passer dans chacun des tampons. Grâce à cet outil, nous avons fait des expériences pour examiner si certains scénarios perturbaient le comportement de certains tampons de commandes.

Nous traquions notamment un problème rapporté par les joueurs qui signalait un retard important dans le calcul des tirs après un Alt+Tab. Faire passer le jeu en arrière-plan alors que le paramètre d'IPS d'arrière-plan est sur sa valeur limite provoque un plus large problème de performance en forme de goulot d'étranglement pour les images. Quand on réaffiche le jeu, le brusque saut d'IPS risque d'agrandir considérablement la file d'attente des commandes envoyées au serveur. Du point de vue du joueur, cela donnerait l'impression de jouer avec un ping très élevé qui n'est pas traduit dans les graphiques actuels de RTT du réseau.

Nous avons aussi remarqué que l'on obtenait le même effet en simulant un bref pic de ping sur le client. La chute brutale d'un ping élevé à un ping bas provoque un entassement dans la file d'attente du serveur pour le client en question. La hausse brutale d'un ping bas à un ping élevé provoque un entassement dans la file d'attente du client pour les autres joueurs. Dans tous les cas, cet entassement de commandes dans les files d'attente cause une latence apparente plus élevée jusqu'à un retour à la situation normale.

Dans ces deux scénarios, l'ancien système arrivait finalement à résoudre les problèmes et ramener les tampons à leur taille normale, mais nous avons remarqué qu'il prenait pour cela parfois plus de temps que voulu pour s'en remettre totalement, ce qui menait à ce que la latence effective du réseau soit plus longue que prévue.

Nous avons donc apporté deux corrections qui devraient soulager ces surcharges bien plus vite, afin que vous ne subissiez la latence supplémentaire que sur les quelques images nécessaires à la fluidification de l'expérience.

CORRECTIONS ET AMÉLIORATIONS

La première correction que nous avons apportée ajuste la vitesse à laquelle les tampons reviennent à leur taille normale quand quelque chose provoque un gonflement. Nous avons donné au système de calcul des commandes la capacité de s'adapter plus énergiquement si la taille du tampon augmente.

Ainsi, l'entassement des commandes stockées est géré bien plus vite qu'avant. Par exemple, avant cette mise à jour, si 5 commandes étaient en attente dans le tampon, il fallait jusqu'à 5 secondes pour revenir à la taille normale. Avec cette nouvelle amélioration, il ne faut plus qu'une seconde voire moins. Cela signifie que si vous subissez des événements perturbateurs, comme des sautes ou des trous dans le réseau, vous aurez à supporter bien moins longtemps la latence induite par la mise en mémoire tampon de vos commandes.

En revanche, dans les cas graves, l'entassement peut devenir si conséquent qu'il vous faudra toujours attendre quelques secondes pour que le système arrive à tout calculer, même avec la nouvelle correction. Quand cela arrive, nous forçons maintenant une réinitialisation du tampon, en effaçant toutes les commandes sauf la dernière. Cela à le mérite de supprimer immédiatement toute latence, mais provoque à coup sûr une correction a posteriori.

Nous avons découvert qu'en cas d'événement fortement déstabilisant comme une perturbation dans le taux d'images par seconde ou des trous dans le réseau, il était préférable d'opter pour une correction postérieure de la commande prévue plutôt que d'attendre plusieurs secondes que la mémoire tampon soit traitée. Il est finalement moins gênant de s'accommoder d'une correction dans ce cas-là que d'endurer la période de latence plus longue induite par l'ancien système. Le genre d'événement qui peut provoquer la nécessité d'une telle correction peut être de revenir au jeu après avoir fait Alt+Tab quand les IPS limites de l'arrière-plan sont sur le paramètre bas. Cela provoque un changement très brutal du taux d'images par seconde et peut conduire à la surcharge problématique, qui sera désormais résolue rapidement.

Nos recherches sur la mémoire tampon ont aussi mis en évidence un problème conjoint : les joueurs dont le réseau est constamment saccadé changeront régulièrement la taille idéale de leur mémoire tampon parce que le système essaie d'équilibrer leur latence avec le nombre de commandes prévues par le serveur. Nous travaillons sur un moyen de mieux déterminer la taille idéale de la mémoire tampon en prenant en compte ce genre d'instabilité continue du réseau.

ET MAINTENANT

Notre travail sur la mise à jour ci-dessus nous a fait remarquer que vous n'aviez pas de moyen efficace de vous représenter les retards actuels dans le calcul des commandes. Or, puisque les graphiques que nous utilisions en interne permettaient de suivre ces problèmes clairement, nous avons ajouté un nouveau graphique de performance appelé RTT réseau + délais de traitement qui représente le temps que mettent les informations à faire le tour de votre réseau, avec le retard de calcul au niveau du serveur et du client.

Le temps ainsi mesuré par le graphique devrait être peu ou prou équivalent à ce que vous ressentez avec le bon vieux « test du couteau ». Quand tout va bien, le graphique doit vous sortir une valeur autour de 20 à 30 ms supérieure à votre RTT réseau (même si la valeur idéale dépend des conditions exactes de votre réseau et du taux d'IPS).

De plus, nous vous fournissons aussi un graphique de l'instabilité de votre RTT réseau qui vous montrera les différences de temps de trajet entre paquets. Ce sont souvent les pics de ping et les perturbations de réseau qui causent le stockage des données dans la mémoire tampon, c'est pour cela que nous vous fournissons ce graphique. Il devrait vous aider à diagnostiquer les mauvaises conditions de réseau qui n'apparaissent pas dans la représentation classique du RTT réseau à cause du lissage.

Nous avons aussi mis en place des outils de mesure supplémentaires qui nous serviront à récolter des données sur les retards de calcul que vous subissez réellement d'une partie à l'autre. Nous allons analyser ces résultats régulièrement pour surveiller de près la santé du jeu et vérifier que les solutions dont nous venons de parler ont les effets attendus ou si nous devons chercher d'autres façons de corriger ces problèmes.

Enfin, même si nous lisons vos publications sur les différents réseaux sociaux, nous voulons mettre à profit nos différentes enquêtes post-parties pour entrer plus en détails dans votre perception de la qualité des matchs, notamment en ce qui concerne votre connexion et la précision des tirs. Nous allons donc ajouter quelques questions et en reformuler d'autres pour intégrer ces domaines.

LES PROCHAINES MISES À JOUR

Nous espérons que cette amélioration des tampons de calcul des commandes permettra de réduire une partie de l'incohérence ressentie malgré un ping normal. Si vous rencontrez toujours des problèmes en jeu, nous espérons que les nouvelles informations disponibles sur l'instabilité du réseau et le retard de traitement grâce aux graphiques vous aideront à quantifier vos impressions et à en diagnostiquer les causes probables. Si vous subissez des décalages alors que vous enregistrez vos parties, afficher ces graphiques vous fournira un moyen supplémentaire d'identifier les points à étudier.

Nous terminons cette chronique en remerciant chaleureusement toutes celles et ceux qui ont posté des vidéos et des analyses détaillées de ce qu'ils ont ressenti ou vu. Nous sommes touchés par votre amour du jeu et les efforts que vous déployez pour le rendre meilleurs. Comme toujours : nous prenons vos retours très au sérieux.

Nous allons publier prochainement un nouvel article pour parler du choix des serveurs et de son rapport avec les performances des joueurs au ping élevé.