I am working on an FPS project and am looking for some guidance with setting up a standard objective system + the best way to store and reference that data.
I am currently working out of the Game Mode as a place to store all of the necessary data and have a test interface from an overlap volume to start new objectives. The interface is updating a struct in the Game Mode where I am storing text/an enum/and a ‘is completed?’ boolean. The UMG is updated based on this data. Should I be storing/incrementing this objective data differently? KVP/Map? Is it bad to use a volume with an interface for starting 1 objective now but later want to start or complete one based on another action? (on all enemies dead/player interacted with actor)
I also don’t know what the best approach is for keeping the chain of events clean and easily adjustable. It feels messy to have different conditions send an event back to the game mode to update the data. Is this where I would use an Event Dispatcher?
The functionality I am going for:
-Player reaches a new area/enters a volume/perfoms some action = trigger new ‘current objective’ -UMG is updated with appropriate text/marked enemy actor(s) or location to reach
-Player completes the objective by dealing with the enemies/interacts on actor(s)/reaches location -UMG is updated (Objective Complete!) objective data in game mode is updated and a new ‘current objective’ is triggered
- New actors/location marked in the world…rinse and repeat.