Attualmente sto riprogettando il mio Entity System , per C ++, e ho molti manager. Nel mio progetto, ho queste lezioni, al fine di legare insieme la mia biblioteca. Ho sentito molte cose brutte quando si tratta di lezioni di "manager", forse non sto nominando le mie lezioni in modo appropriato. Tuttavia, non ho idea di cos'altro nominarli.
La maggior parte dei gestori, nella mia libreria, sono composti da queste classi (anche se varia leggermente):
- Contenitore: un contenitore per oggetti nel gestore
- Attributi: attributi per gli oggetti nel gestore
Nel mio nuovo design per la mia biblioteca, ho queste classi specifiche, al fine di legare insieme la mia biblioteca.
ComponentManager: gestisce i componenti nel sistema di entità
- ComponentContainer
- ComponentAttributes
- Scena * - un riferimento a una scena (vedi sotto)
SystemManager: gestisce i sistemi in Entity System
- SystemContainer
- Scena * - un riferimento a una scena (vedi sotto)
EntityManager: gestisce le entità nel sistema di entità
- EntityPool - un pool di entità
- EntityAttributes - attributi di un'entità (questo sarà accessibile solo alle classi ComponentContainer e System)
- Scena * - un riferimento a una scena (vedi sotto)
Scena: unisce tutti i manager
- ComponentManager
- Gestore di sistema
- EntityManager
Stavo pensando di mettere tutti i container / pool nella classe Scene stessa.
vale a dire
Invece di questo:
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();
Sarebbe questo:
Scene scene; // create a Scene
Entity entity = scene.getEntityPool().create();
Ma non sono sicuro. Se dovessi fare quest'ultimo, ciò significherebbe che molti oggetti e metodi sarebbero stati dichiarati nella mia classe Scene.
GLI APPUNTI:
- Un sistema di entità è semplicemente un disegno utilizzato per i giochi. È composto da 3 parti principali: componenti, entità e sistemi. I componenti sono semplicemente dati, che possono essere "aggiunti" alle entità, in modo che le entità siano distintive. Un'entità è rappresentata da un numero intero. I sistemi contengono la logica di un'entità, con componenti specifici.
- Il motivo per cui sto cambiando il mio design per la mia biblioteca, è perché penso che possa essere cambiato molto, al momento non mi piace il feeling / flusso.