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.