Geliştirici Günlükleri

MKA Engine'i geliştirirken tuttuğumuz günlükler: neyi neden böyle kurduğumuz ve ne ölçtüğümüz.

MKA Engine'i geliştirirken tuttuğumuz günlükler. Her günlükte bir kararı, nedenini ve ölçtüğümüz sonucu yazıyoruz. Motorun kendisi için MKA Engine sayfasına bakın.

Geliştirici Günlükleri

Geliştirici Günlüğü #10: Oyun haritasında kalıcı anahtarlar

· Ayrı sayfada aç

Açık bir deri ciltli defter; sayfalarında pirinç etiketli harita parçaları ve yanında bir mühür, loş ahşap masada

Kısaca: Bir strateji oyununda bir yerin kimliği, harita çizgisi oynadığında uzak bölgelerde de korunmalı. Bu günlükte MKA Engine için kullandığımız harita hazırlama aracında, bir kenar değişikliğinin uzaktaki yer kimliklerini neden kaydırdığını ve yeni çekiliş yöntemimizin bunu nasıl azalttığını anlatıyoruz. Aynı kenar değişikliğinde eski yöntemle 6.039, yeni yöntemle 2.239 yer anahtarı emekli oldu; ama bu yalnızca tek bir harita karşılaştırması ve sıfır değişim vaadi değil.

Güncelleme notu: Bu yazının içerik tarihi 16 Ekim 2026'dır. Yerlerin kalıcı anahtarları oyunun harita ızgarasına 14 Ekim 2026'da eklenmişti. Yazının asıl konusu olan işlerin çoğu ise bu tarihten sonra yapıldı: kenarları yumuşatma seçeneği 23 Ekim 2026'da eklendi ve aynı gün deniz konumlarının çekilişi karadan bağımsız hâle getirildi; kenar ölçümünün kaydı 26 Ekim 2026'dır; yeni kara çekilişi 27 Ekim 2026'da kaydedildi; göl ve deniz düzeltmeleri ile göl anahtarı ölçümü 28 Ekim 2026 kayıtlarındadır. Bu sürümdeki düzeltmeler 4 Kasım 2026'da yapıldı ve yazı o tarihte güncellendi. Sonradan eklenen bölümlerin tarihleri ilgili yerde yazılıdır.

Haritadaki kimlikler neden önemli?

Bir strateji oyununda bir yerin adı değişebilir, sınırı yeniden çizilebilir. Ama tarihsel olaylar, olay metinleri ve oyun içeriği hâlâ aynı yere bağlı kalmak zorunda. Bu yüzden her yerin, ilin ve daha büyük bölgenin oyun içinde kalıcı bir anahtarı var. Anahtarı, yerin değişmeyen bir kimlik numarası gibi düşünebilirsiniz: harita yeniden hazırlandığında aynı yer aynı anahtarla geri gelmeli.

Adın değişmesi ile kimliğin değişmesi aynı şey değildir. Bir yerin adı değişebilir; anahtarı ise yer hâlâ aynı yer olduğu sürece aynı kalmalıdır.

Harita hazırlanırken bir anahtar defteri, eski yerlerle yeni yerleri eşleştirmeye yardım eder. Artık bulunmayan bir yerin anahtarı emekliye ayrılır ve başka bir yere verilmez. Bu kural, oyun içeriğinin sessizce yanlış bir yere bağlanmasını önlemek için var.

Bu günlüğün konusu, bu anahtarların harita değiştiğinde ne kadar sağlam kaldığı. Bir sınır çizgisine dokunulduğunda bile bir yerin kimliğinin neden bozulabildiğini ve bunu azaltmak için neyi değiştirdiğimizi anlatıyoruz.

Baştan bir uyarı: bu sürümde konumların, illerin ve deniz kayıtlarının eşleşmesi hâlâ merkezlerinin konumuna göre yapılıyor; elle adlandırılmış kara alanları, bölgeleri ve alt kıtalar ise adlarıyla eşleşiyor. Merkez çok kayarsa eşleşme zorlaşır. Bu sınırı aşağıda ayrıca anlatıyoruz.

Kenar değişikliği uzaktaki yerlere neden ulaştı?

Harita kenarında küçük bir değişiklik yaptığımızda, etkisinin o kenarla sınırlı kalmasını bekleriz. Eski yöntemimizde ise kara bölgelerinin başlangıç noktaları tek bir ortak rastgele seçim dizisinden çekiliyordu. Bir bölgenin şekli ya da çekiliş sayısı değişince sıradan sonra gelen bölgelerin seçimleri de kayabiliyordu. Bir kura düzeninde ilk çekilişteki küçük bir farkın, sonraki çekilişlerin bir kısmını değiştirmesi gibi. Eski yöntemde bu beklenti tutmadı.

