La mia domanda è questa:
Come si archiviano i dati di contesto globale, ad es. informazioni sui dati mondiali, ora mondiale attuale, ecc. in un sistema di componenti di entità?
Sto pensando di lavorare per costruire un gioco di simulazione mondiale aperto in stile Dwarf Fortress in C ++. Ho creato un motore di gioco in stile componente di entità solo per divertimento e attualmente sto cercando di capire come lavorerò con tutte le funzionalità che desidero. Oltre al gioco standard (rendering, fisica, dati dei componenti specifici dell'entità, ecc.), Vorrei anche avere alcuni dati contestuali globali a cui tutti i sistemi pertinenti avrebbero accesso (ovvero, i dati mondiali come l'anno in cui si trova attualmente , indipendentemente dal fatto che stia accadendo il riscaldamento globale, qualsiasi tipo di cosa rilevante per la simulazione di un mondo). Inizialmente avevo pensato di creare un componente "mondiale", ma questo sembra inutile e difficile se molti sistemi diversi hanno bisogno di accedere a questi dati logicamente "globali".
Avrebbe senso avere un componente "world" o dovrei archiviare questi dati in qualche altro modo?
Avevo anche pensato di rendere semplicemente globali questi dati, dando così accesso a tutti i sistemi che avrebbero voluto usarli; sembra una violazione dei principi della componente entità in generale, e forse disordinato per altri motivi, ma ho pensato che potesse davvero funzionare.
L'altra cosa a cui avevo pensato sarebbe stata quella di incorporare i dati rilevanti del contesto mondiale direttamente nei sistemi stessi. Ad esempio, se avessi un AgeSystem
"invecchiato" di tutte le entità che hanno un getsWeakerAsTimePasses
componente o quant'altro, allora forse questo sistema potrebbe archiviare i dati temporali rilevanti per il mondo direttamente come dati membro che userebbe per calcolare il passare del tempo e quanto l'età e l'indebolimento delle persone, ecc. Questa terza opzione era la mia meno preferita, ma qualcosa che mi era venuto in mente durante il brainstorming.
Qualcuno può consigliare?