Étude de cas : Éliminer les problèmes de netcode avec Edgegap

Kickin’ out netcode issues with Edgegap
Kickin’ out netcode issues with Edgegap
Kickin’ out netcode issues with Edgegap

Résoudre les problèmes de netcode avec Edgegap

Le Contexte

Décrire Jonah Wallerstein, le développeur de KungFu Kickball, comme patient et ingénieux dans la construction d'un jeu en ligne multijoueur en temps réel en solo serait un euphémisme. 

Son parcours dans le développement du multijoueur en ligne est détaillé sur Game Developer alors qu'il explique les défis qu'il a rencontrés en essayant de mitiger les problèmes de netcode et donne des conseils sur comment il les a résolus. 

Kung Fu Kickball - Screenshot - 8 Playable Champions

Le Problème

KungFu Kickball est un jeu de combat-sport dans lequel les joueurs donnent des coups de pied, des coups de poing et des coups de tête pour frapper le ballon dans la cloche de l'adversaire afin de marquer des points. Comme tout développeur de jeux le sait, les jeux de combat en ligne sont particulièrement difficiles en raison de l'importance de la mémoire musculaire et des temps de réaction : un mauvais netcode peut ruiner l'expérience de combat en ligne.

Dès le début, Jonah gardait le netcode à l'esprit car il voulait s'assurer que le jeu n'avait pas de latence et offrait aucun avantage déloyal à un joueur en raison de la latence. De plus : il voulait que KungFu Kickball soit multiplateforme.

Jonah développait le jeu avec Unity et avait initialement pensé utiliser le plugin Photon PUN pour l'aspect multijoueur et multiplateforme de KungFu Kickball. Cependant, il a remarqué deux principaux problèmes concernant la gestion de l'autorité des joueurs par PUN : 

  • En mode d’autorité partagée peer-to-peer : L'expérience de jeu serait étrange car il n'y avait pas d'état de synchronisation réel, surtout dans la manière dont les collisions seraient gérées sur le client de chaque joueur.

  • En mode d'autorité client-hôte peer-to-peer : Cela donnerait un avantage déloyal à l'hôte avec 0 ms de latence 

Kung Fu Kickball - Screenshot

Jonah a commencé à rechercher comment d'autres jeux de combat gèrent le netcode. Il a découvert que le netcode lockstep/rollback (GGPO) était souvent utilisé pour les jeux multijoueurs peer-to-peer. Néanmoins, il avait des problèmes avec l'implémentation traditionnelle du netcode lockstep/rollback.

Comme Jonah l'a écrit dans son article

"Un des problèmes majeurs qui peuvent survenir avec le lockstep est un ralentissement. Parfois, même le rollback ne suffit pas à cacher la latence entre les joueurs. Et lorsque le jeu manque de frames de rollback, il doit s'arrêter et attendre que les entrées arrivent. Ce problème s'exacerbe lorsque vous avez plus de deux joueurs. Si un joueur a une mauvaise connexion, cela peut ralentir le jeu pour tout le monde."

Kung Fu Kickball - Screenshot

C'est à ce moment-là qu'il a décidé d'ajouter une autorité impartiale au jeu et de créer ce qu'il a appelé un "netcode rollback autoritaire par serveur" au lieu d'un rollback peer-to-peer. 

Mais son puzzle de netcode manquait encore de quelque chose. La raison ? L'introduction d'un serveur peut aggraver les temps de réponse. Par exemple, si le serveur est à New York et que deux joueurs au Royaume-Uni se battent l'un contre l'autre, la latence serait pire que de les faire jouer en peer-to-peer. Avoir plusieurs serveurs était également hors de question car il ne voulait pas diviser sa base d'utilisateurs et n'avait pas le luxe d'avoir des serveurs dans toutes les régions du monde. 

La réponse à son puzzle est venue sous la forme d'un nouveau moyen d'héberger des serveurs de jeux qui combinent un grand pool de localisations de serveurs avec une disponibilité immédiate.

Comment Edgegap a aidé

Jonah a trouvé Edgegap, qui lui a fourni des serveurs sur une base par match, grâce à la conteneurisation et à un serveur propriétaire. En conséquence, les mêmes deux joueurs du Royaume-Uni seraient probablement assignés à un serveur en Angleterre, disons, ou quelque part très proche. Ainsi, il n'avait pas besoin de diviser sa base d'utilisateurs en régions, réduisant le matchmaking et améliorant l'expérience joueur.

Edgegap aide non seulement à la performance mais aussi à l'aspect coût. "Edgegap me permet de garder le nombre de serveurs que je paye activement assez bas tout en ayant en même temps un vaste réseau à exploiter."

Enfin, l'intégration d'Edgegap était extrêmement rapide et simple. Jonah a dû transformer son application serveur en une image de conteneur et la lier à la plateforme Edgegap. Cette facilité d'utilisation lui a permis de déployer son jeu n'importe où dans le monde en quelques secondes — et signifiait que KungFu Kickball avait un netcode à la pointe de la technologie avec les 350 localisations de serveurs disponibles en quelques secondes après avoir effectué un appel API. Vraiment le meilleur des deux mondes pour ce développeur de jeux indé avec de grandes ambitions. 

Écrit par

l'équipe Edgegap

Sources et/ou collaboration de contenu avec

l'équipe WhaleFood