Ortak çekiliş zinciri sınır değişince uzak bölgelerdeki işaretleri de kaydırıyor; konuma bağlı çekiliş değişiklikleri çoğunlukla kenarda toplanıyor, ancak bazı uzak işaretler yine değişiyor. Ölçeksiz, şematik bir çizimdir; işaret sayıları ölçümdeki anahtar sayıları değildir.

Ölçtüğümüz değişiklik küçüktü. Geçilmez arazinin kenar çizgilerini yumuşatmak, dünyadaki geçilmez alanı yaklaşık yüzde 1 değiştirdi. (Geçilmez arazi, yerleşime ve geçişe kapalı sayılan alanlardır: buz, yüksek arazi, çöl ve zirveler gibi.) Buna rağmen eski yöntemle 6.039 konum anahtarı emekliye ayrıldı. Bu ölçümde kayıp, değişikliğin büyüklüğüyle orantılı görünmüyor. Bunların 3.367'si, değişen kenardan 50 harita pikselinden daha uzaktaydı. Burada piksel, haritanın ölçüm ızgarasındaki her küçük karedir.

Bu etki yalnız konumlarla sınırlı kalmadı. Eski yöntemde elle adlandırılmış bazı kara birimleri de merkezleri kaydığında ikinci bir kimlik aldı: Kuzey Afrika, Himalaya ve Nil Vadisi adlı yerlere ikinci birer anahtar açıldı. Bir oyun olayı Kuzey Afrika bölgesine bağlıysa, ikinci kimlik açıldığında olayın hangi kimliğe ait olduğu belirsizleşebilirdi.

Bu ölçümün kayıtları iki ayrı koşudan geliyor. Eski yöntemin sayıları 23 Ekim 2026 tarihli koşudan, yeni yöntemin sayıları 26 Ekim 2026 tarihli koşudan geliyor; yeni çekilişin kaynak kaydı ise 27 Ekim'dedir. İki sayı da aynı kenar değişikliğini ölçüyor, ama iki yöntem aynı koşuda yan yana çalıştırılmadı. Bu yazıda "yeni yöntem", 23 Ekim'de deniz konumlarının çekilişini karadan bağımsız yapan ve 27 Ekim'de kara çekilişini ve ad anahtarlarını değiştiren sürümü kastediyor. "Eski yöntem" ise bu iki değişiklikten önceki koşudur. Sonuçları okurken bu farkı akılda tutmak gerekir.

Ölçüm nasıl yapıldı?

Karşılaştırmada iki durum kullandık: kara kenarlarının eski biçimde kaldığı durum ile kenarların yumuşatıldığı durum. İki durum kenar biçiminde farklıydı. Başlangıç anahtar defterleri de ayrıydı: kenarı eski biçimde kalan durum önceki bir hazırlıktan kalan defterle, kenarı yumuşatılan durum ise ilk durumun defteriyle başladı. Her durumda yer, il, alan, bölge ve alt kıta düzeyinde kaç anahtarın kaldığını, kaçının emekliye ayrıldığını ve kaçının yeni açıldığını saydık. Emekliye ayrılan yerlerden değişen kenardan 50 pikselden uzak olanları ayrıca saydık. Emekli yerleri kara ve su olarak da ayrı saydık. Yazıdaki sayılar ölçüm kayıtlarındaki değerlerdir; anahtar sayıları yuvarlanmadı.

Aynı değişiklikte neler gördük?

Aşağıdaki tablo, aynı harita kenarı değişikliğinde iki yöntemin sayılarını gösteriyor. Ölçüm, oyunun kullandığı tek bir harita ızgarası üzerinde yapıldı; başka haritalar ya da tam bir oyun oturumu ölçülmedi.

ÖlçütEski yöntemYeni yöntem
Emekliye ayrılan konum anahtarları6.0392.239
Emekli konumların kara / su dağılımı4.913 / 1.1262.239 / 0
Değişen kenardan 50 pikselden uzak emekli anahtarlar3.367131
Yeni açılan konum anahtarları5.8292.020
Emekliye ayrılan il anahtarları1.190438
Emekliye ayrılan alan / bölge / alt kıta anahtarları65 / 10 / 20 / 0 / 0
Aynı harita değişikliğinde yer anahtarları

