Zar atmayan bir bulmaca kurmak: SilkWard'da her hamle aynı sonucu üretir
Düğüm-çizgi bir tahtada deterministik hamlelerle ilerleyen, çevrimdışı bir bulmaca oyunu; 36+6 bölümü tek bir TypeScript çekirdeği web ve mobile besliyor.
Şu an ne yapıyor
Düğüm-çizgi bir tahtada 36 bölüm + 6 gizli bölümü, şans ya da refleks olmadan tamamen deterministik hamlelerle çözdürüyor; tek TypeScript çekirdeği web (PWA) ve mobil (iOS/Android) istemcisini aynı anda besliyor. silkward.com üzerinden tarayıcıdan oynanabilir.
- Başlangıç
- Eylül 2026 — Eylül 2026
- Labs’tan çıkış
Tür
Teknolojiler
Sıra tabanlı bulmaca benim için Hitman GO’nun bıraktığı boşluğu dolduruyordu: az sayıda kural, sıfır şans, sonucu düşünerek üretme hissi. SilkWard’ı bu boşluğa kurdum — düğüm-çizgi bir grafta ilerleyen, ağırlıkla sözsüz anlatılan bir bulmaca.
Şans yok, refleks yok, sürpriz kural yok
Bu üç ilke oyunun tasarım felsefesini özetliyor. Düğüm-çizgi grafında attığınız her adım, düşmanların da aynı deterministik kuralla ilerlemesini tetikliyor; bir bölümü kaybederseniz bunun sebebi zarın kötü gelmesi değil, hamlenin kendisi. 36 bölüm + 6 gizli bölüm üç perdeye yayılıyor.
Tek çekirdek, iki platform
Kural motoru sıfır bağımlılıkla yazıldı: ne DOM’u ne React Native’i tanıyor, yalnız saf TypeScript. Bu saflık, web (Next.js tabanlı PWA) ile mobil (Expo) istemcisinin aynı davranışı iki kez yazmadan paylaşmasını sağlıyor — kural motoru ve çözücü ortak bir çekirdek pakette, bölüm verisi ayrı bir veri paketinde, arayüz metinleri ise ayrı bir dil paketinde yaşıyor; platforma özgü olan yalnızca arayüz katmanı.
Bölüm nasıl kalibre ediliyor
Yeni bir bölüm tek dosyayı yazmakla bitmiyor: önce düzenleyici araçla tasarlanıyor, sonra veri paketine bir seviye tanımı olarak aktarılıyor. Bölümün asgari hamle sayısı elle tahmin edilmiyor — solver-cli aracının BFS ile bulduğu sayı yazılıyor, ardından bölüm tasarımı bu sayıya göre kalibre ediliyor. Bir doğrulama komutu bu sayının her değişiklikte hâlâ doğru olduğunu yeniden sınıyor, böylece “par” değeri zamanla sessizce güncelliğini yitirmiyor.
Kural motorunun kendisi de aynı disipline tabi: çekirdek pakette rastgele sayı üreteci ya da sistem saatine erişim yasak — determinizm bir yorum satırıyla değil, derleme zincirindeki bir kısıtla korunuyor. Devreye alınabilecek bir yapay zekâ görsel hattı da çekirdek koddan ayrı, yalnızca geliştirme aracı dizininde duruyor; denendi, ama çıktısı onay sürecinden geçmediği için oyuna hiç girmedi — oynanan sürümün görselleri tamamen prosedürel üretildi, oyunun runtime’ı hiçbir yapay zekâ istemcisi taşımıyor.
Ağa neredeyse hiç çıkmayan bir oyun
İlk yükleme SilkWard’ın kabuğunu (arayüz, kod, görseller) önbelleğe alıyor;
o andan sonra oynanış hiçbir ağ isteği yapmıyor. Tek istisna sesler: 26 ses
dosyası baştan indirilmiyor, her biri ilk çalındığı anda bir kez indirilip
kalıcı önbelleğe yazılıyor — bu yüzden uçak modu güvencesi ikinci oturumdan
itibaren geçerli, ilk oturumda ağ yoksa oyun sessiz çalışıyor, çökmüyor. Bu
sonradan eklenen bir “çevrimdışı mod” değil, en baştan konan bir kısıt:
çekirdek ve uygulama katmanında fetch kullanımı lint kurallarıyla
engelleniyor, XMLHttpRequest kullanımı ise ayrı bir kaynak tarama testiyle
yakalanıyor — kısıtın kendisi koda bağlı, gözle denetlenen bir söz değil.
Kayıt burada durduruldu: oyun bugün silkward.com üzerinden oynanabilir durumda, ama üzerinde yeni bir geliştirme yapılmıyor.