Per risparmiare larghezza di banda nel mio gioco multiplayer , non aggiorno ogni oggetto ogni tick del server, ma ogni oggetto ha un updateRate che dice al gioco che questo oggetto dovrebbe essere aggiornato ogni tick del server X.
Quando ricevo un messaggio di aggiornamento per un oggetto, calcolo il tempo in cui mi aspetto che arrivi il prossimo aggiornamento:
origin = serverCurrentPosition
diff = serverNextPosition - origin
arriveTime = now + timeBetweenTicks * updateRate
Quando disegno l'oggetto, calcolo il tempo rimasto fino al prossimo aggiornamento e interpolo la posizione di conseguenza:
step = 100 / timeBetweenTicks * updateRate
delta = 1 - step * ((arriveTime - now) / 100)
position = origin + diff * delta
Funziona ... ma c'è ancora un po 'di jitter nel disegno, anche se nella mia teoria tutto dovrebbe funzionare bene, dal momento che il ridimensionamento dovrebbe occuparsi di certo ritardo, giusto?
Quindi la domanda qui è, è questo l'approccio migliore? Devo mettere un ritardo effettivo nel calcolo? Se è così, come lo farei? Ho fatto alcuni esperimenti, ma il jitter è peggiorato.