İçindekiler

Kısaca: Motorun dünyayı bir kez ileri taşıdığı hesaplama aralığına oyun adımı diyoruz. Bu aralıkta oyuncu emirleri ve oyun kuralları belirli bir sırayla işlenir; sonra oyun zamanı ilerler. İki iş aynı bilgiyi yalnızca okuyorsa birlikte çalışabilir. Biri diğerinin değiştirdiği bilgiyi okuyacaksa ya da ikisi de aynı bilgiyi değiştirecekse, motor bunları sırayla yürütür. Aynı başlangıç durumu ve aynı oyun kuralları altında, oyuncuların, yapay zekânın ve oyun sistemlerinin ürettiği aynı tam oyun komutları dizisi her bilgisayarda aynı sonucu verir. Oyuncu emirleri bu dizinin yalnızca bir parçasıdır; bağımsız hesapların farklı işçilere verilmesi de bu koşulu bozmaz.
Bir oyun adımında hangi işler bekler, hangileri birlikte yürür?
Oyuncu bir emir verdiğinde, oyun dünyasının yeni duruma geçmesi için birçok kuralın çalışması gerekir. Bazı kurallar başka bir kuralın sonucunu bekler; bazıları ise farklı bilgiler üzerinde bağımsız çalışabilir. Motorun bağımlılıkları gözetmesi gerekir. Aynı sonucu karşılaştırmak için başlangıç durumu ve oyun kuralları kadar tam oyun komutları dizisi de aynı olmalıdır. Bu dizi oyuncu emirleriyle sınırlı değildir: yapay zekâ ve oyun sistemleri sonraki adımlar için komutlar da üretebilir.
Bağımlılıkları izleyip bağımsız işleri ayırmak
Önce ortak bir oyun adımı
Oyunu kuran kişi bu aralığı günün bir bölümü, bir gün, bir hafta veya bir takvim ayı olarak seçebilir. Oyuncu açısından tarih ilerlerken motor, emirleri ve o aralıkta çalışması gereken kuralları düzenli sırayla işler.
Bağımsız işleri birlikte yürütmek
Her oyun kuralı, hangi bilgileri okuduğunu ve hangilerini değiştirdiğini motora bildirir. İki kuralın işi çakışmıyorsa motor onları aynı anda yürütebilir. Biri diğerinin sonucuna ihtiyaç duyuyorsa önce gereken iş tamamlanır, sonra devam edilir.

Bu düzen, sonucu işlerin hangi işçiye verildiğine bağlamaz. Aynı başlangıç durumu, aynı oyun kuralları ve aynı tam komut dizisi işlendiğinde katılımcı bilgisayarlar aynı dünyayı üretir. Dizide oyuncu emirlerinin yanı sıra yapay zekâ ve oyun sistemlerinin komutları da bulunabilir.
Bazı dönemlik işler, ilgili ay veya başka bir dönem boyunca birden çok güne dağıtılabilir. Böylece dünyanın bütün öğelerinin aynı takvim sınırında işlenmesi şart olmaz. Bu, her dönemlik işin aynı biçimde dağıtıldığı anlamına gelmez; hangi kuralın ne zaman çalışacağını oyun seçer.
Aynı sonucu koruyarak paralel çalışma
Motorun adım sırası, kuralların okuduğu ve değiştirdiği bilgilere göre bağımsız işleri birlikte çalıştırmaya izin veriyor. Aynı başlangıç durumu, aynı oyun kuralları ve aynı tam oyun komutları dizisi altında işçi sayısı sonucu değiştirmiyor. Bu yazıda hız artışı için karşılaştırmalı ölçüm sunmuyoruz.
Sıra ile eşzamanlılığı neden birlikte tasarladık?
Sabit bir sıra, oyuncu emirlerinin ve oyun kurallarının tutarlı biçimde uygulanmasına yardımcı olur. Bağımsız hesapları birlikte yürütmek de bilgisayarın kullanılabilir kaynaklarından yararlanmayı sağlar; iki hedef aynı plan içinde korunur.
Bağımlı kuralların bekleme sınırı
Birbirine bağlı kurallar yine beklemek zorundadır. Böylece daha fazla işçi kullanmak her oyun adımı için hız garantisi vermez; bağımlı işler sırayla yürütülür.
Oyun kurallarını tanımlamaya geçiş
Bu temel üzerinde oyun kurallarının nasıl tanımlandığını Geliştirici Günlüğü #5 anlatıyor.
Her oyun adımı bir takvim günü mü?
Her zaman değil. Oyun, adımı günün bir bölümü, bir gün, bir hafta veya bir takvim ayı olarak seçebilir.
Bütün kurallar aynı anda mı çalışır?
Hayır. Aynı bilgiyi yalnızca okuyan kurallar birlikte çalışabilir. Okuma-yazma veya yazma-yazma çakışmaları olduğunda işler sıraya alınır.
Daha fazla işçi her adımı hızlandırır mı?
Hayır. Birbirine bağlı işler beklemeye devam eder; gerçek hız oyundaki kurallara ve verilere bağlıdır. Bu yazıda karşılaştırmalı süre ölçümü yoktur.
Kaynaklar ve bağlantılar
- Kuralların nasıl tanımlandığı için Geliştirici Günlüğü #5, hesaplanan dünyanın düzeni için Geliştirici Günlüğü #3.
- Motorun genel tanıtımı için MKA Engine, bütün yazılar için Geliştirici Günlükleri sayfasına bakabilirsiniz.
Kaynaklar ve ilgili belgeler
Bunlar da ilginizi çekebilir
- Bir strateji oyununun dünya haritası nasıl yapılır?
MKA Engine için gerçek veriden 27.357 konumluk bir 1337 dünya haritası ürettik: arazi, nehirler, boğazlar, nüfus ve konum sınırları nasıl çıkarıldı?
- Oyun motoruna giden yol
MKA Engine'e nasıl başladık: dört oyunu okumak, belirlenimciliği yasa saymak, aşama aşama ölçerek ilerlemek ve şu an neredeyiz.