Oyunlarda istemci / sunucu ağ mimarisi hakkında bilgi edinmek için çok oyunculu bir asteroit klonu uyguluyorum. Onların istemci / sunucu teknoloji GafferOnGames ve Valve'ın yayınlarını okumak için zaman geçirdim. İki kavramla ilgili sorun yaşıyorum.
Şu anda box2d ile fiziği simüle eden ve dünyanın durumunu saniyede 20 kez istemcilere gönderen yetkili bir oyun sunucum var. Her müşteri, sprite hareketini yumuşatmak için son birkaç anlık görüntüyü takip eder ve iki durum arasında geçiş yapar. Ancak o kadar da düzgün değil. Bir süre pürüzsüz olabilir, sonra biraz sarsıntılı, daha sonra pürüzsüz hale gelebilir, vb. Hem TCP hem de UDP'yi denedim, her ikisi de yaklaşık aynı. Sorunumun ne olabileceği hakkında bir fikrin var mı? (Not: Bunu önce tek oyuncu için uyguladım ve fizik dünyasını saniyede sadece 20 kez güncellediğinde sprite hareketi 60 fps'de mükemmel bir şekilde pürüzsüz).
İlk sorunu çözmek için, müşterinin bir box2d simülasyonu da çalıştırması ve sadece spritelarının konumlarını eşleşmediğinde sunucu anlık görüntülerine uyacak şekilde güncellemesi gerektiğini düşündüm. Tek oyunculu uygulamam sorunsuz olduğu için bunun daha pürüzsüz olabileceğini düşündüm. Bu iyi bir fikir mi?
Yukarıdaki sorunu çözmese bile, müşteri tarafı tahmini için gerekli mi? Örneğin, bir oyuncu gemilerini hareket ettirmeye çalışırsa, fizik simülasyonu olmayan bir asteroit, duvar veya düşman gemisine çarpıp çarpmadığını nasıl anlayacaklar? Gemilerinin, nesneden vurduklarını söyleyen bir anlık görüntü almadan önce çarpışmaları gereken nesneden geçtiği anlaşılıyor.
Teşekkürler!