İçindekiler

Kısaca: MKA Engine’de oyun ve mod içeriklerine ait kurallar metin dosyalarında tanımlanır. Üç ayrı kural biçimi sırasıyla bir durumu denetler, oyun dünyasını değiştirir ya da hesaplanan bir sayı üretir. Bu ayrım, oyuncuların yazdığı içerikle motorun çalıştırdığı düzenek arasında anlaşılır bir sınır kurar.
Strateji oyununda bir ülkenin vergisi, bir ordunun hareketi ya da bir olayın koşulu çoğu zaman başka kurallarla bağlantılıdır. Kural kitabı gibi düşünelim: bir cümle “bu doğru mu?” diye sorar, diğeri bir değişiklik yapar, üçüncüsü miktarı hesaplar. Bu üç iş birbirine karışırsa küçük bir içerik değişikliği beklenmedik sonuçlara dönüşebilir. Biz de oyun kurallarını bu üç farklı göreve göre düzenledik.
Kural yazımında hangi işler birbirine karışıyordu?
Bir masa oyununda hakem, oyuncuların hamlelerini kurallara göre değerlendirir. Kural kitabı ise oyunun dünyasını tarif eder. Hakemin nasıl çalıştığını bilmek, yeni bir ülke ya da olay kuralı yazmak için şart olmamalı. Aynı şekilde, yeni bir kural yazan kişinin de yanlışlıkla oyunun tamamını durdurabilecek bir sonsuz döngü kuramaması gerekir.
MKA Engine’de oyun içeriği motorun içine gömülü tek parça bir yapı değil; oyunların ve modların tanımladığı verilerden oluşur. Bu nedenle kuralların okunabilir, birbirinden ayrılmış ve hataları anlaşılır biçimde bildiren bir biçimde tutulması önemli. Bir oyuncu vergi koşulunu değiştirirken hesaplamanın kendisini ya da dünyanın çalışma sırasını yanlışlıkla değiştirmemeli.
Koşulu, etkiyi ve formülü ayrı tutmak
İlk ayrım, bir kuralın ne iş yaptığıdır. Koşul, dünyanın o anki durumuna soru sorar. Örneğin bir ülkenin hazinesinin belli bir miktardan fazla olup olmadığını denetleyebilir. Koşul yalnızca evet ya da hayır sonucu verir; dünyadaki değerleri değiştirmez.
Etki, oyun dünyasında değişiklik yapar. Bir ülkeye para eklemek ya da bir özelliğin değerini değiştirmek bu gruba girer. Etkiler yazıldıkları sırayla uygulanır. Böylece sonraki etki, öncekinin yaptığı değişikliği görebilir. Bu sıra kuralın hikâyesini takip etmeyi kolaylaştırır: önce koşulu değerlendirir, sonra uygun değişikliği uygularız.
Formül bir sayı hesaplar. Vergi miktarı ya da bir başka büyüklük, mevcut değerlerden türetilebilir. Formülde hesap adımları belirli bir sırada ilerler; formül dünyanın durumunu kendi başına değiştirmez. Böylece soru sorma, değiştirme ve hesap yapma görevleri birbirinin yerine geçmez.

