11 votes

Qu'est-ce que la compensation du décalage ?

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 ?

17voto

Mike Stone Points 21293

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.

9voto

Michael Stum Points 72046

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".

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X