Çok oyunculu oyunumdaki bant genişliğini kaydetmek için her sunucuyu işaretleyen her nesneyi güncellemiyorum, bunun yerine her nesnenin oyuna bu nesnenin her X sunucusu kenarı güncellenmesi beklendiğini söyleyen bir updateRate var.
Bir nesne için güncelleme mesajı aldığımda, bir sonraki güncellemenin gelmesini beklediğim zamanı hesaplıyorum:
origin = serverCurrentPosition
diff = serverNextPosition - origin
arriveTime = now + timeBetweenTicks * updateRate
Nesneyi çizdiğimde, bir sonraki güncellemeye kadar kalan süreyi hesaplar ve konumu buna göre enterpolasyona tabi tutarım:
step = 100 / timeBetweenTicks * updateRate
delta = 1 - step * ((arriveTime - now) / 100)
position = origin + diff * delta
Çalışıyor ... ama çizimde hala biraz titreme var, ancak teorimde her şey iyi çalışmalı, çünkü ölçeklendirme bir miktar gecikmeye dikkat etmeli, değil mi?
Buradaki soru şu: Bu en iyi yaklaşım mı? Hesaplamaya gerçek bir gecikme koymalı mıyım? Öyleyse, bunu nasıl yaparım? Bazı deneyimler yaptım, ama gerginlik daha da kötüleşti.