Bu ayrım yalnızca yazım kolaylığı değildir. Bir koşulun dünyayı değiştirmemesi, aynı sorunun farklı yerlerde güvenle sorulmasını sağlar. Bir formülün yalnız sayı üretmesi, hesaplanan değerin nereden geldiğini anlamaya yardım eder. Etkinin de açıkça değişiklik yapan taraf olması, kuralların etkilerini izlenebilir kılar.
Döngüler konusunda da aynı açıklığı seçtik. Formüller kendi içinde tekrar tekrar dönmez; işlem sırası ve biteceği nokta baştan bellidir. Koşula bağlı bir etki döngüsü belirlenen tur sınırına ulaşır ve koşul hâlâ sağlanıyorsa, o etki zinciri hata kaydıyla durur. Döngüden önce yapılmış değişiklikler korunur; aynı zincirin sonraki adımları uygulanmaz. Olay seçimi sırasında görülen bu hata ilgili adımda kaydedilir ve sonraki adımın ilerlemesini engellemez.
Kuralların birbirine nasıl bağlandığını da sınırlandırdık. Bir koşul bağlı olduğu dünya parçasını inceleyebilir; bağlantı boşsa içteki denetim yanlış sonuç verir. Dıştaki kural bu yanlışlığı arıyorsa, bütün koşul doğru olabilir. Etkiler ise her adımda önceki etkilerin bıraktığı durumu görür. Sıranın kendisi, oyun dünyasının her oyuncuda aynı biçimde ilerlemesine yardım eder.
Bir kural hangi oyun anında çalışır?
Bir strateji oyunu gününün içinde komutlar, zamanlayıcılar, içerik kuralları ve sistemler belirli bir sırayla çalışır. Oyunun içerik kuralları komut ve zamanlayıcılardan sonra, sistemlerden önce değerlendirilir. Bu sıralama, hangi değişikliğin ne zaman görüleceğini belirler.
Örneğin bir sistemin gün sonunda koyduğu işaret, içerik kuralının aynı anda geriye dönüp gördüğü bir değişiklik olmaz; sonraki adımda görünür. Buna karşılık içerik kuralının yazdığı değer, o gün daha sonra çalışan sistemlerce görülebilir. Bu düzen, “kural çalıştı ama hangi değeri gördü?” sorusuna tutarlı bir yanıt verir.
Üç rol kural akışını nasıl açıklıyor?
Bu günlük yeni bir hız ya da bellek ölçümü anlatmıyor. Buradaki doğrulanabilir sonuç, kural dilinin davranış sınırlarıdır: koşul yalnızca denetler, etki değişiklik yapar, formül sayı üretir; formülün döngüsü yoktur. Koşula bağlı etki döngüsü sınırda hâlâ sürüyorsa, o etki zinciri hata tanısıyla durur.
Bu davranışlar MKA Engine’in betik dili kılavuzunda tanımlanıyor. Motorun örnek dünyasında yer alan ülke, eyalet ve altın örnekleri, farklı kural biçimlerinin nasıl kullanılabileceğini gösteren anlatım örnekleridir. Bunlar belirli bir oyunun tamamlanmış özelliği ya da oyun dengesi iddiası değildir.
Kuralın görevini açıkça belirtmek neden önemli?
Her işi aynı tür kuralın içine koymak daha kısa görünebilirdi. Ancak bir koşul hem soruyu sorsa hem de dünyayı değiştirseydi, onu tekrar kullandığımız her yerde yan etki ihtimali doğardı. Formüllere sınırsız tekrar eklemek de içerik yazımını esnekleştirirken bitişi öngörmeyi zorlaştırırdı.
Biz bunun yerine her kural biçimine tek bir sorumluluk verdik. Koşul kontrol eder, etki değiştirir, formül hesaplar. Sınırlı dolaşım, büyük bir koleksiyon üzerinde yazılmış bir kuralın sınırsızca çalışmasını engeller. Böylece esnek içerik yazımı ile oyunun düzenli ilerlemesi arasında anlaşılır bir denge kurulur.
Ayrımın koyduğu sınırlar
Bu tasarım, her tür hesabı içerik dosyasında yazma özgürlüğü vermez; daha kapsamlı bir mekanizma gerektiğinde motor tarafında ayrıca geliştirilmesi gerekir. Koşula bağlı etki döngüsünün üst sınırı çok uzun tekrarları kısıtlar; koşul sınırda hâlâ doğruysa aynı zincirin kalan adımları çalışmaz.
Olaylar ve değiştiricilere geçiş
Kuralların görevlerini ayırdıktan sonra, olayların ve çarpanların bu kurallarla nasıl çalıştığını anlatacağız. Böylece bir oyuncunun karşılaştığı tek bir kararın, oyun dünyasındaki koşul ve sonuçlarla nasıl bağlandığını adım adım izleyebileceğiz.
Sık sorulanlar
Oyun kuralları metinle tanımlanabilir mi?
Evet. MKA Engine’de oyun ve mod içeriklerine ait kurallar metin tabanlı içerik dosyalarında tanımlanır. Motorun sağladığı kural biçimleri, durum denetleme, değişiklik yapma ve sayı hesaplama işlerini birbirinden ayırır.
Koşul ile etki arasındaki fark nedir?
Koşul dünyanın durumuna soru sorar ve doğru ya da yanlış sonucu verir. Etki ise oyun dünyasında değişiklik yapar.
Formüller oyun dünyasını değiştirir mi?
Hayır. Formüller bir sayı üretir; dünyayı değiştirme işi etkilere aittir.
Koşula bağlı bir etki döngüsü sınıra ulaşırsa ne olur?
Koşul sınırda hâlâ doğruysa o etki zinciri hata kaydıyla durur. Daha önce yapılmış değişiklikler korunur; aynı zincirin sonraki adımları uygulanmaz.
Kaynaklar
- MKA Engine betik dili kılavuzu.
- Bu günlükte performans ölçümü veya başka oyunlarla karşılaştırma iddiası bulunmuyor.
Daha fazlası için MKA Engine, geliştirici günlükleri ve iletişim sayfaları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.