EA Play FIFA 23 F1™ 22 Madden NFL 23 Apex Legends Battlefield™ 2042 Les Sims 4 Accueil Electronic Arts Electronics Arts Home Jeux récents Prochainement Jeux gratuits EA SPORTS EA Originals Bibliothèque de jeux Offres EA app PC PlayStation Xbox Nintendo Switch Mobile Pogo EA app EA Play Tests de jeux Entreprise Recrutement Actus Technologie EA Studios EA Partners Nos engagements Jeu positif Personnel et culture inclusive Impact social Environnement Assistance Forums communautaires EA Outils parentaux et de jeu Accessibilité Presse Investisseurs Jeux récents Prochainement Jeux gratuits EA SPORTS EA Originals Bibliothèque de jeux Offres EA app PC PlayStation Xbox Nintendo Switch Mobile Pogo EA app EA Play Tests de jeux Entreprise Recrutement Actus Technologie EA Studios EA Partners Nos engagements Jeu positif Personnel et culture inclusive Impact social Environnement Assistance Forums communautaires EA Outils parentaux et de jeu Accessibilité Presse Investisseurs

Qu'est-ce qui fait la particularité d'Apex ? Plongée au cœur des serveurs et du netcode

Ricklesauceur, ingénieur en chef d'Apex Legends, parle des problèmes rencontrés par les joueurs, les causes et nos efforts pour y remédier.

Introduction

Bonjour, je suis @ricklesauceur, ingénieur en chef d'Apex Legends. Aujourd'hui, j'aimerais vous donner un aperçu de l'infrastructure en ligne que nous avons adoptée pour Apex Legends.

Par le passé, nous n'avons pas souvent parlé publiquement des serveurs, du netcode ou de l'infrastructure en ligne d'Apex Legends, c'est pourquoi nous tenons à y remédier. Pour faire court, aujourd'hui, nous aimerions :

  • Partager avec vous notre façon de travailler pour améliorer votre expérience de jeu en ligne dans Apex Legends.
  • Reconnaître et expliquer certains problèmes courants que vous pouvez rencontrer en ligne ou en vous connectant à Apex Legends.
  • Répondre aux questions les plus fréquemment posées sur des sujets comme les serveurs au ralenti, la prise en compte des coups et le fonctionnement de notre système de compensation de lag.
  • Fournir des notes complètes sur le tickrate de nos serveurs et expliquer notre réflexion vis-à-vis de ce que cela affecte ou non.

Avertissement : cet article est long car il s'agit d'une véritable plongée en profondeur dans l'infrastructure en ligne d'Apex Legends, que certains joueurs nous réclamaient depuis longtemps. 

Nous pensons qu'il s'agit là du début d'une longue conversation, alors même si nous nous efforçons de couvrir un maximum de points ici, il y a probablement beaucoup de sujets (les attaques de type DDoS, les bugs qui font planter le serveur, etc.) qui mériteraient d'être abordés plus longuement. Si vous aimez ce blog, n'hésitez pas à nous faire part de futurs sujets dont vous aimeriez discuter.

Pour ceux d'entre vous qui sont prêts à plonger dans l'univers du netcode, des serveurs, du tickrate et bien plus encore... Bienvenue ! Commençons par parler de quelques améliorations récentes que nous avons apportées.

OPTIMISATION DU TEMPS DE RÉPONSE GRÂCE À DES MESURES DE PERFORMANCE

Lors de la saison 6, nous avons introduit l'affichage des infos de performance. Voici à quoi ressemble cette fonctionnalité.

Les valeurs "Entrée" et "Sortie" représentent la bande passante utilisée par le jeu (en Ko/s). Vous pouvez aussi voir la latence en millisecondes. Le ralentissement et la perte de paquets sont affichés en pourcentage de paquets par seconde.

Ces données vous aident (et nous aident aussi) à comprendre ce qui se passe lorsque vous jouez. En d'autres termes, nous pouvons traduire ce que vous ressentez en informations concrètes et techniques.

Avant cet ajout, les joueurs nous disaient que "quelque chose" n'allait pas, sans pour autant pouvoir nous en dire plus. Maintenant, ils peuvent nous dire précisément : "J'ai une perte de paquets de 10 %, une latence de 300 ms", etc. Ça change tout, car ces chiffres sont souvent la meilleure indication possible de ce qui ne va pas. J'y reviendrai plus tard.

Tout en travaillant sur l'affichage des infos de performance, nous avons commencé à suivre les mesures-clés de performance pour les joueurs et les serveurs. Cela signifie que si quelqu'un signale un problème, nous pouvons consulter la partie et les données de chacun dans le jeu, y compris les informations sur le serveur hébergeant la partie. 

Cela a été notre première mesure concrète visant à donner à notre équipe des moyens d'analyse personnalisés et ciblés. Cette approche a eu son lot de succès, mais nous estimons qu'elle n'est pas viable sur le long terme. Pour commencer, vous devez nous contacter, puis nous devons demander à un ingénieur de voir d'où vient le problème, puis (selon le problème) de tenter de le résoudre.

