Le ping est le temps que met un paquet pour aller du client au serveur, puis, du serveur au client. Ici, la donnée véhiculée n'est pas importante, on cherche juste à déterminer le temps minimum que va prendre une donnée pour être envoyé au serveur, être interprétée par le serveur, puis revenir.
Donc pour atteindre un joueur, il faudra en théorie au minimum (et approximativement), LatenceTheorique = sonProprePing/2 + pingDuJoueurDistant/2 (en millisecondes).
La "lat.", est la latence "réelle". C'est le temps moyen que prend les données de position d'un autre joueur pour arriver jusqu'à toi (en millisecondes aussi). Elle est de zéro pour le joueur local, puisque NinjaTooken fonctionne sur une architecture "pair à pair", et non "centralisé sur le serveur". Un déplacement local est donc instantané et n'a pas à être sauvegardé sur le serveur : il fait référence.
Contrairement au ping et la latence théorique, la "lat." est relevée en jeu et prend en compte l'horloge centrale du jeu. Elle est normalement plus fiable : c'est donc cette valeur qui est prise en compte pour les calculs d'interpolation, extrapolation, et de compensation du lag (cad le NetCode du jeu).
Selon la bande passante utilisée pour le jeu, la qualité de connexion du joueur qui envoi la donnée et du joueur qui la reçoit, cette valeur est logiquement plus élevée que la "latence théorique".
Cette valeur est mise à jour régulièrement pour prendre en compte les variations de qualité de connexion et de consommation de bande passante tout au long d'une partie.
Note : la latence ne peut pas être négative... cela voudrait dire que les données sont reçues avant d'être envoyées (back to the future !).
En pratique, lorsque la latence est négative, cela veut à priori dire que l'horloge du joueur n'est pas synchronisée sur l'horloge globale du serveur, ce qui provoque donc des décalages de position. C'est un bug grave, qui a été évidemment rapporté à l'équipe Photon... et qui n'arrive pas à le reproduire pour le moment :/