Subsystems: Services and events (Blueprint) โ
What/Why: Centralize cross-cutting logic in Subsystems with clean APIs and events.
Prereqs
- Understand GameInstanceSubsystem vs WorldSubsystem lifecycles
Steps
- Choose scope
- Global service (saves, audio, telemetry) โ GameInstanceSubsystem
- Per-level (encounters, time of day) โ WorldSubsystem
- API and events
- Expose functions (Request*, Get*) and dispatchers (On*)
- Avoid hard refs to heavy assets; use soft refs
- Access
Get Game Instance SubsystemorGet World Subsystemfrom BP
- Examples
- SaveService queues saves (see page)
- TimeOfDay updates sky via curve and tick at low rate (or timer)
Data
- DataAssets configure rates, paths, and soft references
Networking
- Subsystems donโt replicate; replicate data on actors/components instead
Performance
- Avoid doing work every frame; use timers or events
Testing
- Unit-like BP tests that call API and observe events
Suggested prompts โ
- โCreate a
BP_TimeOfDaySubsystemwith a curve and timer updating sky light.โ - โDesign a clean API for
AudioServicewith play/stop and category volumes.โ - โShow safe access patterns to subsystems from Pawns/Widgets.โ
Prompts for this example
- โWrite nodes to get
BP_SaveServicefrom any Blueprint and callRequestSave(ProfileId).โ