Faz 0 ve Faz 1: Motorun kalbi
Bir hata tekrar üretilemiyorsa düzeltilemez. İlk iki aşamanın tek derdi buydu: aynı girdinin her zaman aynı sonucu vermesi.
Sorun
Karmaşık bir savaş sisteminde en sinir bozucu hata, “bazen” olan hatadır.
Aynı savaş iki kez koşulduğunda farklı sonuç çıkıyorsa, o hatanın peşine düşmek de imkânsız hale gelir.
Faz 0 — Önce ev kuruldu
Kod yazmadan önce klasör düzeni kuruldu ve tek bir kural kondu: içteki katman dıştakini tanımaz.
Savaş motoru, ağ kodunun varlığından bile habersiz. Böylece ağ tarafında yapılan bir değişiklik motoru bozamıyor.
Aşamanın kapanış şartı da buna göre seçildi. Proje sıfırdan indirilip tek komutla test koşabilmeli ve hiçbir parça yanlış yöne bağımlı olmamalı.
Asıl kritik test şuydu: aynı başlangıç ve aynı girdiyle oyun iki kez koştuğunda kayıt dosyaları bit bit aynı olmalı.
Kulağa akademik geliyor, ama bütün projenin bel kemiği. Aynı girdi hep aynı sonucu veriyorsa her hata yeniden üretilebilir, her maç yeniden oynatılabilir.
Dört test geçti, aşama kapandı.
Faz 1 — Savaşın çekirdeği
Sıra oyunun kalbindeydi. Savaş matematiği, üçlü rol düzeni (tank, iyileştirici, hasar) ve her vuruşu yazan kayıt sistemi.
Üç karar alındı.
Statlar en alta oturur. Matematik statları okur, tersi asla olmaz.
İkincil statların her birinin ayrı bir kişiliği var. Biri verilen hasarı artırıp alınanı azaltır, biri bekleme sürelerini (cooldown) kısaltır, biri düz hasar ekler, kritik ise iki kat vurur. Her birinin davranışını kilitleyen kendi testi var.
Yetenekler kod değil, yapı taşlarından kurulan veri. “Hasar ver”, “etki uygula”, “kaynak kazandır” gibi parçaların birleşimi.
En işe yarayan yanı şu: güçlendirme, zayıflatma, zamana yayılan hasar, kendi kendine tetiklenen etkiler; hepsi aynı yapının değişik hâlleri.
İlk özel güç sistemi de burada kanıtlandı: tılsım. “Şu olay olunca şu etkiyi tetikle” mantığıyla çalışıyor.
Tetiklenen etkinin kayıtta doğru görünmesi, motorun çalıştığının kanıtı oldu.
Kalıcı miras
Aşamanın asıl mirası kayıt şemasının dondurulması.
Artık yeni alan eklenebiliyor ama var olan hiçbir alan değiştirilemiyor.
Ölçüme dayalı bir oyunda kayıt biçimi bozulamaz. Sonradan yazılacak bütün analiz araçları tam bu dosyalardan beslenecek.