Save/Load Service: Blueprint architecture โ
What/Why: Reliable saves without tangling logic; centralize in a GameInstanceSubsystem with async throttling.
Prereqs
- Project Settings โ enable
SaveGameusage
Steps
- Create
BP_SaveService(GameInstanceSubsystem)
- Events:
RequestSave(ProfileId),RequestLoad(ProfileId),OnSaved,OnLoaded - Internals: queue requests; Timer to process one at a time (avoid spikes)
- Define SaveGame classes (BP)
SG_PlayerProfile: progression, optionsSG_WorldState: level streaming state, global flags
- Callers
- On level transition or checkpoint, call
RequestSave - On startup, call
RequestLoadโ broadcast loaded data
- Versioning
- Use a
SaveVersionint; if mismatch, run migration or defaults
Data
- Keep references as IDs; resolve to data assets at runtime
Networking
- Server-authoritative saves; clients request via RPC if needed
Performance
- Compress large blobs only off the game thread (async blueprint nodes)
Testing
- โDirty flagโ changes trigger a queued save
- Quit/restart โ state restored properly
Suggested prompts โ
- โUE 5.6 Blueprints only. Create
BP_SaveService(GameInstanceSubsystem) with queuedRequestSave/RequestLoad. Show events and timers to throttle saves.โ - โHow do I version SaveGame data with a
SaveVersionint and migrate safely?โ - โOutline a test plan to validate save requests, throttle behavior, and load-on-startup.โ
- โList pitfalls for save spikes and how to avoid blocking the game thread.โ
Prompts for this example
- โProvide Blueprint nodes to enqueue a save on checkpoint and emit
OnSavedwhen complete.โ - โShow how to load
SG_PlayerProfileon startup and broadcast the data to interested systems.โ