CrimsonSaveSystem · Lesson 6 of 8
Persist World Actors
Before you start
- Completed: Save & Load
Chapters
1. Implement ICrimsonSaveableActor
For level actors the interface is the whole opt-in: implement `ICrimsonSaveableActor` and you're done — no registration. The world subsystem scans loaded levels on save (bAutoCaptureActorsOnSave, on by default) and captures every implementer.
2. What gets captured
Every SaveGame property on the actor and its components, plus transform, hidden flag, and physics velocities — they cascade in automatically. Placed actors are identified by their engine ActorGuid; runtime-spawned actors get a session GUID and their class recorded, so a load respawns them.
Destroyed stays destroyed
A placed actor you
Destroy() stays gone after a load — unless its ShouldRespawnAfterDestroyed override returns true.Verify
Open a door, drop a spawned pickup,
RequestSaveProgress, restart the map, RequestLoadFromSlot — the door is open and the pickup is back where it fell. Cross-actor references marked SaveGame re-resolve in a deferred pass after all actors restore.