Hallo zusammen!
Seit einiger Zeit arbeite ich versuchsweise mit Artemis (einem Entity System Framework (ESF)).
Ich verwende dabei folgenden C++ Port (
Link).
Die grundsätzliche Idee eines solchen ESF birgt meiner Meinung nach einige Vorteile.
Komponenten beinhalten nur Daten, die Systeme kombinieren gewünschte Komponenten und machen die Logic aus.
Den einzelnen Spielobjekten werden entsprechend Komponenten beigefügt. Das ganze ist extrem flexibel und nach einiger
Zeit auch recht überschaubar.
Ich habe mittlerweile hinbekommen, dass Objekte in einem gewünschten Level über den MapEditor Tiled geladen werden.
Die Frage stellt sich mir nun, wie behandle ich meine TileMap?
Ein erster Versuch scheint wie folgt zu funktionieren, doch ich habe grosse Bedenken wenn es um die Performance geht:
Ich habe wie auch die Objekte jedes einzelne TileMap als Spielobjekt behandelt und entsprechend Komponenten zugeteilt.
Genau gesagt: TileComponent, PositionComponent, TransformComponent und CollisionComponent. Die einzelnen Tiles werden
eben wie gesagt als Spielobjekte behandelt und erhalten einen einzigartigen Tag welcher sie im GroupManager zu einer Einheit
fasst. Wenn es nun um Kollision mit den TileMap geht kann ich einfach alle Objekte welche mit dem entsprechenden Tag behaftet
sind in einen vector verwerfen und diesen dann z.B. mit meinem Spielobjekt für eine Kollision abfragen.
Dies scheint nun zwar zu funktionieren, aber habe ich eine grössere Map mit vielen einzelnen Tiles so geht die CPU Leistung rasch
auf 100% auch wenn das Spiel noch nicht stark zu laggen scheint.
Hat jmd. anderes auch schon mit Artemis bzw. einem anderen ESF gearbeitet und sich dieser Frage gestellt?
Was für andere Lösungsansätze wären denkbar?
Danke schon im voraus für eure Antworten.
Eric