Au cours des dernières saisons, nous avons commencé à compter sur l'aide de notre fantastique équipe chargée de la science des données pour rassembler et analyser jusqu'à une semaine de données à la fois, afin de détecter les problèmes de performance du serveur et de perte de paquets. Cette approche a déjà commencé à porter ses fruits. Par exemple, nous avons découvert qu'une pièce de l'équipement réseau de notre centre de données était défectueuse, ce qui entraînait des performances réseau désastreuses pour chaque partie hébergée sur les serveurs concernés. Les serveurs en eux-mêmes étaient en bon état, mais le matériel qui permettait aux joueurs de s'y connecter provoquait une perte massive de paquets. Et nous pouvons citer bien d'autres exemples de ce genre.

L'analyse systématique des données nous permet notamment de recouper des résultats et des joueurs afin de repérer des tendances dans les données. Ainsi, semaine après semaine, nous pouvons savoir avec certitude si notre flotte de serveurs se porte mieux ou non. De plus, l'analyse des données est un excellent outil pour aider nos partenaires à résoudre les problèmes qui échappent à notre contrôle. Au lieu de dire qu'il y a un problème, nous pouvons maintenant dire : "cet aspect spécifique pose problème", ce qui représente un gain de temps pour tout le monde. (D'ailleurs, vous pouvez refuser cette option si vous le désirez. Pour cela, il vous suffit de vous rendre dans "Jouabilité", puis "Partage d'utilisation" dans le menu Paramètres.) 

L'automatisation est donc très utile. Mais malheureusement, ça ne suffit pas. 

En effet, avec cette approche, nous réagissons encore trop lentement aux problèmes. Nous devons attendre une semaine pour que la plupart des données soient recueillies et signalées, puis une autre semaine pour les analyser de manière exhaustive. À partir du moment où vous constatez un problème, il peut donc se passer jusqu'à deux semaines avant que nous trouvions une solution, et encore plus pour intégrer cette solution si un patch de serveur est nécessaire.

Nous pouvons mieux faire. Et nous allons mieux faire. Penchons-nous sur les solutions.

Premièrement, en plus de notre rapport hebdomadaire, nous sommes passés aux alertes en temps réel. Cela nous donnera le même niveau d'informations, mais plus rapidement. Ainsi, nous serons en mesure de résoudre les problèmes matériels immédiatement ou de commencer notre analyse et la mise en place d'un patch. Nous comprenons parfaitement la frustration de devoir attendre, et nous mettons tout en œuvre pour réduire le délai entre une alerte et la résolution du problème.

Deuxièmement, nous allons introduire un nouvel ID de serveur unique ("SID") pour l'affichage des infos de performance, qui nous permettra de retrouver plus rapidement le serveur sur lequel vous jouez. Pour le moment, vous nous donnez une heure et une date, que nous comparons aux données que nous avons sur vous pour trouver le serveur sur lequel vous étiez en train de jouer. Nous n'aurons bientôt plus à le faire. 

Nous espérons que ces deux solutions pourront être mises en place lors de la prochaine saison, Apex Legends - Postérité. Pour les joueurs, cela impliquera une résolution plus rapide des problèmes, parfois deux fois plus rapide qu'actuellement.

LES PROBLÈMES COURANTS À LA LOUPE

Et maintenant, parlons un peu des problèmes de serveur que vous pourriez rencontrer. La liste ci-dessous n'est pas exhaustive, mais j'espère qu'elle répondra à la plupart de vos questions.

Le serveur tourne au ralenti.

Celle-là, c'est ma préférée. Nos serveurs fonctionnent avec un tickrate de 20 Hz. Cela signifie qu'ils simulent l'état de l'environnement de jeu entier une fois toutes les 50 ms (soit 1 seconde, ou 1 000 ms, divisée par 20).

Nous ne parlons pas d'IPS (le nombre d'images par seconde) quand il s'agit des performances du serveur parce qu'un serveur n'affiche pas d'images. Au lieu de cela, un serveur calcule des "états", même si le principe de base reste le même. Il reçoit les entrées de l'utilisateur (depuis le réseau), les traite, renvoie le nouvel état de l'environnement aux clients, et recommence. Si ce processus dure systématiquement plus de 50 ms, votre jeu ralentira pour permettre au serveur de terminer la simulation. C'est comme ça que vous obtenez des serveurs qui tournent au ralenti.

Aperçu du fonctionnement d'un serveur. La colonne 5 représente l'objectif de 50 ms. Tout ce qui se trouve en dessous est plus rapide. Vous pouvez voir que ce serveur était stable et plus rapide que nécessaire.

En comparaison, ce serveur fonctionnait avec une fréquence de rafraîchissement de 200 ms, soit 4 fois plus lentement. Il s'agit typiquement d'un serveur qui tourne au ralenti.

Un certain nombre de facteurs peuvent être à l'origine de ce problème, mais il est parfois lié aux machines du centre de données qui ne fonctionnent pas comme elles le devraient (surchauffe, underclocking du processeur, etc.). 

Lorsqu'on les détecte, on retire généralement ces machines. Concrètement, cela signifie qu'on appelle le fournisseur de services pour lui montrer la machine défectueuse et lui demander de la déconnecter. 

Quand nous la mettrons en place la saison prochaine, la solution de détection en temps réel mentionnée plus tôt dans cet article devrait réduire considérablement ce problème. Nous nous sommes beaucoup investis dans la résolution de ce problème, c'est pourquoi nous allons le surveiller de près.

