CrimsonSaveSystem · Lesson 6 of 8

Persist World Actors

Beginner4 minRuntime

Before you start

  • Completed: Save & Load
Video coming soon

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.

A door Blueprint implementing ICrimsonSaveableActor — that's the entire opt-in.

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.
ShouldRespawnAfterDestroyed — opt a placed actor back into respawning on load.
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.