Découvrez comment fonctionne Edgegap

Découvrez comment fonctionne Edgegap

Le Netcode de Call of Duty - Perspectives pour le développement de jeux multijoueurs

Publié

Publié

Publié

dernière vérification de l'exactitude

dernière vérification de l'exactitude

dernière vérification de l'exactitude

Le Netcode de Call of Duty - Perspectives pour le développement de jeux multijoueurs

Le netcode est sans doute l'un des composants les plus critiques de tout jeu multijoueur.

Précédemment, nous avons couvert en détail les enseignements applicables à tous les développeurs de jeux multijoueurs tirés du livre blanc de Call of Duty sur le matchmaking basé sur le niveau (SBMM).

Dans cet article, nous aborderons les points clés applicables à tous les développeurs de jeux multijoueurs concernant l'un des jeux en ligne les plus populaires au monde, Call of Duty, et son netcode. Ces analyses proviennent des propres explications d'Activision datant de 2019, fournies par Paul Haile, alors directeur de production chez Infinity Ward, et Mitch Sanborn, alors directeur de l'ingénierie en ligne.

Les fondations : comprendre l'architecture client-serveur

Modern Warfare fonctionne sur un modèle client-serveur dans lequel plusieurs clients interagissent avec un serveur central faisant autorité. L'appareil de chaque joueur fonctionne comme un client, envoyant constamment des données d'entrée au serveur tout en recevant en retour les mises à jour de l'état du monde. Le serveur conserve l'autorité ultime sur l'état du jeu, traitant toutes les entrées des joueurs et diffusant les résultats à chaque client connecté.

Cette approche faisant autorité garantit la cohérence entre tous les joueurs. Lorsque vous tirez avec une arme ou déplacez votre personnage, votre client et le serveur traitent cette entrée simultanément. Cependant, seule la version du serveur devient l'état officiel du jeu que tous les autres joueurs voient.

Qu'est-ce que le netcode pour les jeux en ligne ?

Le netcode englobe tous les systèmes réseau qui synchronisent les états de jeu entre plusieurs joueurs dans des expériences multijoueurs en temps réel. Il gère la transmission des données, les algorithmes de prédiction, la compensation du décalage (lag compensation) et la résolution des conflits lorsque différents clients signalent des informations contradictoires.

Le netcode moderne va bien au-delà du simple échange de données. Il comprend des systèmes de prédiction sophistiqués, des mécanismes de rollback (retour en arrière) et des stratégies d'adaptation dynamique qui maintiennent des expériences jouables malgré les imperfections du réseau. Le terme décrivait à l'origine le code réseau au sein des moteurs de jeu, mais il représente aujourd'hui l'ensemble de l'écosystème de technologies permettant le jeu multijoueur en ligne.

Un netcode efficace doit équilibrer plusieurs priorités concurrentes : réactivité, cohérence, équité et évolutivité.

Que fait le netcode ?

Le netcode remplit plusieurs fonctions critiques qui rendent possible le jeu multijoueur. Il synchronise les positions des joueurs, leurs actions et les changements d'état du jeu sur tous les clients connectés, tout en maintenant la cohérence malgré les retards du réseau et les pertes de données.

Le système prédit les états futurs du jeu sur la base des tendances actuelles, permettant aux jeux de continuer à fonctionner de manière fluide même lorsque les paquets de données arrivent en retard ou dans le désordre. Lorsque les prédictions s'avèrent incorrectes, des mécanismes de rollback ramènent l'état du jeu au moment de la divergence et rejouent les événements avec les informations correctes.

Le netcode met également en œuvre des techniques de compensation du décalage qui tiennent compte des retards du réseau lors de la détermination de la détection des tirs (hit registration) et des interactions entre les joueurs. Ces systèmes garantissent que les joueurs ayant des qualités de connexion différentes peuvent s'affronter équitablement sans subir de désavantages importants.

De plus, le netcode moderne comprend des systèmes de détection de triche et de validation qui vérifient les données du client par rapport aux attentes du serveur. Cela empêche les joueurs malveillants de manipuler l'état local de leur jeu pour obtenir des avantages injustes.

Quand les réseaux échouent : le défi de la perte de paquets

Les perturbations du réseau se manifestent principalement de deux manières. La première survient lorsque les clients ne reçoivent pas les données du serveur, laissant les joueurs sans informations cruciales sur l'état du monde. Sans ce flux de données, les jeux des clients ne savent littéralement pas quoi afficher ensuite.

Le second scénario implique que le serveur ne reçoive pas les données d'entrée du client. Les approches traditionnelles figeaient simplement le joueur concerné jusqu'à l'arrivée des données, puis le téléportaient instantanément vers sa nouvelle position. Cela créait des artefacts visuels saccadés qui rendaient les jeux injouables.

