Moje pytanie brzmi:
Jak przechowywać globalne dane kontekstowe, tj. informacje o danych na świecie, aktualny czas na świecie itp. w systemie elementów encji?
Myślę o pracy nad stworzeniem otwartej gry symulacyjnej Dwarf Fortress w C ++. Stworzyłem silnik gry w stylu komponentu bytu dla zabawy i obecnie próbuję dowiedzieć się, jak zamierzam działać we wszystkich wymaganych funkcjach. Oprócz standardowej rozgrywki (rendering, fizyka, dane komponentów specyficzne dla bytu, itp.) Chciałbym również mieć pewne globalne dane kontekstowe, do których miałyby dostęp wszystkie odpowiednie systemy (tj. Dane światowe, takie jak rok, w którym są obecnie , czy ma miejsce globalne ocieplenie, Wszelkie rzeczy, które byłyby istotne dla symulacji świata). Początkowo myślałem o stworzeniu komponentu „światowego”, ale wydaje się to bezcelowe i trudne, jeśli wiele różnych systemów potrzebuje dostępu do tych logicznie „globalnych” danych.
Czy sensowne byłoby posiadanie komponentu „światowego”, czy też powinienem przechowywać te dane w inny sposób?
Zastanawiałem się także nad tym, aby te dane były globalne, a tym samym umożliwiałyby dostęp do systemów, które chciałyby z nich korzystać; wydaje się, że jest to naruszenie zasad składowych bytu w ogóle i być może bałagan z innych powodów, ale pomyślałem, że to może naprawdę zadziałać.
Inną rzeczą, o której myślałem, byłoby osadzenie odpowiednich danych kontekstu światowego bezpośrednio w samych systemach. Na przykład, gdybym miał AgeSystem
„starzejące się” wszystkie byty, które mają getsWeakerAsTimePasses
składnik lub coś w tym stylu, to może ten system mógłby przechowywać odpowiednie dane dotyczące czasu dla świata bezpośrednio jako dane członka, których użyłby do obliczenia upływu czasu i ile starzeć się i osłabiać ludzi itp. Trzecia opcja była moją najmniej ulubioną, ale coś, co przyszło mi do głowy podczas burzy mózgów.
Czy ktoś może doradzić?