İçeriğe geç
Muhammet Şafak
en
Günlük 4 dk okuma

Oyun geliştirmek planımda yoktu — kapsamı kısıt seçti

Tek başına bir strateji oyunu yapmanın tek yolu kapsamı kesmekti. Kısıt listesi, oyunun bütün mekaniklerini kendiliğinden seçti.

Kapak görseli — bir karar kafesi; SOLO DEV, WEB TECHNOLOGY, TURN-BASED ve LIMITED ASSETS etiketli plakaların arasından mor renkte yanan tek bir yol geçiyor

Oyun geliştirmek hiçbir zaman planımda yoktu. On yedi yıldır yazdığım şey iş uygulamasıydı; oyun benim için oynanan bir şeydi, yapılan bir şey değil. Birkaç arkadaşımın oyun geliştirmeye başlaması ve ısrarla itmesi olmasa bu yazı da olmazdı.

İtki geldiğinde ilk sorduğum soru “ne yapayım” değil, “ne yapabilirim”di. Bu yazı o sorunun cevabının — bir kısıt listesinin — nasıl bir oyun tasarımına dönüştüğünün hikâyesi. Kısa hâli şu: kısıtlar kapsamı daraltmadı, kapsamı seçti. “Tek oturumda bitmeli” kararı tur sınırını, zarsız savaşı ve sunucusuz mimariyi tek tek belirledi; ben bunların hiçbirini ayrı ayrı seçmedim. Ortaya çıkan şeyin adı Regnarium.

Tek bildiğim tür

Kendime dürüst olduğumda elimde tek bir varlık vardı: strateji oyunlarına gömdüğüm on binlerce saat. Başka bir türü oynadığım kadar bilmiyordum, ve bilmediğim bir türü tasarlamaya çalışmak, tek kişilik bir işte harcanacak en pahalı zaman olurdu.

Bu ilk kısıttı ve aslında bir avantajdı. Bir türü oyuncu olarak iyi bilmek, tasarımcı olarak “burada canım sıkılıyor” diyebilmek demek. 4X stratejide o nokta bellidir: oyunun ortası. Keşif bitmiş, savaş başlamamış, siz sıra tuşuna basıp duruyorsunuz.

Elimde olmayanların listesi

İkinci kısıt ölçekti. Tek kişiyim, bir stüdyo değil. Bu, şununla yarışamayacağım anlamına geliyordu: içerik hacmi. Büyük yapımların yüzlerce birimi, onlarca uygarlığı, derin teknoloji ağaçları var ve bunların hepsi insan-yılı demek.

Buradaki hata, azıyla aynı şeyi yapmaya çalışmak olurdu — yani her sistemin yarısını kurup hiçbirini bitirmemek. Onun yerine listeyi bilinçli olarak kısa tuttum: beş birim, beş bina, dört arazi, üç kaynak. Tek kural şuydu: her kaydın tahtada ayırt edilebilir bir işi olacak. Bir birim başka bir birimin biraz daha iyisiyse, o birim listeyi uzatıyor ama oyunu zenginleştirmiyor.

”Yarım saatte bitmeli” neyi seçti

Üçüncü kısıt en belirleyicisiydi ve kişiseldi: bu oyunu bir bakıma kendim için, beklemelerde oynamak için kurguluyordum. Yani el, yarım saatte bitmeliydi.

Bu tek cümlenin seçtiği şeylere bakın:

  • Sabit bir tur sınırı. Oyun kendini bitiriyor: el azami altmış turda kapanıyor ve fetih tamamlanmadıysa kazananı puan belirliyor. Süre bir uyarı değil, kuralın parçası. “İstersen devam et” diyen bir tasarım, yarım saatlik vaadi ilk gün bozardı.
  • Küçük ama dolu bir harita. Tahtanın ölçüsü doğrudan tur sayısından türedi: keşfin bitmesi, genişlemenin sıkışması ve cephenin oluşması altmış tura sığmalıydı.
  • Beklemeyen bir rakip. Yapay zekâ rakibin karar süresi bir bütçe kalemi hâline geldi; oyuncunun sırasını beklediği her saniye, yarım saatten çalınan bir saniye.

Hiçbirini “iyi tasarım” olduğu için seçmedim. Üçü de tek bir kısıttan düştü.

Zarsız savaş bir tasarım kararıdır

Dördüncü karar kısıttan değil, kendi oyunculuğumdan geldi — ve en çok düşündüğüm yer burasıydı.

