Oyun geliştirmede bu hedefe ulaşmanın geleneksel bir yolu, oyun sistemleri için veri odaklı bir mimari kullanmaktır.
Özünde, bu, kodun menzili / hasarı / nüfuzu için açıkça tanımlanmış değerlere sahip belirli bir silah türünü (silah) uygulamadığı, menzilli bir silahın (menzil / hasar / nüfuz ...) genel kavramlarını doldurduğu anlamına gelir. harici (koda) veri kaynağından. Bu harici kaynak, diskten okunan ayrıştırılabilir (belki XML) dosyalardan, oyun motorunun kendi içinde veya dışında bulunan araçlar aracılığıyla oluşturulan ikili dosyalara veya veritabanı öğelerine kadar değişebilir.
Düşman gibi bir şey tanımlayan AI sistemi, daha sonra veriye dayalı öğeler tarafından değiştirilen bazı genel davranışları (agresif, savunma, destek, korkak) desteklemek üzere tasarlanabilir.
Yeni Düşmanım, aşağıdakiler için veri odaklı değerlerle agresif temel AI davranışı ile başlar: -güvenli oyuncular> seviyem + X - doğma noktasının ötesinde X birimine kadar olan oyuncular-sağlık <X menzilli yetenek öncelikleri-yakın yetenek öncelikleri olduğunda kaçma (oyuncular çok yaklaştıklarında)
Daha karmaşık bir veri güdümlü şema, bir AI durumunun (sonlu durum makinesi) başka bir duruma geçtiği (veya diğer N durumundan birine geçiş şansının olduğu) belirli veri noktalarının (olayların) tanımlanmasına izin verebilir. karmaşık davranış hiyerarşisi.
Tüm bunlar elbette sadece bir davranışı kodlamaktan daha fazla iştir, ancak kullanıcıların kaynağı değiştirmeden içerik üretmelerini sağlamak eğlenceli bir mücadeledir.
Ulaşılacak bonus puanlar var:
- verileri dinamik olarak güncelleyebilir ve uygulamayı yeniden başlatmadan değişikliklerin oyun motoruna yansıtılmasını sağlayabilirsiniz
- doğrudan metin (xml veya başka bir şekilde) dosyaları düzenlemek yerine, verilerle etkileşim kurmak için bir arabirim kullanmalarına izin veren veriler üzerinde kullanıcı dostu kullanıcı arayüzleri oluşturursanız
Daha teknik bir kalabalık olarak hedeflenen bir öğretici oyun için, işin çoğu, kullanıcıların veriye dayalı olabileceği genişletmek için temiz arayüzler ortaya koyan tasarlanmış sınıflarda / nesnelerde.