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.
  1. Oyun döngüsü (game loop) nedir? Sabit ve değişken zaman adımı arasındaki fark nedir?OrtaOyun ProgramlamaGame Dev
  2. Delta time nedir, neden kullanılır?KolayOyun ProgramlamaGame Dev
  3. Object pooling nedir, neden kullanılır?OrtaOyun ProgramlamaGame Dev
  4. Entity Component System (ECS) nedir? Klasik nesne yönelimli yapıdan farkı nedir?ZorOyun ProgramlamaGame Dev
  5. Çarpışma tespitinde broad phase ve narrow phase nedir?ZorOyun ProgramlamaGame Dev
  6. Multiplayer oyunlarda server authority, client-side prediction ve lag compensation nasıl çalışır?ZorOyun ProgramlamaGame Dev

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle