Découvrez comment fonctionne Edgegap

Découvrez comment fonctionne Edgegap

Netcode de type Rollback

Le netcode rollback prédit ce que les joueurs distants vont faire, simule immédiatement la suite, puis rembobine et rejoue la simulation lorsque leurs véritables commandes arrivent. Les commandes locales n'attendent jamais le réseau, de sorte que le jeu reste réactif même avec une latence élevée. Des corrections deviennent visibles lorsque les prédictions sont erronées, ce qui est le compromis qu'il propose.

Aussi appelé

restaurer

Par

Par

Par

Philip Coté

Philip Coté

Philip Coté

,

Directeur technique

Directeur technique

Directeur technique

Publié

Publié

Publié

Comment fonctionne le netcode de type rollback, étape par étape ?

En ligne, les commandes de l'autre joueur arrivent toujours en retard. La réponse du rollback est de ne pas attendre. À chaque image, le jeu :

  1. Exécute vos commandes immédiatement, sur l'image suivante, comme il le ferait hors ligne.

  2. Prédit les commandes de l'autre joueur, généralement en répétant les dernières reçues. À 60 images par seconde, une image dure environ 16,7 ms, et les joueurs changent de touches beaucoup moins souvent, donc la prédiction est généralement correcte.

  3. Sauvegarde l'état du jeu pour les dernières images.

  4. Corrige lorsque les vraies commandes arrivent. Si elles diffèrent de la prédiction, le jeu restaure l'image à laquelle la commande appartenait, l'applique et simule à nouveau chaque image depuis lors, avant d'afficher la suivante.

Les joueurs voient l'étape 4 comme une correction : une attaque qui apparaît déjà commencée de quelques images, ou un personnage qui se téléporte au bon endroit. Il ne s'agit pas d'une compensation de décalage, où un serveur rembobine les positions uniquement pour vérifier si un tir a fait mouche.

L'importance de chaque correction dépend d'un seul facteur : le retard avec lequel la commande est arrivée.

Netcode rollback vs netcode basé sur le délai : combien de latence le rollback peut-il masquer ?

Le netcode basé sur le délai retient chaque commande jusqu'à ce que la commande distante pour la même image soit arrivée. Les deux écrans sont toujours d'accord et rien n'est corrigé, mais les commandes subissent un retard, et lorsque le délai change en cours de match, le timing de chaque mouvement change également.

Le rollback maintient les commandes au timing hors ligne et déplace le coût vers les corrections, et la latence en définit la taille. Une commande en retard de 100 ms correspond à environ six images en arrière à 60 images par seconde, de sorte que le mouvement de l'adversaire apparaît après six images. À 30 ms, cela représente deux images, ce que les joueurs ne remarquent souvent jamais. Le rollback masque la latence. Il ne la supprime pas, et plus elle est élevée, plus elle se manifeste.

La plupart des jeux commercialisés utilisent les deux : un léger délai d'entrée fixe absorbe une partie de la latence, le rollback couvre le reste, et une limite restreint la distance de prédiction. La mise à jour du rollback de NetherRealm pour Mortal Kombat X et Injustice 2 a conservé trois images de délai d'entrée, avec un moteur conçu pour simuler à nouveau jusqu'à huit images au cours d'une seule image de 16 ms (Michael Stallone, GDC 2018). Au-delà de cette limite, la latence supplémentaire se transforme généralement en un délai d'entrée plus important ou en une pause, et non en des corrections plus importantes.

Combien coûte le développement d'un netcode rollback ?

Le joueur bénéficie de commandes réactives. Le développeur en paie le prix à trois niveaux :

  • Le CPU. Un rollback réexécute plusieurs images de logique de jeu dans le budget d'une seule image. La première implémentation de NetherRealm prenait environ 30 ms par image pour un budget de 16,7 ms, et sa mise en production a nécessité environ sept à huit années-homme, selon la même conférence.

  • La sauvegarde et la restauration de l'état. Tout ce qui peut changer doit être rapide à capturer et à restaurer à chaque image. Les particules et le son nécessitent un traitement spécifique, sous peine d'être rejoués à chaque retour en arrière.

  • Le déterminisme, lorsque seules les entrées sont envoyées. Dans la conception classique de pair-à-pair popularisée par la bibliothèque GGPO, chaque machine exécute la simulation complète à partir d'entrées partagées, de sorte que les deux doivent calculer des résultats identiques. Toute différence constitue une désynchronisation.

C'est pourquoi le rollback s'est d'abord imposé dans les jeux de combat : deux joueurs, un état de jeu réduit et un taux fixe de 60 images par seconde. Chaque joueur supplémentaire représente une entrée de plus pouvant faire l'objet d'une mauvaise prédiction, et un état plus important coûte plus cher à sauvegarder et à simuler à nouveau.

Le Rollback Netcode nécessite-t-il du Peer-to-Peer ?

Non. Le rollback de style GGPO s'est développé sur des connexions peer-to-peer, où les joueurs s'envoient directement leurs commandes. La même boucle fonctionne également avec un serveur dédié comme source de vérité : aucun hôte ne peut quitter ou falsifier la partie, et les clients se corrigent par rapport à l'état du serveur plutôt que par rapport aux seules commandes des autres joueurs.

Rivals of Aether 2 est conçu de cette manière. Il utilise le rollback de SnapNet sur des serveurs dédiés, et SnapNet « resimule l'intégralité de l'état du jeu sans exiger un déterminisme strict » (analyse de Rivals of Aether 2, novembre 2024). L'envoi de l'état en plus des commandes est ce qui assouplit l'exigence de la Partie 3.

Un serveur modifie également l'itinéraire, et l'itinéraire direct n'est pas toujours le plus court. Dans une analyse Edgegap de 2020 portant sur 122 000 matchs en peer-to-peer d'un jeu de combat en 1v1, le routage de chaque match via un serveur situé au meilleur emplacement disponible entre les deux joueurs a réduit le temps d'aller-retour moyen de 23 % dans 70 % des matchs (rapport 1v1). Moins de retard signifie moins d'images à annuler, de sorte que les corrections de la Partie 2 diminuent d'autant.

Un mot de notre sponsor (nous-mêmes !)

La majeure partie du lag provient de la distance, non du code. L'Edge Cloud d'Edgegap est un réseau distribué disposant de plus de 615 emplacements disponibles sur demande, garantissant que chaque partie se déroule au meilleur endroit possible pour ses joueurs. Des tests indépendants sur le trafic d'un studio en direct ont mesuré une baisse de 58 % du temps de trajet aller-retour moyen par rapport au cloud public.

Questions Fréquemment Posées

Le netcode rollback est-il réservé aux jeux de combat ?

Est-ce que le netcode de type rollback est meilleur que le netcode basé sur le délai ?

Puis-je utiliser le rollback netcode dans Unity, Unreal ou Godot ?

Est-ce que le netcode de type rollback ignore des entrées ?

Intégrer Edgegap facilement en quelques minutes

Commencez l'intégration maintenant!

Commencez l'intégration maintenant!