Tabloda iki sonuç öne çıkıyor. Birincisi, değişikliğe uzak olan emekli anahtar sayısı 3.367'den 131'e indi. İkincisi, eski yöntemde 1.126 su konumu emekli olmuştu; yeni yöntemde hiçbir su konumu emekli olmadı. Bu sonucu tek bir değişikliğe bağlayamayız: yeni taraf hem su konumlarının çekilişini (23 Ekim) hem kara çekilişini ve ad anahtarlarını (27 Ekim) birlikte değiştirdi. Yeni açılan anahtar sayısı da 5.829'dan 2.020'ye düştü. Yeni açılan anahtar, önceki defterde bulunmayan bir yer kimliğidir. Bu, eski yöntemin yalnız kimlikleri silmediğini, çok sayıda yeni kimlik de ürettiğini gösteriyor. Alan, bölge ve alt kıta düzeyinde eski yöntemde 65, 10 ve 2 anahtar emekliye ayrılmıştı; yeni yöntemde bu düzeylerde hiçbiri emekli olmadı.

Kenara yakın yerlerde de yeni yöntem daha az kayıp verdi: değişen kenardan en fazla 50 piksel uzaktaki emekli anahtarlar 2.672'den 2.108'e indi. Fark, uzak yerlerdeki kadar büyük değil; asıl büyük fark uzakta ortaya çıktı.

Ölçümümüze göre kalan 131 uzak anahtarın nedeni grup yoğunluğu; çekilişin yerelliğiyle ilgisi yok. Her dünya grubunun (ör. Kuzey Amerika) kara konumu sayısı sabit bir hedeftir. Kenar değişince bir grubun geçilmez arazisi değişir; bu da grubun yerleşik yerler için ölçek alanını oynatır ve o gruptaki bölgelerin yer sayısını değiştirir. Kuzey Amerika grubunda bu ölçek alanı 2.076 km²'den 1.024 km²'ye indi; geçilmez ve koridor konumları 553'ten 300'e düştü. Yani kalan uzak değişiklikler, yoğunluk hedefinin istenen bir sonucudur.

Yeni çekiliş nasıl çalışıyor?

Yeni kara çekilişini 27 Ekim 2026'da kaydettik. Amacımız, bir değişikliğin etkisini kendi kenarına yakın tutmaktı. Yöntemin nasıl çalıştığını ve sınırlarını aşağıda anlatıyoruz. Kara tarafında her harita karesi, kendi konumundan türeyen sabit bir sayı taşıyor. Bir bölgenin başlangıç noktaları yalnızca o bölgenin karelerine, bu karelerin ağırlıklarına ve bölgeye ayrılan yer sayısına göre seçiliyor. Başka bir bölgenin şekli ya da işlem sırası bu seçimleri kaydırmıyor. Değişiklik bu yüzden çoğunlukla kendi kenarında kalıyor.

Bu sayılar bir ortak akıştan sırayla çekilmez. Her karenin sayısı, oyunun sabit bir başlangıç değerinden ve karenin kendi konumundan hesaplanır. Bu yüzden bir bölgenin çevresindeki değişiklik, uzaktaki karelerin sayılarını etkilemez.

Ağırlık, bir karenin o bölgede seçilme olasılığını artıran ya da azaltan bir değerdir. Bölgeye ayrılan yer sayısı ise, dünya grubunun sabit hedefi ve yerleşik yer ölçeğiyle belirlenir.

Bu yöntemin etrafında üç kural daha var:

  • Bir bölgenin yer sayısı artarsa eski seçimler yerinde kalır. Yeni yerler eklenir, eskileri yer değiştirmez.
  • Elle adlandırılmış kara alanları, bölgeleri ve alt kıtaları (ör. Kuzey Afrika, Himalaya) adlarından gelen sabit bir anahtar alır. Bu yerlerde merkez eşleştirmesi yapılmaz: merkezleri kaysa da ikinci bir kimlik almazlar. Bir bölge emekli olmuşsa, yeniden tanındığında eski kimliğini geri alır. Aynı kimliği alan iki kayıt ise hata sayılır.
  • Deniz ve göl konumları kendi seçim akışını kullanır. Kara tarafındaki bir değişiklik denizleri oynatmaz.

Bir sınır daha var ve bunu açıkça söylemek istiyoruz. Konumlar, iller ve deniz kayıtları hâlâ merkezlerine göre eşleşiyor; elle adlandırılmış kara alanları, bölgeleri ve alt kıtalar ise adlarıyla eşleşiyor. Yeni kara çekilişinde bir bölgenin değişikliği komşu bölgelerin seçimlerini kaydırmıyor, ama her kaydı korumuyor. Merkez çok uzağa kaydığında eski kayıt bulunamayabilir ve emekliye ayrılabilir.

