Para ahorrar ancho de banda en mi juego multijugador , no actualizo cada objeto en cada tic del servidor, en cambio, cada objeto tiene una tasa de actualización que le dice al juego que se espera que este objeto se actualice cada tic del servidor X.
Cuando recibo un mensaje de actualización para un objeto, calculo el tiempo que espero que llegue la próxima actualización:
origin = serverCurrentPosition
diff = serverNextPosition - origin
arriveTime = now + timeBetweenTicks * updateRate
Cuando dibujo el objeto, calculo el tiempo que queda hasta la próxima actualización e interpolo la posición en consecuencia:
step = 100 / timeBetweenTicks * updateRate
delta = 1 - step * ((arriveTime - now) / 100)
position = origin + diff * delta
Funciona ... pero todavía hay un poco de nerviosismo en el dibujo, aunque en mi teoría todo debería funcionar bien, ya que la escala debería solucionar una cierta cantidad de retraso, ¿no?
Entonces la pregunta aquí es, ¿es este el mejor enfoque? ¿Debo poner un retraso real en el cálculo? Si es así, ¿cómo haría eso? Hice algunos experimentos, pero la inquietud solo empeoró.