Tutoriel Mulijoueur 1 : Introduction

4

Index

Statistiques

4,963 visites, 12,152 vues

Outils

Partager

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 11 Nov, 2021. Last updated 12 Nov, 2021

Compensation du retard

Considérons le problème suivant : le joueur A est immobile et vise le joueur B, qui court vers la droite. Le joueur A place la souris exactement au-dessus du joueur B et tire. (Supposons que le tir soit instantané, comme un laser ou un projectile à vitesse infinie.) Le message envoyé à l'hôte indiquant qu'il tire met 100 ms à arriver. Pendant ce temps, le joueur B continue à se déplacer vers la droite. L'hôte reçoit le message avec 100 ms de retard et recherche une collision à l'endroit où le joueur A vise - mais il la rate, car le joueur B s'est déplacé ! Le joueur A s'est vu donner un coup direct, mais il n'a jamais causé de dégâts.

En général, l'hôte voit chaque joueur faire tout ce qu'il fait avec un peu de retard à cause de sa latence, et les joueurs finissent par manquer des cibles en mouvement. Ce genre de problème exaspère les joueurs, qui finissent par apprendre qu'ils doivent en fait viser l'espace vide situé devant l'endroit où le joueur se déplace. Ce n'est pas très réaliste ni juste. La compensation de retard est une technique permettant d'éviter ce résultat.

Temps de retour en arrière

L'hôte sait à quel point chaque joueur est en retard dans le jeu, car il mesure la latence de chacun. Ainsi, lorsque l'hôte reçoit le message indiquant que le joueur A est en train de tirer, il sait qu'il l'a fait 100 ms auparavant.

L'hôte se souvient des dernières secondes de l'historique de chaque objet. Il peut alors regarder en arrière et voir où se trouvait le joueur B il y a 100 ms. Il peut alors vérifier si le joueur A a touché le joueur B au moment où il a tiré. C'est ainsi que la latence du joueur A est compensée par l'hôte, et cela signifie que le joueur A a probablement marqué un point sur l'hôte lorsqu'il s'est vu marquer un point sur son propre écran.

Mais cela crée un autre problème. Le joueur B a lui aussi un retard. S'il a une latence de 100 ms, alors l'hôte le déplace environ 100 ms derrière l'endroit où il se voit (rappelez-vous que sa prédiction d'entrée locale le déplace directement). En plus de cela, l'hôte les déplace encore plus en arrière lorsqu'il teste une collision lorsque le joueur A tire.

Cela signifie que le joueur B voit le joueur A viser derrière lui là où il pourrait le rater, tirer, et être touché quand même ! Dans des cas extrêmes, le joueur B peut en fait s'être mis à l'abri du joueur A, de sorte qu'il ne peut pas être directement touché, et il subit soudainement des dégâts. C'est ennuyeux pour le joueur B, mais ce n'est généralement pas aussi grave que de ne pas avoir de compensation - au moins les joueurs doivent se viser directement pour toucher. Une solution courante consiste à ne pas indiquer clairement où les joueurs visent, de sorte que le joueur B ne voit pas facilement que le joueur A semble viser derrière lui, ce qui rend plus acceptable le fait qu'il soit touché.

  • 0 Comments

Want to leave a comment? Login or Register an account!