# Bir oturumda biten 4X: kapsamı kısıt seçti

> 480 altıgende 60 turda biten, tarayıcıda çevrimdışı çalışan zarsız strateji oyunu çekirdeği; Regnarium olarak yayına çıktı.

- Şu an ne yapıyor: 480 altıgenlik haritada azami 60 turda biten bir 4X eli yürütüyor; kurallar, harita üretimi ve rakip yapay zekâ tek bir saf TypeScript çekirdeğinde, savaş zarsız. Elinde yarım saati olan ve strateji oynamak isteyen herkes tarayıcıdan açabilir.
- Tür: Web uygulaması
- Durum: Ürün oldu
- Odak: Oyun & simülasyon
- Başlangıç: 2026-09-09
- Labs’tan çıkış: 2026-09-13
- Teknolojiler: TypeScript, Next.js, React, Vitest, MDX
- Etiketler: #oyun, #determinizm, #cevrimdisi, #typescript
- Web sitesi: https://regnarium.com
- Bu iş ürüne dönüştü: Regnarium (https://www.muhammetsafak.com.tr/portfolyo/regnarium/)
- Kaynak: https://www.muhammetsafak.com.tr/labs/regnarium-lab/
- Dil: tr-TR
- Yazar: Muhammet Şafak

---
Strateji oyunları benim on binlerce saat gömdüğüm tek tür. Ama o türün
alışılmış oturumu bir akşamı yiyor, ve elinde bir akşam olmayan oyuncu için
kimse bir şey yapmıyordu.

## Tek oturum, kapanan bir el

Denenen şey, 4X'in dört fiilini — keşfet, genişle, üret, alt et — yarım saate
sığdırmaktı. Bunun tek gerçek yolu, oyunun kendini bitirmesi: el azami altmış
turda kapanıyor, fetih tamamlanmadıysa kazananı puan belirliyor. Süre bir
uyarı değil, kuralın parçası.

Kapsam da aynı kısıttan türedi. Tek kişilik bir iş büyük yapımların içerik
hacmiyle yarışamaz; yarışmaya çalışırsa hiçbir sistemi bitiremez. O yüzden
liste bilinçli olarak kısa tutuldu ve her kaydın tahtada ayırt edilebilir bir
işi var — iş görmeyen bir birim eklemek, listeyi uzatıp oyunu zenginleştirmiyor.

## Sürpriz yok, pişmanlık var

İkinci karar savaşta. Zar atan bir savaş sistemi, kaybedilen her eli sisteme
yıkma imkânı verir; oyuncu kendi kararını sorgulamak yerine talihi suçlar.
Burada saldırıdan önce gördüğünüz önizleme hesabın kendisi: aynı sayı, aynı
fonksiyon. Ayrı bir "tahmin" fonksiyonu yazmak, önizleme ile sonucun
ayrışabileceği tek kapıyı açardı; o kapı hiç açılmadı.

Rastgelelik tamamen yok değil — harita tohumlu bir üreticiden geliyor — ama
oynanışın içine sızmıyor. Aynı tohum ve aynı komut dizisi her zaman aynı eli
veriyor, rakibin kararları dâhil.

## Sunucusuz olmanın getirdiği kayıt biçimi

Oyunun çevrimdışı ve hesapsız çalışması, kaydın nerede duracağını da belirledi.
Kayıt tam bir durum kopyası değil: tohum, kurulum ve o ana kadar verilen
komutların listesi. Yükleme bu listeyi yeniden oynatarak durumu kuruyor — ve
geri alma da aynı mekanizmayı kullanıyor, kaydı bir komut kısaltıp eli baştan
oynatıyor. Ayrı bir geri-alma durumu hiç tutulmuyor.

Bunun bir bedeli var ve açıkça ödendi: kurallar değişince eski kayıt yeniden
oynatıldığında başka bir el üretiyor, dolayısıyla bir göç yolu yazılamıyor.
Kayıt sürümü artıyor ve eski kayıt sessizce atılıyor. Tek oturumluk bir oyunda
bu kabul edilebilir bir kayıp; uzun kampanyalı bir oyunda olmazdı.

## Kısıtı makineye söyletmek

Mekanikleri ve mimariyi ben tasarladım, kodun büyük kısmını yapay zekâ yazdı;
benim işim mimarinin korunmasıydı. Ama bir kuralı gözle korumak ölçeklenmiyor,
o yüzden kısıtların çoğu makineye devredildi: kural çekirdeği tarayıcıya,
saate ve ağa erişemiyor — bunlar lint kapısında yasaklı — ve kapının gerçekten
tuttuğu, kasıtlı olarak hatalı yazılmış dosyaların denetlenmesiyle ayrıca
sınanıyor.

Oyun yayında ve oynanabilir durumda; geliştirme sürüyor, açık maddeler
kendi kayıtlarında duruyor. Ürün tarafının ayrıntısı portfolyoda.
