Ağ düzgünleştirmeyi uygulama


13

Bir multipler birinci şahıs nişancı yapıyoruz. İstemci konumunu sabit bir hızda (şu anda 10Hz'de) sunucuya gönderir. Sunucu, tüm oyuncuların pozisyonlarını aynı hızda (10Hz) sabitleyen tek bir mesaj gönderir.

Beklendiği gibi, hareket oldukça dalgalı çünkü 60fps oyunu sadece saniyede 10 kez güncelleme alıyor. Bu hareketi düzeltmenin en iyi yolu nedir? En belirgin yol, son iki paket arasında enterpolasyon yapmaktır, böylece yeni bir paket aldığımızda enterpolasyon biter. Ancak bu, tüm oyuncular için anında 100 ms gecikme ekler.

Diğer yol, oyuncunun bir sonraki paket gelmeden önce nerede olduğunu tahmin etmek için son birkaç paketten çıkarılan hızı ve ivmeyi kullanmak olacaktır, ancak tahmin yanlışsa, oyuncu yeni bir paket alındığında atlama eğilimi gösterecektir. .

AAA başlıklarının bu sorunu nasıl çözdüğünü bilen var mı?

Yanıtlar:


9

Tam olarak söylediklerinizi yapıyorlar - ya bu iki yaklaşımdan biri ya da aralarındaki uzlaşma. (örn. küçük bir gecikmeyi kabul edin ve mümkünse enterpolasyon yapın ve ping bu gecikmeyi aştığında ekstrapolasyon yapın.) Düzeltilmiş bir konuma geri atlamak yerine ('yakalama' olarak da bilinir), genellikle yanlış tahmin arasında bir tür enterpolasyon yaparsınız ve düzeltilmiş değeri, mümkünse yumuşatır. Uygulamanız gereken düzeltme miktarını azaltmak için geçmişte düzeltmeleri de gerçekleştirirsiniz.

Bu sık sorulan bir soru ve arama yaparsanız muhtemelen gamedev.stackexchange.com'da başka bir yerde bulabileceğiniz birkaç kanonik bağlantı vardır ve bunlar aşağıdakileri içerir:

Her programcının oyun ağı hakkında bilmesi gerekenler (bu, sonraki iki bağlantıdaki şeyleri özetler)

Kaynak Çok Oyunculu Ağ

Gerçek dışı Ağ Mimarisi

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.