I’m working on a story-driven game in Unreal Engine 5.
The player progresses through a sequence of events: triggering story events, talking to characters, and moving to the next phase. Each in-game day, NPCs or objects may change position or appear/disappear depending on what happened previously.
I’m currently unsure about the best way to manage changes between days or story progress.
Here are the two approaches I’m considering:
1. Duplicate the entire level for each day
(e.g., Day1_Map, Day2_Map, Day3_Map), changing NPC placement and objects per level and loading them accordingly.
2. Use a single shared level, and dynamically control the visibility/spawn of NPCs and objects based on game state (e.g., using a QuestManager, GameInstance, or day tracker).
Which method is more manageable and scalable, especially when it comes to bug fixing, save/load systems, and iteration during development?
I’m trying to handle situations like:
- NPCs appearing or moving based on the current day
- Objects or events only happening once, or only on certain days
- Conversations changing depending on story flags
- “Sleep to next day” function that updates the scene dynamically
Is there a best practice for this kind of story + day progression system in UE5?
Any advice or resources would be greatly appreciated!