Les interférences sans fil, le bridage du trafic par les FAI, les pics de processeur et la mise en mémoire tampon des routeurs contribuent tous à la variation de la distribution des paquets. Ces facteurs créent des retards imprévisibles dans le temps nécessaire aux données pour voyager entre les clients et les serveurs.

Stratégie de solution à trois volets

Infinity Ward utilise trois stratégies distinctes en fonction des conditions du réseau.

  • La mise en mémoire tampon (buffering) analyse les taux de distribution des paquets en temps réel, positionnant les clients aussi près que possible des dernières données du serveur sans risquer de saccades visuelles. Le système ajuste dynamiquement à la hausse ou à la baisse les taux de mise à jour des clients pour maintenir cet équilibre précis.

  • L'extrapolation prend la dernière entrée reçue et suppose que le joueur continue la même action jusqu'à ce que de nouvelles données arrivent. Cela fonctionne bien pour les mouvements constants, mais peut provoquer des sauts visuels brusques lorsque les joueurs changent soudainement de direction.

  • La prédiction traite les entrées extrapolées comme des données de serveur faisant autorité, créant un mouvement fluide pour tous les joueurs. Cependant, une prédiction excessive rend le jeu injouable pour les clients qui rencontrent des problèmes de réseau.

Le moteur de Modern Warfare prend en charge les trois approches simultanément, mélangeant les stratégies en fonction de l'analyse du réseau en temps réel pour chaque client individuel. Cela empêche qu'un seul joueur ayant une mauvaise connexion ne dégrade l'ensemble de la partie.

Explication du phénomène du « mourir derrière un obstacle »

La frustration classique de mourir après s'être mis à l'abri illustre les principes du netcode en action. Lorsque vous êtes exposé et que vous voyez le reflet d'un sniper, votre décision de courir crée une chaîne complexe d'événements réseau.

Votre position exposée voyage vers le serveur, qui met à jour votre emplacement et le diffuse aux autres joueurs. Le sniper vous voit à découvert et tire, renvoyant cette action au serveur pour un traitement faisant autorité. Le serveur vous renvoie ensuite le résultat de votre élimination.

La latence totale du système détermine à quel point vous semblerez mourir loin derrière l'obstacle. L'extrapolation peut en réalité réduire cet effet en prédisant la position des joueurs avant l'arrivée des données réelles, surpassant ainsi efficacement les temps de trajet aller-retour des paquets lorsque les prédictions s'avèrent exactes.

Optimisation basée sur les données

L'approche d'Infinity Ward va au-delà du développement initial pour englober une optimisation continue basée sur la collecte de données réelles. L'équipe surveille en permanence le comportement des serveurs et des clients, recueillant des données télémétriques sur les expériences individuelles des joueurs afin d'identifier des opportunités d'amélioration.

Les données des tests bêta ont confirmé l'efficacité de leur approche de mise en mémoire tampon, le système fonctionnant de manière constante à des seuils optimaux sans dépassements fréquents. Cette méthodologie basée sur les données se poursuit après le lancement grâce à des tests réguliers menés auprès des populations de joueurs actifs.

Conclusion

Le netcode de Call of Duty Modern Warfare représente un aperçu intéressant des contraintes techniques tout en maintenant des expériences jouables pour des millions de joueurs à travers le monde. L'approche sophistiquée du système en matière de mise en mémoire tampon, de prédiction et de mélange dynamique de stratégies démontre comment les jeux multijoueurs modernes gèrent les défis inhérents à la mise en réseau en temps réel.

Les enseignements de l'équipe d'ingénierie d'Infinity Ward révèlent qu'un excellent netcode ne consiste pas à éliminer les problèmes de réseau, mais plutôt à les gérer avec souplesse lorsqu'ils surviennent inévitablement.

Leur approche consistant à partir de bases solides à faible latence et à construire par-dessus des systèmes de tolérance robustes fournit un modèle pour maintenir la qualité même dans les environnements multijoueurs les plus exigeants. Un tel netcode a été développé sur mesure, ce qui le rend inaccessible à la plupart des développeurs.

Heureusement, le matchmaker d'Edgegap est le seul largement disponible à intégrer des règles de latence. Comme il est entièrement intégré à l'orchestrateur d'Edgegap, il exploite également le plus grand réseau edge au monde, ce qui permet à votre jeu multijoueur de déployer son serveur de jeu au plus près des utilisateurs. Réduisant la latence de 58 % en moyenne, il offre une latence inférieure à 50 ms à 78 % de votre base de joueurs.

---

Cet article est basé sur et cite l'article original d'Activision issu de leurs explications officielles. Tous les droits sur le contenu original appartiennent à leurs propriétaires respectifs.

Écrit par

l'équipe Edgegap

Intégrer Edgegap facilement en quelques minutes

Commencez l'intégration maintenant!

Mettez votre jeu en ligne facilement
& en quelques minutes

Intégrer Edgegap facilement en quelques minutes