Geliştirici günlüğü

Geliştirici Günlüğü #2: Çok oyunculu dünyada tutarlılık

Oyuncu emirlerinin paylaşılması, her bilgisayarın dünyayı aynı kurallarla hesaplaması ve farklılıkların nasıl fark edildiğini anlatıyoruz.

İçindekiler
Yan yana iki bilgisayar aynı strateji haritasını gösteriyor; birinde harita sınırları farklılaşmış, aralarında ince bir ışık çatlağı var.

Kısaca: MKA Engine'in çok oyunculu modelinde her katılımcının bilgisayarı dünyayı kendi hesaplar; ağ üzerinden oyuncu emirleri ve kısa durum özetleri paylaşılır. Aynı başlangıç ve aynı emirler aynı sonucu üretmelidir. Bilgisayarlar bu özetleri karşılaştırarak dünyaların ayrıldığını fark edebilir.

Aynı oyunu farklı makinelerde nasıl aynı tutarız?

Strateji oyunlarında dünya sürekli değişir: oyuncular emir verir, kurallar kaynakları günceller, olaylar yeni sonuçlar doğurur. Her bilgisayara bütün dünyanın her değişimini göndermek yerine, daha tutarlı bir yol aradık. Bunun için her katılımcının aynı kurallarla aynı dünyayı hesaplayabilmesi gerekir.

Dünyanın tamamı yerine emirleri paylaşmak

Kilit adımda emirlerin yolu

Bu yaklaşıma kilit adımlı çok oyunculu denir. Her bilgisayar aynı başlangıç durumundan yola çıkar ve oyuncuların emirlerini alır. Bir oyun adımı, katılan herkesin o adım için gereken emirler ulaştığında ilerler; her bilgisayar da aynı kuralları uygular.

Ortadaki eşgüdüm cihazının çevresindeki dört ekran aynı haritayı gösteriyor; zarflar oyuncu emirlerinin paylaşılmasını simgeliyor.

Ağın taşıdığı temel bilgi oyuncu kararlarıdır. Her katılımcı kendi dünyasını hesapladığı için oyunun bütün durumunu sürekli yeniden göndermek gerekmez. Bu düzen, sayıların ve şansın aynı kurallarla çalışmasına dayanır.

Farklılaşmayı fark etmek

Hesaplamalar belirli aralıklarla kısa dünya özetlerine dönüştürülür ve katılımcılar arasında karşılaştırılır. Bir özet, dünyanın bütün ayrıntılarını değil, karşılaştırmaya yarayan kısa bir göstergesini taşır. Özetlerden biri diğerlerinden farklıysa motor, hangi oyun adımında ayrılık görüldüğünü bildirir.

Küçük harita parçalarından oluşturulmuş iki kısa dünya özeti büyüteçle karşılaştırılıyor; bir parçadaki fark turuncuyla vurgulanıyor.

Bu karşılaştırma, dünyaların artık aynı olmadığını gösterir; tek başına farkın nedenini açıklamaz. Bu yüzden tutarlı hesaplama ve farkı yakalama birbirini tamamlayan iki ayrı adımdır.

Özetler ayrılığı nerede yakalıyor?

Kilit adımlı yaklaşım, dünyayı yerel olarak hesaplayıp oyuncu kararlarını paylaşmayı mümkün kılıyor. Katılımcılar belirli adımlarda kısa özetleri karşılaştırabiliyor. Bu yazıda ağ trafiği, gecikme veya başka bir çok oyunculu yöntemle hız karşılaştırması sunmuyoruz.

Neden oyuncu kararlarını paylaşan model?

Strateji oyunlarında her katılımcının kendi dünyasını hesaplaması, oyunun bütün durumunu sürekli ağdan taşımak yerine kararların paylaşılmasına dayanır. Böylece ortak oyun kuralı ile oyuncuların verdiği emirler aynı çizgide tutulabilir.

Bağlantı gecikmesi ve teşhis sınırı

Bir oyun adımının ilerlemesi için etkin katılımcıların emirleri gerekir; yavaş bağlantı grubun ilerleyişini geciktirebilir. Durum özetindeki fark ayrılığı saptar, ancak tek başına nedenini bulup dünyayı onarmaz.

Dünya bilgisini bellekte düzenlemek

Bir sonraki günlükte çok sayıdaki oyun bilgisini hesaplamalara uygun biçimde bellekte nasıl düzenlediğimizi anlatıyoruz. Ardından bir oyun adımındaki iş sırasına bakacağız.

Her bilgisayara dünyanın tamamı mı gönderiliyor?

Hayır. Bu modelde katılımcılar oyuncu emirlerini ve karşılaştırma için kısa durum özetlerini paylaşır; her bilgisayar simülasyonu kendi yürütür.

Farklı bir dünya özeti neyi gösterir?

Katılımcıların hesapladığı oyun durumları ayrılmıştır. Özet, farkın görüldüğü adımı bildirir; tek başına nedenini açıklamaz.

Bu yöntem bağlantı sorunlarını ortadan kaldırır mı?

Hayır. Etkin katılımcıların emirleri gelmeden adım ilerlemez; yavaş bağlantı grubun hızını etkileyebilir.

Kaynaklar ve bağlantılar

Kaynaklar ve ilgili belgeler

Bunlar da ilginizi çekebilir