Fortnite

À propos des performances de FNBR

30.10.2017
Les performances d'un jeu sont très importantes. Bien que nous ayons réussi à améliorer certaines choses petit à petit, nous sommes conscients que tout n'est pas à la hauteur de nos exigences à long terme.

Du point de vue des joueurs, les problèmes liés aux performances du jeu sont les suivants :

Client
  • Rafraîchissement de l'image faible : augmentation de la latence des commandes, beaucoup d'écart entre deux images.
  • Latence de l'affichage : augmentation de la latence des commandes.
  • Saccades (images persistant trop longtemps) : l'image se fige puis accélère brutalement.
  • Rafraîchissement de l'image inconstant : rend la visée difficile.

Serveur
  • Faible taux d'actualisation de la connexion : augmente le ping.
  • Saccades (images persistant trop longtemps) : effet de « rubber banding » (voir ci-dessous).

Réseau
  • Perte de paquets : effet de « rubber banding ».
  • Saturation de la bande passante : effet de « rubber banding ».
  • Ping élevé : effet de « rubber banding ».
  • Optimisation de bande passante par bombardement de paquets, ou « packet bursting » (surtout en Wi-Fi) : effet de « rubber banding ».

Le « rubber banding » est l'effet provoqué par un décalage entre le client et le serveur, ce qui entraîne des ajustements brutaux : par exemple, un joueur en train d'avancer se retrouve brutalement replacé à une position précédente, les interactions avec les portes ne sont pas spontanées, etc.

Le « rubber banding » peut être entraîné par de nombreuses sources, et par d'autant plus de causes fondamentales. Par exemple, nos serveurs peuvent subir des saccades à cause du code réseau, des autres serveurs présents sur la même machine (problème dit de « noisy neighbor », voisin bruyant) ou des problèmes de matériel et de système d'exploitation de l'hôte entraînant une dégradation des performances, mais pas de véritables pannes pour autant (ce qu'on appelle des « gray failures » en anglais).

Votre connexion à nos centres de données est tout d'abord affectée par l'endroit où ils se situent et par votre ping par rapport à eux, mais le ping peut aussi être grandement affecté par le chemin emprunté par les paquets de données. L'utilisation du Wi-Fi peut aussi entraîner de la latence et des pertes de paquets.


Voici ce que nous faisons ou ce que nous devons faire en termes d'analyse réseau :
  • Analyser les performances du client pour différents types de processeurs, classés par résolution et par paramètres graphiques, pour comprendre l'impact de nos changements.
  • Analyser les saccades du client, en pondérant avec l'impact sur l'expérience des joueurs.
  • Sur le client, analyser les paquets réseau reçus du serveur (et le délai entre deux), et faire de même sur le serveur avec les paquets reçus du client.
  • Analyser les performances du serveur et le nombre d'images perdues. Notre objectif principal est de tourner de manière constante à 20 Hz.
  • Agréger et analyser les performances des serveurs par machine virtuelle pour identifier celles qui sont défaillantes et les retirer de la boucle.
  • Analyser le ping et les pertes de paquets par région et par FAI, afin de détecter les anomalies et les faire remonter.
  • Analyser les situations qui entraînent des cercles vicieux. Par exemple, produire davantage de trafic du fait d'une bande passante limitée ou de la perte de paquets, ce qui ne fait qu'empirer les choses.


Voici ce que nous devons faire en termes de développement :
  • Améliorer les performances sur les machines faiblement puissantes (Nvidia GTX 460, Radeon HD 5570, Intel HD 4000). Les choses ont un peu empiré de ce côté-là ces derniers temps, mais nous avons commencé à régler le problème dans la version 1.8. Ce n'est qu'un début.
  • Régler les problèmes de processeur sur PC et continuer à collaborer avec les fabricants tels que Nvidia, AMD et Intel pour améliorer les performances et la stabilité.
  • Améliorer la latence des contrôles sur console. Des améliorations ont été apportées dans la version 1.8, alors dites-nous ce que vous en pensez.
  • Continuer à améliorer les performances sur console. Nous analysons le pourcentage de synchronisations verticales ratées, avec comme objectif de rester sous les 2% d'images affectées.
  • Réduire les saccades pendant les parties. Une saccade correspond à une image qui a pris plus de 60 ms, et qui est donc zappée. Notre objectif est que cela se produise moins d'une fois par minute, en essayant d'éliminer entièrement les saccades au-delà de 100 ms.
  • Corriger les saccades restantes sur les serveurs dédiés. Par exemple, les joueurs qui attendent longtemps avant de sauter du bus peuvent entraîner du « rubber banding » pour les autres dès le début de la partie.
  • Optimiser les performances du serveur pour les actions de base, par exemple subir des dégâts.
  • Identifier les sources de saccades qui sont limitées à la première heure après le lancement d'une mise à jour.
  • Optimiser notre serveur et notre code réseau afin de faire en sorte qu'à chaque image, votre état soit transmis aux 100 autres joueurs. Actuellement, pour chaque image, votre état est transmis à 25 personnes dans le salon et à 50 pendant la partie. Cela signifie que l'expérience de jeu n'est pas optimale tant qu'il y a plus de 50 joueurs en vie. C'est un changement majeur qui accompagne d'autres optimisations.
  • Améliorer notre traitement des cas extrêmes (qui peuvent entraîner des cercles vicieux).
  • Améliorer notre système de matchmaking afin de diriger le trafic de manière dynamique vers les centres de données d'une région en se basant sur votre localisation. L'idée est d'optimiser le ping sans vous retirer la possibilité de jouer avec vos amis.
  • Recruter des gens motivés à l'idée de relever ces défis techniques.


Voici les choses que vous pouvez éventuellement traiter de votre côté :

Vérifier si les pilotes de votre carte graphique sont à jour. Si ce n'est pas le cas, mettez-les à jour.

Nos serveurs tournent actuellement sur des centres de données d'AWS un peu partout dans le monde. Vous pouvez consulter http://www.cloudping.info/ pour vérifier votre ping par rapport à eux.
  • Amérique du Nord - Virginie, Ohio
  • Europe - Francfort, Londres
  • Océanie - Sydney
  • Brésil - São Paulo
  • Asie - Tokyo

Riot Games a lancé www.lagreport.com, une très bonne source d'informations sur les FAI. Il se peut que cela ne corresponde pas exactement aux spécificités de Fortnite.

Si vous jouez en Wi-Fi et si vous avez la possibilité de passer à une connexion filaire, nous vous y invitons, car cela peut réduire la latence, la perte de paquets et le « packet bursting ».

Les paramètres de votre téléviseur peuvent aussi affecter la latence. Il existe des guides expliquant comment les ajuster au mieux. Voici un exemple (en anglais).

Sur PC, vous pouvez utiliser des articles tels que celui-ci (en anglais) pour vérifier si vous n'avez pas des programmes de fond qui consomment trop de ressources.