İçindekiler

Kısaca: Strateji oyununda bir kentin nüfusunu ya da hazinenin durumunu yıllar boyunca izlemek için her adımda değer saklamak gerekmez. MKA Engine, oyun içeriğinde bildirilen bir zaman serisinden (time series) her dönemin başında bir örnek alır ve ön yüz bu seriyi adıyla okur. Yanlış tanımlanmış bir dönem motoru çökertmez; hatanın dosyasını, satırını ve sütununu gösterir.
Neden her adımda değil, dönem başında?
Bir kentin nüfus grafiğini düşün. Her günü saklasan yüzlerce nokta çıkar, ama oyuncunun sorduğu soru çoğu zaman ay sonu ya da yıl sonu sorusudur: "geçen yıl nüfus ne kadar arttı?" Zaman serisi bu yüzden her dönemde bir örnek tutar.
Zaman serisi, bir değerin zaman içinde sıralı ölçümlerinden oluşan dizidir (NIST İstatistik El Kitabı (yeni sekmede açılır); Vikipedi, Time series (yeni sekmede açılır)). Bizde dönem takvimle belirlenir: gün, ay ya da yıl. Örnek, dönemin ilk adımında alınır: günün ilk adımı, ayın ilk gününü içeren adım ya da yılın ilk gününü içeren adım.
Adım haftalık ya da aylık da olsa kural aynıdır. Ay başı bir haftanın ortasına düşerse o ayın örneği o haftanın adımında alınır; aynı ay içinde ikinci bir örnek alınmaz. Testler bunu haftalık adımlarda sınar.
Bir seri neyi bildirir?
Oyun bir seriyi içerik kaydında dört bilgiyle tanımlar. Kod yazılmaz.
| Alan | Anlamı | Örnek |
|---|---|---|
| Kaynak | Örneklenecek sayı sütunu | Bir kentin nüfus sütunu |
| Toplama | Toplam ya da satır başına ayrı örnek | Bütün kentlerin toplamı ya da her kent için ayrı çizgi |
| Dönem | Gün, ay ya da yıl | Aylık: her ayın ilk adımı |
| Saklama | Tutulan dönem sayısı | 12: son on iki ay |
Saklama süresini aşan eski örnekler silinir; tablo sınırsız büyümez.
Ön yüz adla okur
Grafik çizen ön yüz seriyi adıyla ister. Motor örnekleri dönem sırasıyla verir; her örnekte dönem, tablo, varlık (hangi kent, ya da toplam serisinde hiçbiri) ve değer bulunur. Çizimi, ölçeği ve açıklamayı ön yüz yapar; motor yalnız sayıyı verir.
Tek bir değer de adla okunur. Veri bağlaması bir adı ya bir kapsam satırının değerine ya da bir çarpan toplamına bağlar. Çarpan toplamında motor sayının yanında onu oluşturan kaynakları da verir: hangi varlıktan hangi miktarın geldiğini. Böylece ön yüz "bu sayı neden bu" sorusunu kendi ekranında cevaplayabilir. Çarpanların ne olduğu olaylar ve çarpanlar günlüğünde anlatılmıştır.
Hata nerede gösterilir?
Oyun içeriğinde adım uzunluğundan ince bir dönem yazılırsa, örneğin haftalık adımda günlük bir seri, içerik yüklemesi durur ve hatanın yeri gösterilir: dosya, satır ve sütun. Bu bir motor hatası değil, oyun verisindeki bir hatadır; bu yüzden motor paniklemez. Bozuk bir veri bağlaması ile sıfır ya da kesirli bir saklama süresi de dosya, satır ve sütunuyla reddedilir. Aynı adla iki seri de içerik yüklenirken reddedilir.
Kayıt ve yükleme
Örnekler oyun dünyasının parçasıdır ve kayda girer. Kaydedilip yüklenen oyun, kesintisiz oynanan oyunla aynı örnekleri ve bir sonraki örneklenecek dönemi gösteren imleci taşır; yüklenen oyun kaldığı yerden aynı biçimde devam eder. Bunu hem motorun hem okuma katmanının testleri sınar.
Bedeli ne?
- Örnek dönemde bir kez alınır. İki örnek arasındaki değişim görünmez: aylık bir seri ayın içindeki dalgalanmayı göstermez. Daha sık görmek gerekirse oyun daha kısa bir adım ve dönem seçer.
- Saklanan her örnek kayıtta yer tutar; saklama süresi ve satır sayısı büyüdükçe kayıt da büyür. Bu maliyeti ölçmedik.
- Bu günlükte süre ya da bellek ölçümü yok. Anlatılan davranış testlerle sınandı; hız ve bellek ölçülmedi.
Sık sorulanlar
Oyunda zaman serisi nasıl tanımlanır?
Oyun içerik kaydında serinin adını, örneklenecek sayı sütununu, toplam ya da satır başına biçimini, dönemini ve saklama süresini yazar. Bunun için kod yazılmaz.
Seri her adımda mı örneklenir?
Hayır. Her dönemin ilk adımında bir kez örneklenir: gün, ay ya da yıl. Adım haftalık ya da aylık olsa da örnek dönemin başladığı adımda alınır.
Ön yüz seriyi nasıl okur?
Adıyla. Motor örnekleri dönem sırasıyla verir; her örnekte dönem, varlık ve değer bulunur.
Yanlış tanımlanmış bir seri ne yapar?
Motor çökmez. İçerik yüklemesi durur ve hatanın yerini gösterir.
Kaynaklar ve kayıtlar
Dış kaynaklar: NIST İstatistik El Kitabı, zaman serisi tanımı (yeni sekmede açılır), Vikipedi, Time series (İngilizce) (yeni sekmede açılır).
İlgili günlükler: Dünyanın bellekteki hali, Olaylar ve çarpanlar.
Bu günlük hakkında sorularınız ya da önerileriniz varsa iletişim sayfasından yazabilirsiniz. Motorun genel tanıtımı için MKA Engine sayfasına, bütün günlükler için Geliştirici Günlükleri listesine 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.