Socket.io kullanarak ilk çevrimiçi oyunumu oluşturuyorum ve bunun agar.io veya diep.io gibi gerçek zamanlı çok oyunculu bir oyun olmasını istiyorum.
Ama tüm bilgisayarları aynı hızda nasıl çalıştıracağımızı anlamaya çalışıyorum.
Modeller için üç fikrim var, ancak hiçbiri doğru görünmüyor ve normal video oyunlarının nasıl yaptığını merak ediyorum. (Fikirlerimi okumayı atlayabilirsiniz; size yaşadığım sorunları görmeniz için bir yol sunarlar.)
Sunucu, istemcilerin kendi başlarına çalışmasına ve sunucuya güncellemeleri iletmesine izin verir, bu da onları diğer istemcilere yayınlar. Bu, bazı bilgisayarların diğerlerinden daha hızlı çalıştığı ve daha hızlı güncelleme yapmalarına ve ekran boyunca daha hızlı hareket etmelerine izin verme sorununa sahiptir.
Sunucudan istemcilere ne zaman güncelleme yapılacağını söyleyin. Daha sonra son müşteri yanıt verene kadar bekleyebilirim (bir kişinin bilgisayarının yavaş olması durumunda korkunç bir fikir), ilk istemci yanıt verene kadar bekleyebilirim (yine, her çerçeveden önce iletişim bekleniyor) veya sadece olabildiğince hızlı gönderebilirim ( 1 numarayla aynı sorunla karşılaşıyor gibi görünüyor).
Oyunun başında, sunucuya müşterilere ne kadar hızlı güncelleme yapılacağını söyleyin. Bu, müşterinin o zaman aralığındaki hareketi kısıtlamaktan sorumlu olacağı anlamına gelir. Örneğin, birisi bu süre içinde bir şekilde iki kez bir düğmeye basmayı başarırsa, yalnızca bir düğmeye basma olayı gönderir. Bu, bazı eylemlerin göz ardı edilmesi (çift düğmeye basma gibi) ve etkileşimin, sunucunun saatiyle eşleşmeyebilecek istemcinin saatine dayanması sorunudur. Sunucunun her istemciyi takip etmesi ve güncellemelerinin doğru zamanda gönderildiğinden emin olması gerekir.
Biraz araştırma yaptım , ancak okuduğum makaleler, bir istemci diğer istemcilerden daha hızlı güncellemeler gönderirse ne yapacağını özellikle ele almıyor gibi görünüyor.
Benim özel durumumda, daha yüksek klavye hızlarına sahip kişilerle uğraşıyorum (bilgisayarları diğer bilgisayarlardan daha fazla klavye güncellemesi gönderir).
Programcılar genellikle bununla nasıl ilgilenir?