Tekrarlanabilirliğe de baktık, ama yalnız tek bir kontrol yaptık: yumuşak kenarlı durumda, harita yapısı adımı kendi anahtarlarıyla yeniden koşulduğunda defter ve harita yapısı dosyası birebir aynı kaldı. Bu kontrol yalnız bu durum ve bu adım için yapıldı. Aynı girdilerle yapılan başka hazırlıkların ya da başka haritaların aynı sonucu vereceğini bu ölçüm göstermiyor.

Göller ve denizler ayrı kimlik istiyor

Su alanları haritanın en karışık kısmıydı. İlk sorun adlandırmaydı. Adı olmayan su konumları, en yakın adlı denizin adını alabiliyordu: Nasır Gölü Kızıldeniz grubuna, Viktorya Gölü Hint Okyanusu grubuna, Baykal Gölü Bohay Denizi'ne düşüyordu. Göllerin kendi kimliği yoktu. Oyun açısından bu, bir gölün kendi kimliği olmadan bir denizin grubunda kalması demekti; göl ile ilgili bir olay ya da kural yanlış bir kimliğe bağlanabilirdi.

Düzeltmeden sonra bir göl, Doğal Dünya kara verisinde karanın içinde kalan bir su alanı olarak tanımlanıyor. Hazar Denizi gibi karada yer almayan büyük su kütleleri ise deniz olarak kalıyor. Göl adları HydroLAKES veri kümesinden alınıyor. Göller ayrıca kendi bölgelerinde toplanıyor: her göl alanı, en çok değdiği kara konumlarının alt kıtasına ait "göl" bölgesine giriyor.

İkinci sorun, göllerin deniz gruplarından ayrılmasıydı. Bir denemede göller önce ayrılınca Finlandiya Körfezi, Kattegat ve Beyaz Deniz gibi birkaç deniz alanı boyut kuralı yüzünden küçüldü ve komşularına katıldı; Kuzey Denizi bölgesi de emekliye ayrıldı. Bu durum 28 Ekim 2026'da yapılan düzeltmeyle çözüldü: deniz grupları önce bütün su konumlarıyla kuruluyor, göl konumları sonra gruplardan çıkarılıyor.

Şematik çizim, ölçeksiz. Solda göller deniz işaretleriyle tek bir bağlantı zincirinde çizilmiş; bu, eski düzendeki gruplamayı gösteriyor. Sağda her göl kendi ayrı turuncu işaretini alıyor; deniz işaretleri yerinde kalıyor. İşaret sayıları ölçümdeki anahtar sayıları değildir.

Üçüncü sorun sayı ekleriydi. Bu sorun 28 Ekim 2026'da ortaya çıktı: göl kayıtlarının anahtar alma biçimini değiştiren bir düzeltmeden sonra, bir süre göl kayıtları her kurulumda yeni bir sayı eki aldı. Adı Abaya olan göl önce Abaya, sonra Abaya 2, sonra Abaya 3 oluyordu. Aynı gün yapılan bir sonraki düzeltme bu düzeni durdurdu. Bu düzen düzeltilmeseydi, bir sonraki kurulumda 276 su alanı ve 293 su ili emekli olup yeniden açılacaktı; yani aynı harita iki kez hazırlandığında farklı kimlikler çıkabilirdi. Düzeltmeden sonra göl kaydı kendi adından gelen anahtarı koruyor; merkezi kaysa bile aynı kaydı yine ad üzerinden buluyor.

Yumuşak kenarlı durumda (B), kendi anahtar defteriyle konumların il, alan ve bölgelere gruplanması yeniden çalıştırılınca defter ve gruplama çıktısı birebir aynı kaldı. Bu sonuç yalnızca bu harita ve bu defter için geçerli. Oyun içeriği için bu, bir gölün kendi anahtarıyla anılabilmesi demek; göl, bir denizin grubuna karışmadan kendi adıyla yer alıyor.

Tek seferlik geçiş neye mal oldu?

Yeni çekiliş yöntemine geçiş, kenar ölçümünden ayrı, tek seferlik bir değişiklikti. 26 Ekim 2026 tarihli ölçümde, eski defterden yeni yönteme geçerken 5.098 konum anahtarı emekliye ayrıldı. Bu, ölçülmüş bir geçiş sayısıdır; ama kenar değişikliğinin kalıcılık ölçümü değildir. Nedeni çekiliş yönteminin değişmesiydi; yani bu, geçişin bedeliydi. Deniz tarafında da 28 deniz alanı, 3 deniz bölgesi ve bir deniz alt kıtası yeni anahtar aldı; nedeni 23 Ekim'deki su çekilişi değişikliğiydi, yani deniz konumlarının artık karadan bağımsız seçilmesi. Kenar ölçümünde yeni yöntemde bile uzak anahtarların hepsi korunmadı: 131 uzak anahtar yine emekli oldu.

