Domanda

Attualmente sto riprogettando il mio Sistema di entità, per C ++ e ho molti manager. Nel mio design, ho queste lezioni, al fine di legare la mia biblioteca. Ho sentito molte cose cattive quando si tratta di lezioni di "manager", forse non sto nominando le mie lezioni in modo appropriato. Tuttavia, non ho idea di cosa nominarli.

La maggior parte dei manager, nella mia biblioteca, sono composti da queste classi (anche se varia un po '):

  • Container: un contenitore per oggetti nel manager
  • Attributi - attributi per gli oggetti nel manager

Nel mio nuovo design per la mia biblioteca, ho queste classi specifiche, al fine di legare 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 nel sistema di entità

    • SystemContainer
    • Scena* - Un riferimento a una scena (vedi sotto)
  • EntityManager - Gestisce entità nel sistema di entità

    • Entitypool - un pool di entità
    • EntityAttributes - Attributi di un'entità (questo sarà accessibile solo alle classi componenti e di sistema)
    • Scena* - Un riferimento a una scena (vedi sotto)
  • Scena - lega tutti i manager insieme

    • ComponentManager
    • Gestore di sistema
    • EntityManager

Stavo pensando di mettere tutto il contenitore/piscine nella classe stessa.

cioè

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 avrei molti oggetti e metodi dichiarati all'interno della mia classe di scena.

APPUNTI:

  1. Un sistema di entità è semplicemente un design utilizzato per i giochi. È composto da 3 parti principali: componenti, entità e sistemi. I componenti sono semplicemente dati, che possono essere "aggiunti" alle entità, affinché le entità siano distintive. Un'entità è rappresentata da un numero intero. I sistemi contengono la logica per un'entità, con componenti specifici.
  2. 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 la sensazione/flusso.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top