Data-driven design nedir? Oyun içeriğini koddan nasıl ayırırsınız?
Cevap
Data-driven design, oyun davranışını ve içeriğini (silah değerleri, düşman tipleri, level dalgaları, diyaloglar) kodun içine gömmek yerine veri dosyalarında tanımlamaktır. Kod genel bir motor gibi davranır; tasarımcı yeni içerik üretmek için programcıya ihtiyaç duymaz.
Avantajlar:
- Tasarımcılar derleme olmadan dengeleme (balancing) yapabilir; iterasyon hızlanır.
- Aynı kod yüzlerce varyasyonu destekler.
- Canlı oyunlarda değerler sunucudan (remote config) güncellenebilir.
- Modding ve lokalizasyon kolaylaşır.
Veri kaynakları: Unity'de ScriptableObject, Unreal'da DataAsset ve DataTable, JSON/CSV, Google Sheets'ten içe aktarma.
{
"id": "goblin_archer",
"health": 40,
"speed": 3.5,
"attack": { "type": "projectile", "damage": 8, "cooldown": 1.2 },
"loot": [ { "item": "arrow", "chance": 0.5 }, { "item": "gold", "min": 1, "max": 5 } ]
}[CreateAssetMenu(menuName = "Game/Enemy")]
public class EnemyDef : ScriptableObject
{
public string id;
public int health;
public float speed;
public AttackDef attack; // farklı saldırı tipleri için polimorfik veri
}Dikkat edilecekler:
- Doğrulama: Yanlış girilen veri crash'e yol açmamalı; editör içi validasyon ve build öncesi kontroller yazın.
- Versiyonlama ve migrasyon: Veri şeması değiştiğinde eski kayıtların bozulmaması.
- Aşırıya kaçmamak: Her şeyi yapılandırılabilir yapmak bir "iç programlama dili" doğurur; karmaşık mantık hâlâ kodda olmalı.
- Runtime'da tanım (definition) verisi ile durum (instance state) verisi ayrı tutulmalı; ScriptableObject'i runtime'da değiştirmek editörde kalıcı değişikliğe yol açar.
İlgili Oyun Programlama soruları
- Oyun döngüsü (game loop) nedir? Sabit ve değişken zaman adımı arasındaki fark nedir?
- Delta time nedir, neden kullanılır?
- Object pooling nedir, neden kullanılır?
- Entity Component System (ECS) nedir? Klasik nesne yönelimli yapıdan farkı nedir?
- Çarpışma tespitinde broad phase ve narrow phase nedir?
- Multiplayer oyunlarda server authority, client-side prediction ve lag compensation nasıl çalışır?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.