Aldığım bir bilgisayar bilimleri kursu için gerçek zamanlı bir strateji oyunu geliştiriyorum. Bunun en zor yönlerinden biri istemci-sunucu ağı ve senkronizasyonu gibi görünüyor. Bu konuyu okudum ( 1500 okçu dahil ), ancak diğer modellerin aksine (örneğin LAN üzerinden) bir istemci-sunucu yaklaşımı kullanmaya karar verdim.
Bu gerçek zamanlı strateji oyunu bazı problemlerle birlikte gelir. Neyse ki, oyuncunun yaptığı her eylem belirleyicidir. Ancak, planlanan aralıklarla gerçekleşen olaylar vardır. Örneğin, oyun fayanslardan oluşur ve bir oyuncu bir fayans aldığında, o karo üzerindeki bir değer olan 'enerji seviyesi', alındıktan sonra saniyede bir artar. Bu benim kullanım durumumu haklı göstermesi gereken çok hızlı bir açıklama.
Şu anda ince istemcileri yapıyorum, sadece sunucuya paketler gönderiyor ve yanıt bekliyorum. Ancak, bazı sorunlar var.
Oyuncular arasındaki oyunlar oyunsonuna dönüştüğünde, genellikle saniyede 50'den fazla olay olur (önceden planlanmış olaylar nedeniyle, daha önce açıklanır, birikir) ve senkronizasyon hataları ortaya çıkmaya başlar. Benim en büyük sorunum, istemciler arasındaki durumdaki küçük bir sapmanın bile, müşterilerin aldıkları farklı kararlar anlamına gelebilmesidir, bu da kartopunun tamamen ayrı oyunlara dönüşmesidir. Başka bir sorun (şu anda o kadar önemli değil), gecikme olduğu ve birisinin sonucu görmek için harekete geçtikten birkaç saniye sonra bile birkaç milisaniye beklemesi gerektiğidir.
Bunu son kullanıcı için daha kolay, daha hızlı ve daha eğlenceli hale getirmek için hangi stratejileri ve algoritmaları kullanabileceğimi merak ediyorum. Bu, oyun başına birkaç oyuncu ile birlikte saniyede yüksek miktarda etkinlik göz önüne alındığında özellikle ilginçtir.
TL; DR, saniyede 50'den fazla etkinlik içeren bir RTS yapıyor, istemcileri nasıl senkronize ederim?