En ce qui concerne plus particulièrement les jeux en ligne, qu'est-ce que la compensation du décalage ? Cela doit-il avoir une incidence sur ma façon de jouer ?
Réponses
Trop de publicités?Valve a publié un excellent article expliquant les détails du réseau multijoueur (également appelé "netcode") de leurs jeux multijoueurs. D'après cet article :
Compensation du décalage
Supposons qu'un joueur tire sur une cible au temps client 10,5. Les informations relatives au tir sont regroupées dans une commande utilisateur et envoyées au serveur. Pendant que le paquet parcourt le réseau, le serveur continue de simuler le monde et la cible peut avoir changé de position. La commande utilisateur arrive au temps 10.6 du serveur et le serveur ne détecte pas le coup, bien que le joueur ait visé exactement la cible. Cette erreur est corrigée par la compensation du décalage côté serveur.
Le système de compensation du décalage conserve un historique de toutes les positions récentes des joueurs pendant une seconde. Si une commande utilisateur est exécutée, le serveur estime l'heure à laquelle la commande a été créée de la manière suivante :
Command Current Packet Client Execution = Server - Round-Trip - View Time Time Time Interpolation
Ensuite, le serveur ramène tous les autres joueurs - uniquement les joueurs - à l'endroit où ils se trouvaient au moment de l'exécution de la commande. La commande de l'utilisateur est exécutée et le coup est détecté correctement. Une fois la commande utilisateur traitée, les joueurs reprennent leur position initiale.
Cette capture d'écran a été prise sur un serveur listen avec 200 millisecondes de lag (en utilisant net_fakelag), juste après que le serveur ait confirmé le coup. La hitbox rouge montre la position de la cible sur le client, là où elle se trouvait il y a 100 millisecondes. Depuis lors, la cible a continué à se déplacer vers la gauche pendant que la commande de l'utilisateur était transmise au serveur. Après l'arrivée de la commande de l'utilisateur, le serveur a rétabli la position de la cible (hitbox bleu) en fonction du temps d'exécution estimé de la commande. Le serveur trace le tir et confirme le coup (le client voit les effets du sang).
Plus d'informations dans l'article. Si cela vous intéresse, je vous recommande vivement de le lire en entier. Il n'est pas trop long, et entre autres choses, il explique l'interpolation d'entités (qui fait partie de l'équation ci-dessus) et la prédiction d'entrée. N'oubliez pas que Valve est responsable du netcode de certains des jeux en ligne les plus populaires aujourd'hui - Counter Strike et Team Fortress 2 - et qu'il s'agit donc probablement d'un travail aussi professionnel que possible.
Le code source qui le met en œuvre est accessible au public dans le cadre du SDK Source.
La compensation du décalage est une fonctionnalité des jeux modernes qui permet au moteur d'estimer la position des joueurs en fonction de leur ping.
Par exemple, si un utilisateur court vers l'avant à la vitesse de 10 feet per second
et leur ping est 1000ms
Vous verrez qu'ils continueront à courir forward
pour cela whole second
ou jusqu'à ce que vous receviez une nouvelle mise à jour de leur position et de leur direction.
Cela évite aux utilisateurs d'avoir l'air d'être agités. Toutefois, en cas de décalage extrême, il peut se produire un phénomène de "rubber banding".