Bir 2D sunucu-istemci çok oyunculu oyun motoru üzerinde çalışıyorum ( burada deneyebilirsiniz ). WebRTC DataChannel
s kullanır . (Bağlantılar eşler arasıdır, ancak ana bilgisayar eşi yine de bir sunucu görevi görür.)
En büyük sorun (bağlantı dışında) yerel girdi öngörüsüdür. Her zamanki gibi yaparız: Tuşa basıldığında, oyuncular anında hareket eder, ana bilgisayara hangi tuşlara basıldığını söyler, ana bilgisayardan veri alır ve tarihi konumla karşılaştırır. Bir fark varsa pozisyon zaman içinde düzeltilir. Ping yüksek olsa bile bu, düşük paket kaybı veya PDV ile iyi çalışır .
Kayıp veya PDV varsa, sapma daha büyük olabilir. Bunun nedeni, giriş değişikliğini gösteren ilk paketin ertelenmesi veya düşürülmesi durumunda, ana makinenin daha sonra öğrenmesi ve bu oynatıcıyı yerel giriş tahmininden daha sonra değiştirmeye başlamasıdır.
Oyuncu hareket ediyorsa, daha az farkedildiğinden, uygulanan düzeltme miktarını arttırdık. Bu, hareket etmeye başlarken ve hareket ederken boşlukları örtüyor gibi görünüyor. Bununla birlikte, ani bir duruşa gelirlerse herhangi bir düzeltme daha belirgindir. Daha sonra PDV veya kayıp, ana makinenin daha sonra durduklarını düşündüğü anlamına gelirse, ana bilgisayar aşır, biraz daha ileride olduklarını söyleyerek verileri geri gönderir ve düzeltme, oyuncuyu biraz sürükler. Kesintili bağlantılarda, oyuncular genellikle durduktan sonra fark edilir şekilde sürüklenirler.
Bunu diğer oyunlarda fark etmedim. Bu nasıl hafifletilebilir?