İki ağa bağlı durum arasında enterpolasyon mu yapıyorsunuz?


11

Müşteri tarafında simüle edilen birçok varlığım var (hızları çerçeve başına konumlarına ekleniyor) ve kendilerinin ölmelerini sağladım. En son nerede görüldükleri ve hız değişimleri hakkında güncellemeler gönderirler. Bu harika çalışıyor ve diğer oyuncular bu çalışmayı buluyor. Ancak, bir süre sonra bu oyuncular bir süre sonra desyncclemeye başlar. Bunun nedeni gecikme.

Devletler arasında nasıl enterpolasyon yapabileceğimi bilmek istiyorum, böylece doğru pozisyonda görünüyorlar. Oyuncunun en son nerede göründüğünü ve şu anki hızını biliyorum ama son görülen duruma enterpolasyon yapmak oyuncunun aslında - geriye doğru hareket etmesine neden oluyor. Hızı diğer müşteriler için hiç kullanamadım ve sadece uygun yöne doğru 'lerp' ettim ama bunun jaggy hareketine neden olacağını hissediyorum. Alternatifleri nelerdir?

Yanıtlar:


9

Bu nedenle, simülasyonlar genellikle 1 veya daha fazla kare çalıştırılır bulacaksınız öncesinde aslında bir ver istemci üzerinde zaman içinde belirli bir noktada oluşturulmakta olan ne. Başka bir deyişle, oluşturduğunuz şey aslında son kare değil, ikinci son kare olabilir.

Bu makalede "önde" kelimesinin tüm örnekleri için arama yapın ve bence resmi yukarıda açıkladığımdan daha iyi almaya başlayacaksınız.


Tamam, yani oyuncuyu gerçekten 300 ms önce olduğu gibi ve geleceğe enterpolasyon yapmam gerektiğini mi ima ediyorsun? (Ayrı bir durumda, yeni bir devlet geldiğinde; bu değişecektir)
Vaughan Hilts

@VaughanHilts Tekrar, lütfen makaleyi ve yorumları okuyun. Gaffer bu alanda uzman ve benden çok daha net bir şekilde açıklıyor. Ancak genel fikir şu ki, evet, simülasyon modeliniz ilerlerken, renderiniz açıkladığınız etkiyi hesaba katmak için biraz geride. Bu tekniği gördüğüm tek yer kesinlikle değil.
Mühendis

2

Dediğinde:

bu oyuncular bir süre sonra desync'lemeye başlar

Sorununuzun saatlerinizin gecikme süresi ile ilgili herhangi bir gecikme sorunundan daha fazla olabileceğini düşündürüyor. Gecikme olursa, başlangıçta 10 dakikadan daha kötü olmalıdır. Bir oyun saati diğerinden biraz daha hızlı çalışıyorsa, zamanla daha da kötüleşecek bazı garip titremeler olacaktır. Bir istemci gelecekte simüle edebilir, mevcut paketler sunucudan geldiğinde, istemciyi geri çekerek varlıkların atlamasına neden olur. Öğrenmek için biraz daha test yapın.

Senkronize olmayan oyun saatleri gerçekten bir sorunsa, güncelleme döngünüze çok dikkatli bir şekilde bakmanız ve her güncellemenin geçirilen oyun süresinin (sabit veya değişken) miktarına ve oyunun -zaman, duvar saati gibi bir şey kullanılarak geliştirilir (zamanı veya diğer değişkenleri oluşturmaz). Gaffer'ın bu konuda iyi makaleleri var ve burada sabit ve değişken timesteps'lerden bahsederken iyi bir soru var . Bu yardımcı olur umarım.


Durum böyle değil, durum gerçekten çok fazla ölü olduğumu düşünüyor (bir gecikme başlangıcı ya da bir şey - 'durmak için paket' zamanında alınmıyor ve müşteri zamanında kendini düzeltemiyor. çünkü müşteri durduktan sonra çoğu DEFINTELAY tekrar enterpolasyon yapabilirim
Vaughan
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.