Bunun oyun içeriği için somut bir anlamı var. Bir olay, bir yer adı ya da bir kural bir anahtara bağlıysa, geçiş sırasında bu bağ kopabilir. Örneğin bir olay bir bölgenin eski kimliğine bağlıysa ve o kimlik emekliye ayrıldıysa, olayın hangi yere ait olduğu yeniden tanımlanmalı. Bu yüzden böyle bir geçiş için bir defalık içerik geçişi gerekir. Bu geçişin nasıl yapılacağı oyunun kendi kararıdır; bu ölçüm kayıtlı oyunların ve içeriğin geçişini kapsamıyor.

Bu ölçüm neyi göstermedi?

Sonuçların sınırlarını açıkça yazmak istiyoruz. Yalnızca tek bir harita ızgarası ölçüldü; başka haritalarda aynı oranları beklemek doğru olmaz. Eski ve yeni yöntemin sayıları ayrı koşulardan geliyor; yeni taraf iki ayrı tarihli değişikliği birlikte taşıdığı için bu karşılaştırma etkilerini birbirinden ayıramaz. Tam bir oyun oturumu, kayıtlı oyunlar ve içerik geçişi ölçülmedi. Uzak anahtarlar tamamen sabit kalmıyor; yoğunluk hedefi nedeniyle 131 uzak kayıp hâlâ var. Emekli olan su bölgesinin nedeni de henüz doğrulanmadı. Sonuçları tek bir oranla özetlemedik; çünkü yer, il, alan ve bölge düzeyleri birbirinden farklı davrandı ve her biri ayrı okunmalı. Ayrıca yalnızca tek bir kenar değişikliği ölçüldü; daha büyük ya da farklı yerde yapılan değişikliklerin sonucu bu ölçümden çıkmaz.

Sırada ne var?

Üç açık konu kaldı. Birincisi, emekli olan su bölgesinin nedenini bulmak. Bir anahtar emekliye ayrıldığında ona bağlı her içerik kopabilir; bu yüzden nedenini bilmek önemli. İkincisi, grupların yoğunluk hedeflerinin kenar değişikliklerinde kaç uzak anahtarı oynatması gerektiği; bu bir oyun kararı. Üçüncüsü, anahtara bağlı içerik için geçiş planı; bu da oyunun kendi kararıdır. Bu yazı, bu soruların cevabını vermiyor; bu ölçümlerle görülebilen kısmı gösteriyor.

Sık sorulanlar

Harita anahtarı nedir?

Bir yerin, ilin ya da bölgenin oyun içeriğinin bağlandığı kalıcı kimliktir. Harita çizgisi değiştiğinde eski ve yeni yer eşleşebiliyorsa aynı anahtar korunabilir. Bir olay metni o anahtara bağlıysa, yerin adı değişse bile olay aynı yere bağlı kalır.

Yeni yöntem uzak bölgelerde hiçbir anahtarın değişmeyeceğini garanti ediyor mu?

Hayır. Ölçümde yeni yöntemle 2.239 konum anahtarı emekliye ayrıldı; hepsi kara konumuydu. Değişiklikten 50 pikselden uzak emekli anahtarlar 3.367'den 131'e indi, ama sıfıra inmedi. Kalan 131 anahtarın nedeni, ölçümümüze göre grupların yoğunluk hedefi; bunun ilk halkalarını Kuzey Amerika grubunda sayılarla gösterdik. Bu karşılaştırmada alan, bölge ve alt kıta anahtarlarından hiçbiri emekli olmadı. Ama konum, il ve deniz kayıtları merkeze göre eşleştiği için merkez çok uzağa kayarsa bir kayıt yine emekli olabilir.

Yeni yönteme geçiş küçük bir sınır değişikliğiyle aynı şey mi?

Hayır. Geçiş tek seferlik bir adımdı ve kenar ölçümünün dışında kaldı. Bu adımda 5.098 konum anahtarı emekliye ayrıldı. Bu, ölçülmüş bir geçiş sayısıdır; kenar değişikliğinin kalıcılık ölçümü değildir.

Bu sonuçlar bütün oyun haritaları için geçerli mi?

Hayır. Ölçüm tek bir harita ızgarası ve bir defter kopyası üzerinde yapıldı. Başka haritalarda sonuçlar farklı çıkabilir.

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, bütün yazılar için Geliştirici Günlükleri sayfasına bakabilirsiniz.