Best way to manage story progression and day-based events in UE5?

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!