Résoudre les problèmes de netcode avec Edgegap

Rédigé en collaboration avec

Jeux WhaleFood

Le Contexte

Décrire Jonah Wallerstein, le développeur de KungFu Kickball, comme patient et ingénieux pour créer 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 auxquels il a été confronté pour atténuer les problèmes de netcode et donne des conseils sur la manière dont il les a résolus. 

Le Problème

KungFu Kickball est un jeu de sports de combat dans lequel les joueurs donnent des coups de pied, de poing et des têtes 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'ait pas de latence et qu'aucun joueur ne bénéficie d'un avantage déloyal en raison de la latence. De plus : il voulait que KungFu Kickball soit jouable entre différentes plateformes.

Jonah développait le jeu avec Unity et pensait d'abord utiliser le plugin Photon PUN pour l'aspect multijoueur et jouable entre plateformes de KungFu Kickball. Cependant, il a remarqué deux problèmes principaux sur la manière dont PUN gérait l'autorité des joueurs : 

  • 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, notamment sur la façon dont les collisions seraient gérées sur chaque client des joueurs.

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

Jonah a commencé à rechercher comment d'autres jeux de combat géraient 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 a eu des problèmes avec l'implémentation traditionnelle du netcode lockstep/rollback.

Comme Jonah l'a écrit dans son article

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


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

Mais son puzzle de netcode lui manquait encore 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 combattent, la latence serait pire que de simplement les faire jouer peer-to-peer. Avoir plusieurs serveurs était également exclu car il ne voulait pas diviser sa base de joueurs et n'avait pas le luxe d'avoir des serveurs dans toutes les régions du monde. 

La réponse à son puzzle est venue d'une nouvelle façon d'héberger des serveurs de jeu qui combine 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 britanniques seraient très 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 par régions, réduisant le matchmaking et améliorant l'expérience des joueurs.

Edgegap aide non seulement à la performance mais aussi à l'aspect coût. "Edgegap me permet de maintenir le nombre de serveurs pour lesquels je paie activement assez bas tout en ayant en même temps un vaste réseau sur lequel puiser."

Enfin, l'intégration d'Edgegap a été 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 ainsi que les 350 localisations de serveurs disponibles pour lui en quelques secondes après un appel API. Vraiment le meilleur des deux mondes pour ce développeur de jeux indépendant avec de grandes ambitions.