-
Notifications
You must be signed in to change notification settings - Fork 0
Step 04: Functions
Every Blueprint node. All of them live in the "Ultimate Save System" category and work from any Blueprint - no casting, no subsystem boilerplate.
| Node | What it does |
|---|---|
| Save Game (SlotName) | Save the world into a slot, synchronously. Returns a result struct. |
| Load Game (SlotName) | Load a slot into the world, synchronously. Returns a result struct. |
| Save Game (Async) | Latent node with Completed / Failed exec pins - captures on the game thread, writes on a background thread. |
| Load Game (Async) | Latent node with Completed / Failed exec pins - reads on a background thread, restores on the game thread. |
| Save To Slot Streaming / Load From Slot Streaming | On the Save Subsystem (Get Save Subsystem first). Time-sliced for very large worlds. See Step 07. |
| Mount Slot For Level Streaming / Unmount Level Streaming | On the Save Subsystem. Newly shown sub-levels lazily restore from the mounted slot. |
The result struct contains Success, Error text and Recovered From Backup.
| Node | What it does |
|---|---|
| Does Save Exist | True if the slot file exists. |
| Delete Save | Delete a slot (and its sidecar files). |
| Get All Save Slots | List every slot name - build your save/load menu from this. |
| Get Save Slot Meta | Timestamp, level name, playtime and custom key/value metadata for one slot. |
| Duplicate Save | Copy a slot to a new name. |
| Rename Save | Rename a slot. |
Save-slot screenshots for your load menu. Capture just before saving; the thumbnail is embedded in the slot's .sav.
| Node | What it does |
|---|---|
| Capture Save Thumbnail (Max Width) | Grab the current viewport as the thumbnail for the next save. Call it right before Save Game. Max Width downsizes it (0 = full res). |
| Set Save Thumbnail From Render Target (RT, Max Width) | Use a Render Target instead (custom framing). |
| Get Save Thumbnail (Slot, Map Name) | Read a slot's saved thumbnail as a Texture2D for your load menu. A slot keeps one thumbnail per map - pass Map Name for that map's shot, empty for the most recent. Null if none. |
| Clear Pending Thumbnail / Has Pending Thumbnail | Drop / query the queued thumbnail (Save Subsystem). |
Typical flow: Capture Save Thumbnail -> Save Game; in the load menu, Get Save Thumbnail -> set it on an Image. A captured shot is consumed by ONE save (autosaves in between never inherit it) - capture again before each save.
| Node | What it does |
|---|---|
| Is Save Or Load Busy | True while a save/load is in flight - disable your UI buttons with this. |
| Push Save Blocker (Reason) | Refuse all saves until popped (cutscene, boss fight). |
| Pop Save Blocker (Reason) | Remove a blocker. Reasons stack - push/pop must match. |
| Is Save Blocked | True while any blocker is active. |
| Node | What it does |
|---|---|
| Autosave Now (bSynchronous) | Trigger an autosave immediately. Set Synchronous = true when calling from End Play / quit. |
| Restore Last Autosave | Load the newest autosave. False if none exists. |
| Get Latest Autosave Slot | Name of the newest autosave slot. |
| Start Autosave / Stop Autosave | Override the project setting at runtime. |
| Checkpoint | Save into the next checkpoint ring slot; returns the slot name. |
| Restore Last Checkpoint | Load the newest checkpoint. |
| Node | What it does |
|---|---|
| Register Persistent Object (Key, Object) | Save this object's SaveGame vars in EVERY slot (profile, settings). |
| Register Custom Object (Key, Object) | Save this object's SaveGame vars inside the CURRENT slot (quest log, world flags). |
| Unregister Persistent/Custom Object | Stop saving it. |
| Node | What it does |
|---|---|
| Has Save Authority | True on the server (or standalone). Gate your save UI with this. |
| Restore Player Pawn | Restore Into Current Pawn policy: one call that both restores the player's saved data AND teleports the pawn to its saved position. No camera. Returns true if a record was found. Call when the pawn is ready (pawn Begin Play). |
| Get Saved Player Transform | Restore Into Current Pawn policy: returns ONLY the saved position for the current level (out Transform + bool) - it applies nothing, you teleport it yourself (Set Actor Location / Set Actor Transform). The pawn's SaveGame data is already restored by the load, so this pairs with a manual teleport. |
Both position nodes are synchronous - there is no async version and none is needed. They return instantly: if the async Load Game has not finished yet, they read the player's saved position straight from the (tiny) save file, so they work from the pawn's Begin Play with no Delay and no On Load Completed binding. Restore Player Pawn is the all-in-one shortcut; Get Saved Player Transform is the read-only option when you want to drive the teleport. In multiplayer, call either on the server - movement replication carries the pawn to clients. | Find Player Pawn | Persistent World Pawn policy: find the world body that belongs to a player. | | Possess Saved Player Pawn | Persistent World Pawn policy: find the body and possess it, removing the fresh GameMode pawn. | | Save Player Record | On the Save Subsystem: snapshot ONE player's state right now, without a world save. Runs automatically at every logout - call it yourself only for extra moments (big trade, level-up). |
Bind these on the Save Subsystem (get it with Get Save Subsystem):
- On Save Started / On Save Completed / On Save Failed
- On Load Started / On Load Completed / On Load Failed
Use On Load Failed to show an error popup - errors never disappear silently, but an unconnected Failed pin cannot warn your player.
Next: Step 05: Project Settings