Qu'est ce que le lag de compensation
Le lag de compensation est un mécanisme mis en œuvre par les développeurs de jeu pour réussir le tour de force de satisfaire toutes les contraintes énoncées au paragraphe précédent tout en offrant une expérience de jeu agréable et fluide. Plusieurs méthodes sont couramment utilisées et sont implémentées soit du côté client, soit du côté serveur.
Du côté client, deux méthodes sont usuellement implémentées :
L'extrapolation (prédiction) : le fonctionnement est "simple". Nous avons vu plus haut dans cet article que le serveur envoie aux clients de manière régulière un "état" considéré comme faisant autorité, les clients s'y ajustent donc.
Entre la réception de deux états, le client "prédit" l'état final en calculant lui-même en fonction des entrées saisies par le joueur (pad, clavier, souris ...).
Lorsque le nouvel état "fiable" est reçu depuis le serveur, le client adapte ses informations immédiatement. Ceci peut donc donner l'impression que les joueurs "se téléportent" sur votre écran (les joueurs de COD en 1 barre rouge comprendront aisément ce dont je parle).
L'inconvénient principal de cette méthode réside dans un fait simple : nous ne pouvons pas prédire le futur de manière fiable. Plus le mouvement sera continu et constant, plus la prédiction sera juste. Par contre, si le joueur change régulièrement de direction et / ou de vitesse, les prédictions sans pour autant être totalement fausses seront bien moins précises. Vous comprendrez également la difficulté de prédiction si on ajoute des simulations balistiques à ce problème.
L'interpolation : contrairement à l'extrapolation, l'interpolation ne se base que sur des informations émises du serveur et donc fiables.
Lorsqu'un lot d'information est reçu depuis le serveur, le client va mettre à jour la position des joueurs depuis la dernière position connue jusqu'à la position reçue en reconstruisant les états intermédiaires. Ainsi, il n'existe pas d'erreur possible au niveau des trajectoires entre les états puisqu'ils proviennent tous d'une source fiable.
L'inconvénient majeur de cette méthode et qu'il ajoute une latence supplémentaire au niveau du jeu en lui même. Un second inconvénient est non des moindres et qu'en cas de perte de lots d'information lors de la transmission sur Internet, le client se retrouve dans l'impossibilité de poursuivre son activité jusqu'à la prochaine réception d'un lot fiable.
Du côté du serveur, pas d'interpolation ou d'extrapolation puisqu'il détient la "vérité". Néanmoins, le serveur se doit de compenser les différentes latences qu'il perçoit des clients pour permettre une expérience de jeu homogène aux joueurs.