Ich entwerfe gerade mein Entity System für C ++ neu und habe viele Manager. In meinem Design habe ich diese Klassen, um meine Bibliothek zusammenzubinden. Ich habe viele schlechte Dinge gehört, wenn es um "Manager" -Klassen geht. Vielleicht benenne ich meine Klassen nicht richtig. Ich habe jedoch keine Ahnung, wie ich sie sonst benennen soll.
Die meisten Manager in meiner Bibliothek setzen sich aus den folgenden Klassen zusammen (die allerdings ein wenig variieren):
- Container - Ein Container für Objekte im Manager
- Attribute - Attribute für die Objekte im Manager
In meinem neuen Design für meine Bibliothek habe ich diese spezifischen Klassen, um meine Bibliothek zusammenzubinden.
ComponentManager - verwaltet Komponenten im Entity System
- ComponentContainer
- ComponentAttributes
- Szene * - ein Verweis auf eine Szene (siehe unten)
SystemManager - verwaltet Systeme im Entitätssystem
- SystemContainer
- Szene * - ein Verweis auf eine Szene (siehe unten)
EntityManager - verwaltet Entitäten im Entitätssystem
- EntityPool - ein Pool von Entitäten
- EntityAttributes - Attribute einer Entität (nur für ComponentContainer- und System-Klassen verfügbar)
- Szene * - ein Verweis auf eine Szene (siehe unten)
Szene - bindet alle Manager zusammen
- ComponentManager
- Systemmanager
- EntityManager
Ich dachte nur daran, alle Container / Pools in die Scene-Klasse selbst zu setzen.
dh
An Stelle von:
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();
Es wäre dies:
Scene scene; // create a Scene
Entity entity = scene.getEntityPool().create();
Aber ich bin mir nicht sicher. Wenn ich Letzteres machen würde, würde das bedeuten, dass ich viele Objekte und Methoden in meiner Scene-Klasse deklariert hätte.
ANMERKUNGEN:
- Ein Entitätssystem ist einfach ein Design, das für Spiele verwendet wird. Es besteht aus drei Hauptteilen: Komponenten, Entitäten und Systemen. Die Komponenten sind einfach Daten, die den Entitäten "hinzugefügt" werden können, damit die Entitäten unterscheidbar sind. Eine Entität wird durch eine ganze Zahl dargestellt. Systeme enthalten die Logik für eine Entität mit bestimmten Komponenten.
- Der Grund, warum ich mein Design für meine Bibliothek ändere, ist, dass ich denke, dass es ziemlich viel geändert werden kann. Ich mag das Gefühl / Fließen momentan nicht.