Zar atan bir savaş sistemi, kaybedilen her eli sisteme yıkma imkânı verir. Oyuncu kendi kararını sorgulamak yerine talihi suçlar; kısa bir oyunda bu ölümcül, çünkü telafi edecek üç saatiniz yok. O yüzden savaş tamamen deterministik: saldırıdan önce gördüğünüz önizleme, motorun işlettiği hesabın aynısı. Ayrı bir “tahmin” fonksiyonu yazmak, önizleme ile sonucun ayrışabileceği tek kapıyı açardı; o kapı hiç açılmadı.

Sonuç şu cümleye indi: sürpriz yok, pişmanlık var. Kaybettiğiniz el, sizin okumadığınız bir sayı yüzünden kaybedildi.

Rastgelelik tamamen yok değil — harita tohumlu bir üreticiden geliyor — ama oynanışın içine sızmıyor. Bu ayrım aynı zamanda çevrimdışı çalışmayı mümkün kılan şey: aynı tohum ve aynı komut dizisi her zaman aynı eli ürettiği için, kayıt tam bir durum kopyası olmak zorunda değil. Tohum ve komut listesi yeterli; yükleme onu yeniden oynatıyor. Sunucu, hesap ve senkronizasyon ihtiyacı buradan düştü.

Kodu ben yazmadım, mimariyi ben tuttum

Bir künye satırı olarak söylemek gerekiyor: mekanikleri ve mimariyi ben tasarladım, kodun büyük kısmını yapay zekâ yazdı. Benim işim üretmek değil, sapmayı engellemekti — belirlediğim mimariden çıkılmaması, yanlış kütüphanenin projeye girmemesi, bir kuralın iki yerde hesaplanmaya başlamaması. Bu ayrımı daha önce üç seviye üzerinden yazmıştım; burada kendi üzerimde denedim ve tezimi değiştirmedi.

Tek şey ekleyeceğim: bir kuralı gözle korumak ölçeklenmiyor. O yüzden kısıtların çoğunu makineye devrettim — kural çekirdeğinin saate, ağa ve tarayıcıya erişmesi denetim kapısında yasaklı, ve kapının gerçekten tuttuğu, kasıtlı olarak hatalı yazılmış dosyalarla ayrıca sınanıyor. Yazılmış bir kural, bağlı olduğunun kanıtı değil.

Günün sonunda

Ortaya çıkan iş beni tatmin etti, ve bunun sebebi oyunun büyük olması değil; bitmiş olması. Tek kişilik bir işte kapsamı kesmek bir taviz gibi hissettiriyor ama pratikte tam tersi: kesilmemiş kapsam, hiçbir sistemi bitirmemek anlamına geliyor.

Yan proje yapan birine söyleyebileceğim tek şey bu. Kısıt listenizi önce yazın — ne kadar zamanınız var, neyi gerçekten biliyorsunuz, ürün nerede çalışacak — ve tasarım kararlarını o listeden düşürün. Boş bir sayfadan başlamak özgürlük gibi görünüyor; aslında bitirmemenin en kısa yolu.

Nasıl kurulduğu ve hangi kararın neden verildiği Labs kaydında; oyunun kendisi tarayıcıda, hesapsız ve çevrimdışı.

Bu konudaki deneyler

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.

Web uygulaması TypeScript Next.js React +2 daha
Eylül 2026 — Eylül 2026

Kaydırmalı doğru/yanlış bilgi yarışması; asıl mesele oyun değil, istemcinin ürettiği skoru imzayla doğrulanabilir kılmak.

Şu an ne yapıyor

Kaydırmalı doğru/yanlış bilgi yarışması bir mobil uygulama olarak çekirdek döngüsüyle uçtan uca çalışıyor; skoru istemci üretse de server_nonce ve HMAC imzasıyla sunucu tarafında doğrulanıyor. swipenor.com uygulamanın tanıtım sayfasıdır, oyunun kendisi değil.

Mobil uygulama Laravel PHP PostgreSQL +6 daha
Temmuz 2026 — Devam ediyor
Paylaş:

Yorumlar

Yorum yapmak için GitHub hesabınızla giriş yapmanız yeterli. Yorumlar GitHub Discussions üzerinde saklanır.

İlgili Yazılar

Sitede Ara

Yazı, proje ve sayfalarda arama yapmak için yazmaya başlayın.

Esc ile kapat Pagefind ile güçlendirildi