Ma latence fait le yo-yo.

Si vous jouez en Wi-Fi, nous ne pouvons pas grand-chose pour vous ! Sinon, les changements de latence peuvent parfois être liés aux performances de nos serveurs.

Nous savons tous que même si un jeu tourne généralement à 60 images par seconde, cela peut tout à fait changer lorsqu'il se passe beaucoup de choses à l'écran. Même si vous ne perdez que quelques images, vous le sentez instantanément. Il en va de même pour les serveurs. Ici, la détection automatique n'est pas très utile pour déterminer l'origine du problème. Historiquement, nous avons dû recréer les conditions de ralentissement sur un serveur de test, mais cela prend beaucoup de temps et le résultat est toujours un peu hasardeux. Votre machine ne fonctionne probablement pas avec le même matériel serveur, ou avec les mêmes paramètres, et il est donc difficile de reproduire quoi que ce soit.  

Heureusement, notre équipe d'exploitation a élaboré un outil qui nous permet d'obtenir ce que nous appelons un fichier RPROF. Il s'agit essentiellement d'un aperçu de ce que fait le serveur lors de chaque image (simulation balistique, mise en réseau, déplacements du joueur, etc.). Grâce aux fichiers RPROF, nous sommes en mesure de connaître la cause de ces ralentissements, et un ingénieur peut commencer à y remédier. Le problème est généralement lié à l'augmentation des exigences de performances engendrées par les nouvelles fonctionnalités, saison après saison. 

Par exemple, vous vous souvenez peut-être du ralentissement sur l'écran Champion au début du jeu lors des saisons 7 et 8. Celui-ci était dû au fait que tous les joueurs de la partie apparaissaient au même endroit, parfois même en se superposant. (Vous ne pouviez même pas les voir à cause de l'interface !) Les simulations physiques détestent que certains objets se superposent, et notre moteur physique essayait d'éloigner tous les corps les uns des autres, ce qui causait d'énormes pics d'utilisation du processeur sur le serveur.

