Geliştirici günlüğü

Geliştirici Günlüğü #3: Dünyayı bellekte düzenlemek

Bir strateji oyunundaki pek çok bilgiyi, kuralların aynı türdeki değerleri kolayca okuyabileceği biçimde nasıl düzenlediğimizi anlatıyoruz.

İçindekiler
Solda bir işçi farklı kutulardan değerleri topluyor; sağda aynı değerler birlikte sıralanmış. Görsel iki veri düzenini karşılaştırıyor.

Kısaca: MKA Engine aynı tür oyun bilgisini yan yana düzenler. Bir kural birçok birim için tek bir değere bakacaksa, yalnız o bilgiyi okuyabilir; her birimin ilgisiz bütün ayrıntılarını taşımak zorunda kalmaz. Hangi oyun bilgilerinin bulunduğunu motor değil, oyunun kendisi belirler.

Bir hesap hangi oyun bilgisini gerçekten okur?

Bir strateji oyunu çok sayıda ülke, kent veya başka oyun öğesi hakkında bilgi tutabilir. Örneğin bir kural, tüm birimlerin nüfus değerlerini toplamak isteyebilir. Her birimin bütün bilgilerini birlikte saklamak, bu hesap için gerekmeyen ayrıntıların da aynı yoldan geçmesine yol açabilir.

Aynı tür değerleri birlikte saklamak

Bir sütun nasıl çalışır?

MKA Engine oyun verilerini tablolar halinde düzenler. Bir tablonun alanı, her oyun öğesi için tutulan bir bilgidir; bu alanın tüm değerleri bellekte birlikte bulunur. Buna sütun düzeni diyebiliriz: tek bir sütun, birçok oyun öğesinin aynı tür bilgisini taşır.

Örnek olarak hayalî bir oyundaki nüfus sayısını düşünelim. Kural bütün nüfusları toplarken bu sütunu okuyabilir; her oyun öğesinin kültür, hazine veya başka alanlarına başvurması gerekmez. Görseldeki iki düzen bu farkı anlatıyor; örnek, MKA Engine ile gelen hazır bir oyun içeriğini değil, veri düzenleme fikrini gösteriyor.

Şematik olarak aynı altı örnek oyun konumu iki düzende gösteriliyor: solda her konumun nüfus, para ve harita-konumu bilgileri bir arada; sağda aynı değerler türlerine göre gruplanmış ve nüfus değerleri tek vurgulu şeritte.

Sütun düzeni neyi açıklıyor?

Bu yazıda bellekteki düzeni ve hesaplamanın hangi bilgileri okuyabildiğini açıklıyoruz. Bu düzen tek başına belirli bir oyunda ölçülmüş hız artışı kanıtlamaz; bu yazıda karşılaştırmalı süre ölçümü sunmuyoruz.

Neden veriyi alanlarına göre düzenliyoruz?

Bir kural çoğu zaman çok sayıdaki benzer oyun öğesinde aynı tür bilgiyi inceler. Aynı alanı birlikte tutmak, bu tür hesapların yalnız ihtiyaç duyduğu bilgiyi izlemesine imkân verir. Oyun kendi alanlarını ve kurallarını seçmeye devam eder.

Birden çok alanı kullanan hesapların sınırı

Bu düzen her işi kendiliğinden hızlandırmaz. Bir kural aynı oyun öğesinin birkaç farklı bilgisini birlikte kullanacaksa, bu alanları ayrı ayrı okuması gerekir; sonuç, oyunun verilerine ve yaptığı hesaplara bağlıdır.

Oyun adımındaki hesaplamalara geçiş

Bir sonraki günlükte oyun kurallarının bir adım içinde hangi sırayla çalıştığını ve bağımsız işlerin nasıl birlikte ilerleyebildiğini anlatıyoruz.

Sütun düzeni ne demek?

Birçok oyun öğesinin aynı tür bilgisini birlikte tutmak demektir. Örneğin bir sütun, her oyun öğesinin nüfus değerini taşıyabilir.

MKA Engine hazır ülkeler veya nüfuslar mı içeriyor?

Hayır. Motor veriyi düzenlemek için bir yapı sağlar; oyunun hangi öğelere ve bilgilere sahip olacağını oyun içeriği belirler.

Bu düzen her zaman daha hızlı mı?

Bunu söylemek için aynı oyun ve aynı koşullarda ölçüm gerekir. Bu yazı veri düzenini açıklar, karşılaştırmalı hız sonucu sunmaz.

Kaynaklar ve bağlantılar

Kaynaklar ve ilgili belgeler

Bunlar da ilginizi çekebilir