← Tüm Yazılar

Puzzle zorluk nasıl dengelendi: generator arkasındaki karar

225 bölüm — her birinin 'çözülebilir ama düşündürücü' olmasının arkasındaki hesap.

Puzzle tasarımında en kolay hata: ya çok zor ('bırakırım') ya çok kolay ('anlam yok'). Dengesi ince. 6 aylık iterasyonla şu heuristics oturdu.

Zorluk metriği = süre_limit × (taş_sayısı / tahta_karesi). 1 taş + 15 saniye = trivial. 7 taş + 120 saniye = challenging. Her bölüm için hedef metrik var; generator o metriğin ±%15 bandında puzzle üretir.

Deterministic seed: her (room_id, level_id) → aynı puzzle. Launch sonrası content update yaparsak seed korunur (eski progress bozulmaz). Ama aynı kullanıcı tekrar oynarsa aynı puzzle — bu istemediğimiz bir durum ama launch için kabul edilebilir; v1.1'de seed + user_id kombinasyonu ekleyeceğiz.

Her oda 1-15 bölümünde monoton artış yok, dalgalı. Bölüm 3-4 daha kolay (nefes alma), 7-8 zor (meydan okuma), 13-14 zor-medium (hazırlık), 15 çok zor (ödül). Bu ritim 'zirve + dinlenme' modelini takip eder — Duolingo'nun en iyi yaptığı şey.

El cilası her bölümde 15-20 dakika: generator'ın ürettiği ham puzzle'ı manuel olarak oynarım. 'Burada düşünme zorlayıcı mı yoksa can sıkıcı mı?' sorusunu cevaplarım. Can sıkıcıysa taşı değiştiririm, süre ayarlarım. Bölüm kaydı sonra.

Ölçüm: Launch sonrası analytics'te her bölümde ortalama çözüm süresi, retry oranı, yıldız dağılımı izlenir. 3★ oranı %60 altına düşen bölümler zor; %95 üstü kolay. İkisi de revize edilir ilk 30 gün içinde.

Bu yazı çerçevede: 'zorluk' sabit bir ölçü değil, topluluğun istatistiğidir. Launch'tan sonra 225 bölüm değişebilir — ama deterministic seed sayesinde progress kaybın olmaz.