Pourcentage de parties affectées par un serveur aux performances lentes (pas nécessairement qui tourne au ralenti) par région. Comme vous pouvez le voir, certaines régions s'améliorent avec le temps, à l'inverse de certaines autres (l'axe X correspond au temps).

Une vue détaillée de la région Ouest des États-Unis qui nous permet de détecter les machines défectueuses (l'axe X correspond au temps). Les pannes apparaissent très clairement. Certaines machines ont été affectées, tandis que d'autres sont restées stables.

Nous pensons que notre utilisation des fichiers RPROF nous aidera à optimiser les nouvelles fonctionnalités que nous ajouterons au jeu et à réduire la latence de manière plus générale à l'avenir. La réduction de la latence pour tous les joueurs est un objectif important pour nous, et de meilleurs outils comme celui-ci sont essentiels pour nous aider à y parvenir. 

J'ai beaucoup de ralentissements et de pertes de paquets.

Voilà un problème épineux. Ce n'est probablement pas de votre faute et généralement, ce n'est pas de la nôtre non plus ! 

C'est plutôt lié à la façon dont le trafic Internet passe de votre box à notre centre de données et vice versa. Au début, votre trafic réseau se trouve sur le réseau de votre fournisseur d'accès à Internet (FAI). Il se peut qu'une panne touche votre FAI et que vos informations, ainsi que les informations d'autres clients, soient perdues ou corrompues. Par conséquent, le client du jeu n'est plus en mesure de comprendre ce qui se passe avec les joueurs autour de vous et/ou le serveur de jeu ne peut plus savoir si vous voulez tirer ou vous déplacer dans une certaine direction. Il faut aussi prendre en compte la connexion entre le réseau de votre FAI et celui de notre centre de données. En effet, des problèmes peuvent survenir n'importe où sur cette ligne.

Quand tout se passe bien, on appelle ce processus le "peering". Bien souvent, les problèmes de peering résultent d'une mauvaise connexion entre ces deux réseaux. De plus, il peut y en avoir plusieurs sur une même connexion. Et puis, bien entendu, toutes les informations provenant des serveurs d'Apex Legends doivent vous être renvoyées, souvent via un autre itinéraire. Vous comprenez donc la complexité de l'opération. 

Si nous voulons résoudre ce problème, la première chose à faire est de pouvoir détecter où se trouve la panne. C'est un processus difficile à automatiser parce que nous avons besoin de vos données, mais aussi des données du serveur , pour examiner le problème sous les deux "angles" afin d'essayer de déterminer où se trouve le problème. 

À partir de maintenant, nous demandons aux joueurs de fournir des traces de leur réseau, et nous faisons la même chose de notre côté depuis le centre de données pour essayer de détecter le point de congestion. C'est extrêmement fastidieux et long à résoudre car, selon nos découvertes, nous devons négocier avec différents partenaires commerciaux dans le monde entier. Nous espérons que l'automatisation pourra nous aider à optimiser ce processus, pour lequel nous avons encore quelques améliorations en cours de développement. 

Lorsqu'il s'agit de problèmes de trafic réseau comme ceux dont nous parlons ici, l'avantage est que les problèmes ont tendance à se produire en masse au lieu d'être liés à un seul individu en particulier. Cela signifie que la résolution du problème pour un joueur affecté débloque généralement la situation pour beaucoup d'autres joueurs. Nous réduisons aussi activement la bande passante utilisée par le jeu, ce qui contribue à atténuer le problème.

Hôtes Record Moyenne Pire FAI local 22 31 264 FAI 1 27 185 515 FAI 2 24 194 652 Serveur de jeu 31 263 522
Hôtes Record Moyenne Pire
FAI local 22 31 264
FAI 1 27 185 515
FAI 2 24 194 652
Serveur de jeu 31 263 522

Il s'agit d'une trace du réseau (montrant des signes de latence) de l'un de nos joueurs professionnels, de son modem vers l'un de nos serveurs. Nous vérifions plusieurs fois afin d'évaluer l'état général de la connexion Internet. Comme vous pouvez le voir, il peut jouer dans les meilleures conditions avec une latence de 31 ms. Toutefois, la pire valeur se situe autour de 522 ms. Dans ce cas précis, son expérience de jeu est extrêmement mauvaise car sa connexion oscille sur près de 500 ms. La connexion est un peu instable sur le réseau de son FAI local, mais la moyenne nous montre qu'il s'agit d'un événement plutôt rare (avec une moyenne de 31 ms mais un pic pouvant descendre jusqu'à 264 ms, il doit s'agir d'un incident isolé). Cependant, nous voyons ensuite un pic de latence entre le FAI local et le FAI 1, qui correspond à l'un des nœuds entre le joueur et notre serveur de jeu. Nous pouvons être quasiment certains qu'il en résulte des pertes de paquets et des problèmes de routage entre les deux. Cela n'est pas sous notre contrôle, mais nous pouvons en informer nos partenaires. Généralement, c'est dans l'intérêt de tout le monde de résoudre ce problème.

Je me fais tuer alors que je suis derrière une porte ou un mur, et il arrive que je revienne à ma position précédente.

C'est un sujet délicat. Il s'agit d'une compensation de lag. 

Depuis les débuts du jeu en ligne, le principal problème des développeurs est de savoir comment simuler une action en temps réel dans un jeu qui ne fonctionne pas en temps réel. D'une manière générale, tout ce que vous faites dans les jeux en ligne est retardé en raison de la latence vers et depuis le serveur. Mais ce n'est pas tout : il faut ajouter à cela les entrées, le rendu, et même le tickrate du serveur. 

Et comme si cela ne suffisait pas, il faut également prendre en compte le fait que votre adversaire a certainement un niveau de latence différent du vôtre. Afin de résoudre ce problème, nos serveurs doivent constamment examiner non seulement ce qui se passe pour vous et votre adversaire à ce moment précis, mais aussi ce qui se passait depuis votre point de vue à tous les deux au moment où vous avez effectué vos actions. La compensation de lag est l'art de fusionner des expériences légèrement différentes en une réalité commune. 

Il n'existe pas de solution parfaite. Il n'existe pas une seule vérité. En fin de compte, le serveur est une sorte de machine temporelle. Il revient constamment en arrière pour voir si votre tir a touché un ennemi, puis il met à jour l'état de l'environnement en conséquence. 

Pour mieux illustrer ce principe, mon collègue Earl Hammon a rédigé un petit essai sur l'équité et la compensation de lag, et comment tout cela fonctionne dans Apex Legends. Je vous le partage ci-dessous :

Examinons différents scénarios avec deux joueurs d'Apex Legends que nous appellerons joueur A et joueur B. Donnons au joueur A un ping élevé de 300 ms, et au joueur B un ping faible de 50 ms. La différence entre les deux est donc de 250 ms.

Que se passera-t-il s'ils se tirent dessus en même temps ? Eh bien, le tir du joueur B arrivera sur le serveur bien avant le tir du joueur A, pour qu'il ait l'avantage.

Et que se passera-t-il s'ils tournent à un coin de rue pour se retrouver face à face ? Eh bien là aussi, c'est le joueur B qui aura l'avantage. En effet, le joueur B est moins "dans le passé", c'est pourquoi il verra le joueur A en premier. Une fois encore, le joueur B a donc l'avantage en raison de son ping. Cela s'ajoute à l'avantage de voir ses balles arriver plus rapidement sur le serveur.

Ces situations sont "injustes" dans le sens où le joueur B a l'avantage, mais elles sont "justes" dans le sens où il est raisonnable de s'attendre à ce que le joueur avec le ping le plus faible ait l'avantage dans cette situation.

Et maintenant, que se passera-t-il si le joueur B se met à couvert ? Dans ce cas, le joueur A se trouvera encore dans le passé, au moment où le joueur B n'est pas encore à couvert. Par conséquent, le joueur A pourra tirer sur le joueur B avant qu'il se mette à couvert, mais celui-ci ne le saura pas avant que les paquets du joueur A n'atteignent le serveur, puis le joueur B. À ce moment-là, le joueur B voit qu'il est à couvert, et pourtant il se fait tirer dessus. Pour lui, ça n'a pas de sens.

Pourtant, c'est exactement pareil que quand il avait l'avantage tout à l'heure ! Lorsque le joueur B sort de sa couverture pour attaquer le joueur A, il peut le voir et lui tirer dessus alors que pour le joueur A, le joueur B est toujours à couvert. Pour le joueur A, ça n'a pas de sens puisqu'il se fait tirer dessus par un ennemi qui est à couvert. Nous ne pouvons pas faire disparaître cette aberration, seulement la transférer d'un joueur à l'autre, tout simplement parce que la différence de ping entre les joueurs est bien réelle. 

Certains diront qu'il est injuste pour le joueur B que le joueur A puisse lui tirer dessus alors qu'il pense être à couvert. L'autre alternative serait de dire que le joueur A devrait compenser pour son ping plus élevé. Pour ce faire, nous devrions mettre en place une façon inégale et asymétrique de gérer la latence. 

Ce n'est pas normal de se faire tirer dessus quand vous pensez être à couvert à cause d'un ping trop faible, ce qui peut tout à fait arriver au joueur B. Ce n'est pas normal non plus de se faire tirer dessus par quelqu'un qui vous voit en premier à cause d'un ping trop faible, ce qui peut tout à fait arriver au joueur A. Mais cette aberration est répartie de façon équitable.

Soyons clairs : tous les jeux en ligne ne fonctionnent pas comme Apex Legends. Certains jeux donnent toujours l'avantage aux joueurs avec le ping le plus faible, ce qui n'est pas notre cas. C'est un choix que nous avons pris délibérément après avoir longuement étudié les compromis possibles et réfléchi à l'équité de la compétition en ligne. 

Pour expliquer notre système en quelques mots, les joueurs ayant un ping faible n'auront pas toujours l'avantage sur les joueurs ayant un ping élevé, et seront parfois confrontés à des aberrations (pour nous, c'est un terme technique). 

C'est un compromis que nous avons conçu volontairement dans notre système. Mais l'avantage, c'est que vous pouvez jouer à Apex Legends, et jouer relativement bien même si votre latence est supérieure à la moyenne, ce qui est très important pour les joueurs en milieu rural ou pour les joueurs qui se trouvent dans des régions où la connectivité est instable. Nous pensons à réduire ces aberrations à chaque occasion, mais lorsque nous faisons face à des expériences qui ne sont pas idéales, nous voulons garantir une certaine équité pour tous les joueurs.

Ainsi, à chaque fois ou presque que vous faites face à une de ces aberrations, comme vous faire tirer dessus derrière un mur ou vous faire toucher sans prévenir, c'est probablement à cause des variations inévitables de la latence entre les joueurs et de la façon dont notre système les distribue. Malgré tout, nous nous engageons à réduire ce problème à chaque fois que nous en avons l'occasion. Non seulement nous voulons que tous les joueurs profitent d'une expérience de jeu équitable, mais aussi qu'ils s'amusent.

Certains de mes coups ne sont pas pris en compte.

Discutons-en. La non-prise en compte d'un coup implique que vous pensez avoir frappé votre cible, mais que le serveur a rejeté votre action. De votre point de vue, vous recevez toutes sortes de confirmations, comme le sang et le bruit, mais aucun dégât n'est infligé. Dans un jeu de tir comme Apex Legends, c'est très fâcheux. 

Cela peut arriver pour une multitude de raisons. Parfois, une latence élevée ou une perte de paquets peut entraîner un léger décalage entre votre simulation et le serveur. Vous avez tiré à l'endroit de votre cible mais en fait, celle-ci n'est déjà plus là. Malheureusement, vous ne vous en rendez compte que lorsque votre version du monde rattrape son retard.

Parfois, il peut s'agir d'un bug dans la simulation physique du jeu. Pour vous donner un retour instantané, nous nous basons principalement sur un concept appelé "prédiction". Lorsque vous tirez, nous connaissons la balistique de l'arme, ce qui nous permet de prédire la trajectoire de la balle sans avoir besoin que le serveur vous le dise. Cela rend le jeu plus réactif. 

En temps normal, le client et le serveur sont d'accord, et la balle suit la trajectoire prévue. Par le passé, nous avions rencontré des bugs liés à notre façon de calculer la balistique et la trajectoire des balles (pour toutes les armes dont les balles ne sont pas des points, comme celles des fusils de précision). Ce type de bugs peut être difficile à détecter, c'est pourquoi nous avions mis en place un visuel pour nos tests, afin d'aider les joueurs à les repérer immédiatement. Malheureusement, ce code de diagnostic est trop lourd à exécuter dans le jeu (en raison de problèmes de bande passante), c'est pourquoi nous ne pouvons compter que sur nos tests en interne.

À chaque fois qu'un coup n'est pas pris en compte, nous dessinons la hitbox et la trajectoire de la balle (approximativement, la trajectoire devrait être légèrement courbée, mais c'est suffisant !). Il s'agit d'une aide visuelle qui nous permet de savoir qu'un coup n'a pas été pris en compte et qui nous aide lorsque nous consultons les journaux du serveur.

Nous progressons de deux façons :

la première consiste à examiner les différents bugs à l'origine des problèmes de détection des coups. Nous avons également développé des outils pour automatiser la détection afin d'aider les développeurs à éviter d'en introduire de nouveaux. C'est un effort continu et permanent de notre part.

La deuxième façon consiste à travailler avec vous ! Quand les joueurs nous envoient des vidéos de problèmes de détection des coups, cela nous aide à déterminer s'il y a un bug à corriger. Bien souvent, ces vidéos sont en réalité liées à un problème de latence plutôt qu'à un problème de détection des coups. Pensez donc à vérifier l'affichage des infos de performance avant de nous signaler un problème de prise en compte des coups. Cependant, comme mentionné ci-dessus, ces signalements nous ont aussi permis de trouver et de résoudre des bugs par le passé, c'est pourquoi ils sont importants pour nous aider à garantir un meilleur jeu pour tous. Alors merci d'avance !

 

Qu'en est-il des bugs qui m'empêchent de me connecter, comme "code:net" ?

"code:net" est un message d'erreur générique qui apparaît à chaque fois que la connexion au serveur expire. Un certain nombre de problèmes peuvent en être la cause, de notre côté comme du vôtre. En fait, nous avons constaté que certains des bugs "code:net" les plus sérieux (et les bugs associés comme "code:leaf", etc.) étaient parfois causés par des services de Respawn prenant en charge le jeu et pouvaient donc faire l'objet d'une résolution en interne.

Nous avons pris un certain nombre de mesures pour réduire la probabilité des bugs "code:net" et pour que les joueurs puissent résoudre le problème après avoir contacté notre équipe d'assistance. Si vous n'arrivez pas à vous connecter et que vous recevez le message "code:net" ou un autre message similaire, pensez à le signaler à l'Assistance EA.

Puisque "code:net" est un message générique, il peut faire référence à un certain nombre de problèmes différents. Ces dernières semaines, nous avons réussi à en résoudre certains, mais nous savons que nous sommes loin d'avoir fini. Signalez-nous les problèmes et nous ferons de notre mieux pour les résoudre au plus vite.. Croyez-nous, nous détestons ce bug autant que vous !

À PROPOS DU TICKRATE DU SERVEUR

Voilà un gros morceau. Nous tenons à vous en parler en toute transparence. Beaucoup de joueurs nous ont demandé pourquoi nous n'augmentions pas simplement le tickrate de 20 Hz, comme l'ont fait d'autres jeux de tir en ligne. 

Nous avons expliqué comment le tickrate influence le taux de rafraîchissement global de ce que vous voyez à l'écran. C'est donc une question tout à fait légitime. Toutefois, ce n'est pas si facile de comparer le tickrate d'un jeu à celui d'un autre. Nous allons essayer de vous expliquer pourquoi. 

Le tickrate d'un serveur est le nombre de simulations que ce serveur exécute par seconde. Il s'agit d'un nombre fixe (voir la section sur les serveurs au ralenti). Apex Legends utilise un modèle de reproduction instantané. Cela signifie principalement qu'à la fin de chaque simulation (ou "tick"), le serveur sauvegarde l'état de l'environnement et le reproduit à tous les clients. Cela comprend énormément d'informations qui permettent à notre arme, à notre carte et à la conception des Légendes d'être des plus fidèles. 

Pour réussir dans Apex Legends, vous devez faire attention à toute une série d'informations qui se déroulent sur toute la carte : l'utilisation des capacités tactiques, l'activation des capacités passives, l'apparition des capacités ultimes ou des packs de soins, ou encore l'arrivée d'une nouvelle escouade à portée du drone de Crypto. Nous ne voulons pas que les joueurs les ratent. Et nos concepteurs sont capables de créer des jouets et des outils de nature mondiale. Beaucoup de jeux ne calculent pas l'état global de l'environnement à chaque tick, ce qui rend difficile la comparaison d'un jeu à un autre en se basant uniquement sur un chiffre comme "20 Hz" ou "30 Hz". 

La question est : que se passe-t-il exactement à chaque tick ? Nous voulons que l'état de l'environnement soit aussi précis que possible, c'est pourquoi nos serveurs le sauvegardent complètement à chaque tick. Si nous ne le faisions pas, cela permettrait probablement d'économiser une partie de la charge CPU sur nos serveurs, mais nous perdrions en précision dans nos simulations, et cela ne vaut pas le coup. 

Pour faire simple, plus le tickrate est élevé, plus la bande passante envoyée à tous les joueurs est élevée. Si nous devions passer d'un serveur 20 Hz à un serveur 60 Hz, cela reviendrait à multiplier par trois la bande passante utilisée par le jeu. À l'heure actuelle, Apex Legends consomme environ 60 Ko/s au début d'une partie. Un serveur 60 Hz consommerait 180 Ko/s. Ça semble peu comme ça, mais c'est énorme en réalité, et nous cherchons toujours des moyens de réduire la bande passante requise. 

Mais qu'est-ce que cela changerait si la bande passante était un peu plus élevée ? Il est beaucoup plus important de maintenir une faible consommation de bande passante pour les jeux que pour le streaming vidéo par exemple. Pour les applications à large bande passante (streaming, téléchargement, etc.), la variation de latence ou les problèmes de fluidité sont faciles à masquer en mettant en mémoire tampon plusieurs minutes d'un streaming, en baissant la qualité du streaming, etc. Vous ne constaterez probablement même pas de variation de latence au cours d'un téléchargement, tout comme vous vous fichez probablement que la vitesse soit variable de quelques centaines de millisecondes. 

C'est un luxe que les jeux ne peuvent pas se permettre. Sauter même quelques intervalles de 50 ms commence déjà à poser problème. Sautez-en davantage et vous vous retrouverez dans une spirale infernale qui vous obligera à envoyer des mises à jour de plus en plus importantes pour rattraper votre retard. Vous ne pourrez de toute façon pas y échapper, car votre client a besoin d'un état d''environnement parfait pour être précis.

L'exemple ci-dessus montre à quel point comparer le tickrate des jeux est compliqué, car les informations contenues dans chaque tick varient. Et ce n'est pas tout, car les limites d'entrées que les serveurs peuvent recevoir et envoyer ne sont pas toujours les mêmes, même s'ils ont le même tickrate. Voici un exemple concret : dans de nombreux jeux, si un serveur tourne à 60 Hz, cela signifie que le client ne peut envoyer que des entrées à 60 Hz. Si vous exécutez à 60 images par seconde, c'est parfait, mais si votre client tourne à 120 images par seconde, vous perdrez la moitié de vos entrées. Ce n'est pas le cas dans Apex Legends. Nous traitons très bien le taux variable d'entrées. (Remarque : plus votre taux d'images par seconde est élevé dans Apex Legends, plus votre utilisation de bande passante est conséquente.)

Très bien, nous avons discuté de certains inconvénients possibles liés à l'augmentation du tickrate du serveur. Mais qu'en est-il des avantages de passer, disons, de 20 Hz à 60 Hz ? Alors, Respawn ? Est-ce que ça ne rendrait pas les serveurs trois fois plus rapides et trois fois meilleurs ? Alors qu'est-ce que vous attendez ?

D'après nos conclusions, l'expérience de jeu ne serait pas bien différente, et nous allons vous expliquer pourquoi. 

Imaginons que vous ayez environ 50 ms de ping ou de latence. N'oubliez pas que votre ping mesure la vitesse d'un aller-retour complet entre votre machine et le serveur. Ainsi, en écartant tout problème comme les variations de latence ou le lag dû au matériel (par exemple, les dispositifs d'affichage qui ajoutent un délai de 20 à 50 ms), le serveur recevra votre entrée 25 ms (soit un demi-ping) après que vous avez appuyé sur un bouton ou fait bouger votre souris. 

Comme nos serveurs tournent à 20 Hz, ils actualisent l'état de l'environnement toutes les 50 ms (1 000 ms par seconde / 20 ticks par seconde = 50 ms par tick). Ainsi, dans le pire des cas, vos entrées seront traitées par le serveur après 75 ms (25 ms + 50 ms). 

Pour déterminer ce que ce délai de 75 ms signifie réellement sur votre expérience de jeu, vous devez tenir compte de votre fréquence d'images. Les calculs peuvent être compliqués, mais souvenez-vous que dans un jeu à 60 images par seconde, chaque image dure environ 16,67 ms (1 000 ms par seconde / 60 images par seconde = 16,67 ms par image). Si vos entrées sont traitées par le serveur après 75 ms, comme dans notre exemple ci-dessus, et que votre jeu tourne à 60 images par seconde, cela signifie que le décalage entre votre entrée et son impact sur le jeu est d'environ cinq images (75 ms pour chaque mise à jour / 16,67 ms par image = environ 4,5 images, qu'il faut arrondir à 5 images car une demi-image, ça n'existe pas). 

Si vous effectuez les mêmes calculs ci-dessus pour un serveur 60 Hz, vous obtenez 41,67 ms de délai maximum entre l'entrée et son traitement par le serveur (25 ms de ping + [1 000 ms / 60 ticks par seconde = 16,67 ms par tick] = 41,67 ms). 

41,67 ms, c'est clairement mieux que 75 ms, mais qu'en est-il de la fréquence d'images ? Encore une fois, partons du principe que nous sommes en 60 images par seconde. Chaque image dure 16,67 ms, c'est pourquoi le décalage entre vos entrées et leur traitement par le serveur est d'environ trois images (41,67 ms pour chaque mise à jour / 16,67 ms par image = environ 2,5 images, qu'il faut arrondir à 3 images car une demi-image, ça n'existe toujours pas). 

Si vous ajoutez tous ces calculs, vous vous rendez compte que les serveurs 20 Hz entraînent un retard d'environ cinq images, et que les serveurs 60 Hz entraînent un retard de trois images. Ainsi, pour le triple de la charge CPU et de bande passante, vous pouvez économiser deux images de latence dans le meilleur des cas. Il y a certes un avantage, mais il n'est pas énorme, et cela ne changerait rien pour les problèmes liés aux lags classiques (comme celui de se faire tirer dessus alors que vous êtes à couvert), aux FAI ou aux bugs (comme la non-prise en compte des coups et les serveurs au ralenti). 

Avec notre exemple, nous nous sommes penchés sur les avantages à passer de 20 Hz à 60 Hz. Vous pouvez reproduire les calculs pour d'autres exemples, comme de 20 Hz à 30 Hz ou même 40 Hz, et vous verrez que les gains en fréquence d'images seraient tout aussi faibles. Il faudrait augmenter drastiquement votre tickrate avant de commencer à ressentir une réelle différence. Même le fait de passer de 20 Hz à 60 Hz serait similaire à la différence entre 58 images par seconde et 60 images par seconde. Cette différence n'est pas négligeable, mais nous pensons sincèrement qu'elle n'est pas suffisante pour donner la priorité aux changements de tickrate par rapport à d'autres améliorations plus efficaces que nous pourrions apporter.

POUR CONCLURE

Nous voulons terminer cet article en reconnaissant une chose, à savoir la frustration bien réelle que les problèmes en ligne causent pour les joueurs. Lorsque vous devez faire face à des ralentissements, des coups qui ne sont pas pris en compte ou des serveurs au ralenti, c'est démoralisant. Ça vous sort du jeu et peut vite être décourageant lorsque vous essayez de gagner des parties classées, de jouer avec des amis ou simplement de vous détendre. 

Le défi, en parlant des problèmes en ligne, c'est que lorsque nous commençons à expliquer nos systèmes ou notre position vis-à-vis de ces problèmes comme la compensation de lag ou le tickrate, cela peut être très frustrant pour les joueurs qui veulent simplement que le jeu soit meilleur. Si vous rencontrez des problèmes de latence, de plantage de serveur, de corruption de compte ou tout autre problème en jouant à Apex Legends, alors vous n'avez probablement pas envie d'entendre parler de ce que nous ne faisons pas

En fin de compte, tout ce que nous voulons, c'est rendre le jeu meilleur. Plus votre expérience en ligne sera bonne, plus le jeu attirera de joueurs, ce qui nous permettra de continuer à faire ce que nous aimons. 

C'est la raison pour laquelle, tout au long de ce blog, nous vous avons fait part d'un certain nombre d'améliorations que nous envisageons dans un avenir proche, parmi lesquelles :

  • L'utilisation d'alertes en temps réel qui nous permettront d'identifier les problèmes et de réagir plus rapidement.
  • L'intégration d'outils pour l'identification des serveurs afin que nous puissions retirer et remplacer rapidement les serveurs qui posent problème.
  • La concentration de nos efforts sur les serveurs qui fonctionnent au ralenti. Le retrait des serveurs problématiques est une étape, mais notre objectif est de rendre ce problème moins courant en modifiant le code.
  • La réduction de la latence grâce à une meilleure optimisation des nouvelles fonctionnalités.
  • La correction des bugs de prise en compte des coups et la création d'outils de détection automatisés afin d'éviter d'en introduire de nouveaux.

Sachez toutefois que nos actions ne se limitent pas à cela. Nous travaillons avec des partenaires, du niveau des serveurs à celui des FAI, pour améliorer et investir dans notre infrastructure en ligne, dans le but ultime de voir les joueurs signaler moins de problèmes et profiter d'une meilleure expérience globale. Nous avons l'intention de vous en dire plus à ce sujet dans un prochain article, lorsque nous aurons commencé à voir ces efforts porter leurs fruits. 

Nous espérons que si nous commençons à communiquer davantage avec vous au sujet des problèmes qui nous préoccupent, nous parviendrons à partager un langage commun pour discuter des causes profondes relatives aux problèmes auxquels nous faisons face. C'est pour cela que nous avons écrit cet article. Nous espérons que vous comprendrez mieux notre processus de réflexion et les aspects techniques de la gestion d'un jeu de tir en ligne. Nous espérons que ce sera le début de nouvelles conversations à venir.

Merci d'avoir pris le temps de nous lire ! 

- Samy (Ricklesauceur) et l’équipe d’Apex Legends


Jouez gratuitement à Apex Legends* sur PlayStation 4, PlayStation 5, Xbox One, Xbox Series X|S, Nintendo Switch et PC via Origin et Steam.

Suivez Apex Legends sur Twitter et Instagram, abonnez-vous à notre chaîne YouTube ou rendez-vous sur nos forums.

Abonnez-vous à notre newsletter pour recevoir par e-mail les dernières actualités, mises à jour, présentations des coulisses, offres et plus encore relatives à Apex Legends (ainsi que d'autres actualités, produits, événements et promotions EA).

Cette annonce est susceptible de changer en fonction des retours de la communauté et du développement de notre service et du contenu. Nous nous efforcerons toujours d’informer notre communauté du mieux possible. Pour plus de détails, veuillez consulter les mises à jour des services en ligne d'EA sur https://www.ea.com/fr-fr/service-updates.

*Un compte et un abonnement sur la plateforme applicable (vendus séparément) peuvent être requis. Une connexion Internet permanente et un Compte EA sont requis. Des restrictions d'âge s'appliquent. Inclut des achats en jeu.

Actualités connexes

Notes de patch d'Apex Legends™ - Prise de pouvoir

Apex Legends
10 févr. 2025
Consultez l'intégralité des notes de patch pour obtenir plus d'informations sur les nouveautés de la saison Prise de pouvoir, qui inclut des optimisations pour les Légendes et les armes, des aptitudes inédites de classe Assau…

Découvrez les nouveautés d'Apex Legends™ - Prise de pouvoir

Apex Legends
6 févr. 2025
Voici un aperçu des nouveautés de Prise de pouvoir. Les créateurs et créatrices, les arsenaux, les changements dans la méta et plus encore.

Apex Legends™ : mise à jour anti-triche et matchmaking

Apex Legends
5 févr. 2025
Notre première mise à jour dédiée au développement de 2025 se concentre sur la lutte anti-triche et le matchmaking.