Afin d'économiser de la bande passante dans mon jeu multijoueur , je ne mets pas à jour chaque objet à chaque tick du serveur, mais chaque objet a un updateRate qui indique au jeu que cet objet devrait être mis à jour à chaque tick du serveur X.
Lorsque je reçois un message de mise à jour pour un objet, je calcule l'heure à laquelle j'attends la prochaine mise à jour:
origin = serverCurrentPosition
diff = serverNextPosition - origin
arriveTime = now + timeBetweenTicks * updateRate
Lorsque je dessine l'objet, je calcule le temps restant jusqu'à la prochaine mise à jour et interpole la position en conséquence:
step = 100 / timeBetweenTicks * updateRate
delta = 1 - step * ((arriveTime - now) / 100)
position = origin + diff * delta
Cela fonctionne ... mais il y a encore un peu de gigue dans le dessin, bien que dans ma théorie, tout devrait fonctionner correctement, car la mise à l'échelle devrait prendre en charge un certain décalage, non?
Donc la question ici est, est-ce la meilleure approche? Dois-je mettre un retard réel dans le calcul? Si oui, comment ferais-je cela? J'ai fait quelques expériences, mais la gigue n'a fait qu'empirer.