Saya telah tertarik pada sistem entitas berbasis komponen untuk sementara waktu, dan membaca artikel yang tak terhitung jumlahnya di dalamnya (The Insomiac , standar cantik Evolve Your Hierarchy , T-Machine , Chronoclast ... hanya untuk beberapa nama).
Mereka semua tampaknya memiliki struktur di luar sesuatu seperti:
Entity e = Entity.Create();
e.AddComponent(RenderComponent, ...);
//do lots of stuff
e.GetComponent<PositionComponent>(...).SetPos(4, 5, 6);
Dan jika Anda membawa ide data bersama (ini adalah desain terbaik yang saya lihat sejauh ini, dalam hal tidak menggandakan data di mana-mana)
e.GetProperty<string>("Name").Value = "blah";
Ya, ini sangat efisien. Namun, itu bukan cara termudah untuk membaca atau menulis; rasanya sangat kikuk dan bekerja melawan Anda.
Saya pribadi ingin melakukan sesuatu seperti:
e.SetPosition(4, 5, 6);
e.Name = "Blah";
Meskipun tentu saja satu-satunya cara untuk mendapatkan desain semacam itu adalah kembali ke Entity-> NPC-> Enemy-> FlyingEnemy-> FlyingEnemyWithAHat Pada jenis hierarki desain ini mencoba untuk menghindari.
Adakah yang melihat desain untuk sistem komponen semacam ini yang masih fleksibel, namun tetap mempertahankan tingkat keramahan pengguna? Dan dalam hal ini, mengelola penyimpanan data (mungkin masalah tersulit) dengan cara yang baik?
Desain apa yang ada untuk sistem entitas berbasis komponen yang ramah pengguna tetapi masih fleksibel?