SaaS ve Ürün Tasarımında Oyun Mekanikleri: XP, Görevler ve Sistemik Alışkanlıklar
İyi oyunlaştırma kullanıcıyı üründe daha uzun tutmaya değil, yapmak istediği işi daha düzenli tamamlamaya yardım eder. Mekanik, ürünün ana davranışını güçlendirmiyorsa dekorasyondur.
Birçok SaaS ürünü oyunlaştırmayı sonradan eklenen puan, rozet ve streak katmanı olarak ele alıyor. Ben tersinden başlıyorum: ürünün tekrar edilmesini istediğimiz gerçek davranışı tanımlayıp, oyun mekaniğini o davranışın geri bildirim sistemi olarak kurmak.
XP bir ödül değildir; kullanıcıya hangi davranışın sistemde değer taşıdığını söyleyen bir sinyaldir.
1. Önce çekirdek davranış döngüsü
Bir görev yönetim ürününde çekirdek davranış görev tamamlamak değil; doğru işi seçmek, başlamak, tamamlamak ve sistemi güncel tutmaktır. Oyunlaştırma yalnızca completion event'ine XP verirse kullanıcı sistemin geri kalanını optimize etmeyi öğrenebilir. Bu yüzden event ekonomisini ürünün gerçek davranış zinciri üzerinden tasarlamak gerekir.
type ProgressEvent = | { type: "focus_started"; taskId: string } | { type: "task_completed"; taskId: string; difficulty: number } | { type: "daily_review_completed" } | { type: "habit_recovered"; habitId: string };2. XP ekonomisi sonsuz büyüyen sayı olmamalı
XP miktarı davranışın zorluğu, tekrar edilebilirliği ve manipüle edilebilirliğiyle birlikte düşünülmeli. Kullanıcı aynı düşük değerli aksiyonu yüz kez tekrarlayarak sistemin anlamını bozabiliyorsa ekonomi tasarlanmamıştır. Diminishing returns, günlük cap, cooldown veya event idempotency gerekebilir.
function xpFor(event: ProgressEvent): number { if (event.type === "task_completed") { return Math.min(50, 10 + event.difficulty * 5); } if (event.type === "daily_review_completed") return 20; return 5;}3. Streak değil recovery tasarlamak
Streak sistemi düzenli kullanıcıyı motive ederken bir gün kaçıran kullanıcıyı cezalandırabilir. Özellikle üretkenlik ve alışkanlık ürünlerinde kırılmayan seri yerine geri dönüş davranışını ödüllendirmek daha sağlıklı olabilir. 'Kaç gün hiç bozmadan yaptın?' yerine 'bozulduktan sonra ne kadar hızlı geri döndün?' sorusu sistem açısından daha değerlidir.
4. Görevler içerik değil state machine olmalı
Quest veya challenge yalnızca başlık ve checkbox değildir. Available, active, blocked, completed, failed, claimed gibi state'leri ve geçiş kuralları olan bir sistemdir. Bu model ödülün iki kez verilmesini, süresi geçmiş görevin tamamlanmasını veya client'ın doğrudan claimed state yazmasını engeller.
type QuestState = | "available" | "active" | "blocked" | "completed" | "claimed" | "expired";5. Ödül ledger'ı kullanmak
XP, coin, badge veya unlock gibi ödüller kritik mutation'dır. UI tarafında +10 XP yazıp profile toplamını artırmak yerine immutable bir reward ledger ve idempotency key kullanmak sistemin geçmişini denetlenebilir hale getirir.
| Katman | Soru | Risk |
|---|---|---|
| Event | Ne oldu? | Aynı olay iki kez işlenebilir |
| Rule | Bu olay ne kadar değerli? | Ekonomi kolay sömürülebilir |
| Ledger | Hangi ödül neden verildi? | Toplam değer açıklanamaz |
| Feedback | Kullanıcı bunu nasıl görüyor? | Sistem dekorasyona dönüşür |
6. Skill tree ancak gerçek seçim yaratıyorsa anlamlı
Gelişim ağacı tüm node'ların sırayla açıldığı bir progress bar ise ağaç değildir. Kullanıcı farklı davranış veya yetenek yolları arasında trade-off yapabiliyorsa anlamlı hale gelir. Ürün bunu desteklemiyorsa daha basit bir seviye sistemi daha dürüst ve daha anlaşılırdır.
7. Etik sınır: retention değil agency
Oyun mekaniği kullanıcıyı kayıp korkusuyla ürüne döndürmek için kullanılabilir. Benim ölçütüm daha basit: mekanik kullanıcıya kendi hedefi üzerinde daha fazla kontrol veriyor mu? Kullanıcı bir günü kaçırdığında borç hissediyorsa veya ürün içinde anlamsız görev yaparak sayı büyütüyorsa sistem kendi amacını yenmiştir.
Ölçtüğüm metrikler
- Ödül alan kullanıcı sayısı değil, çekirdek davranışın tamamlanma oranı.
- Streak uzunluğu değil, kopuş sonrası geri dönüş süresi.
- Toplam XP değil, XP üreten event dağılımı.
- Quest completion değil, gerçek ürün çıktısıyla korelasyonu.
- Session süresi değil, kullanıcı başına tamamlanan anlamlı iş.