Ağ sınıfım için bir proje olarak basit bir istemci-sunucu gerçek zamanlı çok oyunculu oyun oluşturmak istiyorum.
Gerçek zamanlı çok oyunculu ağ modelleri hakkında çok şey okudum ve istemci ile sunucu ve gecikme-telafi teknikleri arasındaki ilişkileri anlıyorum.
Ne yapmak istiyorum Quake 3 ağ modeline benzer bir şey: temelde, sunucu tüm oyun durumunun bir anlık görüntü depolar; istemcilerden girdi alındığında, sunucu değişiklikleri yansıtan yeni bir anlık görüntü oluşturur. Daha sonra, yeni anlık görüntü ile son görüntü arasındaki farkları hesaplar ve senkronize olabilmeleri için istemcilere gönderir.
Bu yaklaşım benim için gerçekten sağlam görünüyor - istemci ve sunucu sabit bir bağlantıya sahipse, onları senkronize tutmak için sadece minimum miktarda veri gönderilecektir. İstemci senkronizasyondan çıkarsa, tam bir anlık görüntü de istenebilir.
Ancak, anlık görüntü sistemini uygulamak için iyi bir yol bulamıyorum. Tek oyunculu programlama mimarisinden uzaklaşmak ve oyun durumunu nasıl bu şekilde depolayabileceğimi düşünmek gerçekten zor:
- Tüm veriler mantıktan ayrılır
- Oyun durumlarının anlık görüntüsü arasındaki farklar hesaplanabilir
- Oyun varlıkları yine de kod aracılığıyla kolayca değiştirilebilir
Anlık görüntü sınıfı nasıl uygulanır? Varlıklar ve verileri nasıl saklanır? Her istemci varlığın sunucudaki bir kimlikle eşleşen bir kimliği var mı?
Anlık görüntü farklılıkları nasıl hesaplanır?
Genel olarak: bir oyun durumu anlık görüntü sistemi nasıl uygulanır?