Meine Frage lautet:
Wie würde man globale Kontextdaten speichern, dh. Weltdateninformationen, aktuelle Weltzeit usw. in einem Entitätskomponentensystem?
Ich denke daran, ein offenes Weltsimulationsspiel im Stil einer Zwergenfestung in C ++ zu entwickeln. Ich habe nur zum Spaß eine Spiel-Engine im Stil von Entity-Komponenten erstellt und versuche derzeit herauszufinden, wie ich mit allen gewünschten Funktionen arbeiten werde. Zusätzlich zum Standardspiel (Rendering, Physik, entitätsspezifische Komponentendaten usw.) möchte ich auch einige globale Kontextdaten haben, auf die alle relevanten Systeme Zugriff haben (dh die Weltdaten wie das aktuelle Jahr) , ob es zu einer globalen Erwärmung kommt, alles, was für die Simulation einer Welt relevant wäre). Ich hatte ursprünglich daran gedacht, eine "Welt" -Komponente zu erstellen, aber dies scheint sinnlos und schwierig zu sein, wenn viele verschiedene Systeme Zugriff auf diese logisch "globalen" Daten benötigen.
Wäre es sinnvoll, eine "Welt" -Komponente zu haben, oder sollte ich diese Daten auf andere Weise speichern?
Ich hatte auch darüber nachgedacht, diese Daten einfach global zu machen und so Zugriff auf alle Systeme zu gewähren, die sie verwenden möchten. Es scheint eine Verletzung der Prinzipien von Entitätskomponenten im Allgemeinen zu sein und aus anderen Gründen vielleicht chaotisch, aber ich dachte, dass es wirklich funktionieren könnte.
Das andere, woran ich gedacht hatte, wäre, relevante Weltkontextdaten direkt in die Systeme selbst einzubetten. Wenn ich beispielsweise AgeSystem
alle Entitäten "gealtert" hätte, die eine getsWeakerAsTimePasses
Komponente oder so weiter haben, könnte dieses System möglicherweise relevante Zeitdaten für die Welt direkt als Mitgliedsdaten speichern, die es zur Berechnung des Zeitablaufs und der Höhe verwenden würde Menschen altern und schwächen usw. Diese dritte Option war meine am wenigsten bevorzugte, aber etwas, das mir beim Brainstorming eingefallen war.
Kann mir jemand raten?