Bunu henüz uygulamadım (bu yüzden hemen göremediğim bazı sorunlar olabilir), ancak yardım etmeye çalışacağımı düşündüm.
İşte söylediğin şey:
Müşteri A, T0’a girdi gönderir
Sunucu T1’de giriş aldı
Tüm müşteriler T2’deki değişikliği alıyor
Ancak T2'de, müşteri tahminini kullanarak, Müşteri A şimdi T4'e uygun bir konumdadır.
Sunucu zamanı açısından düşünmek muhtemelen yararlı olacaktır. (Muhtemelen) enterpolasyonun nasıl çalıştığına çok benzer .
Her komut bir sunucu zamanı ile gönderilir. Bu sunucu zamanı bir maçın başında, sunucu onayını sorgulayarak, ping süresini telafi ederek belirlenir. İstemcide kendi yerel kene sayınız vardır ve gönderdiğiniz her komut sunucu tiklerine dönüştürülür (basit bir çıkarma işlemidir)
Ayrıca, müşteri her zaman "geçmişte" işlemektedir. Demek ki, müşterinin gördüğü dünyanın, sunucunun zamanının gerçekte ne olduğunun 100ms.
Öyleyse, örneğinizi sunucu zamanı ile değiştirelim (S ile gösterilir).
İstemci T0'da sunucu zamanı S0 ile girdi gönderir (tahmin ediyorum ki "sunucu zamanı eksi enterpolasyon zamanının gerçekten temsilidir"). Müşteri sunucudan yanıt beklemiyor ve hemen hareket ediyor.
Sunucu, T1’de giriş alır. Sunucu, istemcinin verdiği S0 sunucu zamanında müşterinin yetkili pozisyonunu bulur. Bunu müşteriye gönderir.
Müşteri, T2'deki yetkili pozisyonu alır (hala S0 sunucu zamanı belirtilerek). Müşteri önceki olayların değerinin geçmiş zaman miktarını takip eder (muhtemelen sadece tüm onaylanmamış tahminlerin kuyruğu).
Öngörülen pozisyon / hız / sunucunun S0'a geri gönderdiği her neyse, müşterinin S0'da depoladıklarından farklıysa, müşteri bunu bir şekilde ele alır. Ya oynatıcıyı eski pozisyonuna geri döndürerek ya da önceki girişi resmeden ya da belki de hiç düşünmediğim bir şeyle.