Gregory Weir'in cevabı, çoklu roller üstlenebilmek için öğe örneklerinin nasıl yapılandırılacağı konusundaki favorim.
Bir dosyadan yüklemek için:
İlk önce, YAML'ı kullanın. YAML özellikli bir veri tanımlama dilidir; nispeten hızlı bir şekilde ayrıştırılabilir, insanlar tarafından okunup düzenlenebilir, ikili verileri destekler ve Java da dahil olmak üzere çoğu programlama dili için kütüphaneler bulunur. Bu, "dosyalardaki verileri nesnelere nasıl alırım?" Çözer.
İkincisi, flyweight şablonunu kullanın . Bu dosyalardan okuduğunuz verilerin çoğu statiktir. Örneğin değişmeyecek ("balta 1d10 taban hasarı veriyor ve ahşabı kırıyor ama taşı değil" - bir oyuncunun sahip olduğu beş eksenin tamamı için geçerli). Gerçekten de YAML dosyalarından okuduğunuz şey bu platonik tanım ve her bir kalem örneğinizde "Kaç kırılmadan önce ne kadar salıncak salladım" gibi örnek başına verilerle birlikte istenmeyen (ve sabit) referanslar var. bana özel bir isim mi? "vb.
Çapraz örnek verilerini tek bir nesnede paylaşarak, çok fazla hafıza alanını korursunuz ve oyunların devam etmeden devam etmesini kolaylaştırabilirsiniz (oyunları veya oyuncu veritabanını kaydetme).
Yani sınıf yapınız şuna benziyor:
- class Öğe - Öğe başına bir örnek
- Bir Silah örneği sahibi
- A sahibi örneği
- Özel bir isim vb. Var.
- sınıf Silah - (en fazla) öğe başına bir örnek
- Öğe Bir Bileşen mi
- Weapon-Def anlamına gelir
- -Bir bonus bonusu seviyesi, vs.
- class Tool - (Bir taneye kadar) öğe başına bir örnek
- Öğe Bir Bileşen mi
- ToolDef'i ifade eder
- Bir dayanıklılık vb.
- sınıf WeaponDef - Her silah çeşidine bir örnek
- Bir dosyadan okuyun, alanlar sabit olmalıdır.
- Hasar hasarı, 1 veya 2 el, vb.
- sınıf ToolDef - Her tür alet için bir örnek
- Bir dosyadan okuyun, alanlar sabit olmalıdır.
- Sağlam bir dayanıma sahiptir, kırabileceği malzemeler vb.