Saat ini saya sedang merancang ulang Sistem Entitas saya , untuk C ++, dan saya memiliki banyak Manajer. Dalam desain saya, saya memiliki kelas-kelas ini, untuk mengikat perpustakaan saya bersama. Saya telah mendengar banyak hal buruk ketika datang ke kelas "manajer", mungkin saya tidak menyebutkan kelas saya dengan tepat. Namun, saya tidak tahu apa lagi untuk memberi nama mereka.
Sebagian besar manajer, di perpustakaan saya, terdiri dari kelas-kelas ini (meskipun sedikit berbeda):
- Wadah - wadah untuk objek di manajer
- Atribut - atribut untuk objek di manajer
Dalam desain baru saya untuk perpustakaan saya, saya memiliki kelas-kelas khusus ini, untuk mengikat perpustakaan saya bersama-sama.
ComponentManager - mengelola komponen dalam Sistem Entitas
- ComponentContainer
- Komponen Komponen
- Adegan * - referensi ke Adegan (lihat di bawah)
SystemManager - mengelola sistem dalam Sistem Entitas
- SystemContainer
- Adegan * - referensi ke Adegan (lihat di bawah)
EntityManager - mengelola entitas dalam Sistem Entity
- EntityPool - kumpulan entitas
- EntityAttributes - atribut entitas (ini hanya akan dapat diakses oleh kelas ComponentContainer dan Sistem)
- Adegan * - referensi ke Adegan (lihat di bawah)
Adegan - mengikat semua manajer bersama
- Manajer Komponen
- Manajer sistem
- Manajer Entity
Saya berpikir untuk hanya menempatkan semua wadah / kolam di kelas Scene itu sendiri.
yaitu
Alih-alih ini:
Scene scene; // create a Scene
// NOTE:
// I technically could wrap this line in a createEntity() call in the Scene class
Entity entity = scene.getEntityManager().getPool().create();
Ini akan menjadi ini:
Scene scene; // create a Scene
Entity entity = scene.getEntityPool().create();
Tapi saya tidak yakin. Jika saya melakukan yang terakhir, itu berarti saya akan memiliki banyak objek dan metode yang dideklarasikan di dalam kelas Scene saya.
CATATAN:
- Sistem entitas hanyalah desain yang digunakan untuk game. Ini terdiri dari 3 bagian utama: komponen, entitas, dan sistem. Komponen hanyalah data, yang dapat "ditambahkan" ke entitas, agar entitas menjadi berbeda. Entitas diwakili oleh integer. Sistem mengandung logika untuk suatu entitas, dengan komponen tertentu.
- Alasan saya mengubah desain untuk perpustakaan saya, adalah karena saya pikir itu bisa diubah cukup banyak, saya tidak suka rasa / aliran ke sana, saat ini.