Skip to content

FAQ & Troubleshooting

BavGames edited this page Jul 13, 2026 · 3 revisions

"My actor is not being saved"

  1. Does it have a Saveable Component?
  2. Are the variables ticked Save Game?
  3. Turn on Verbose Logging (Project Settings > Debug) and search the Output Log for captured - your actor's name should appear during a save.

"Loading duplicates my actors" / "old saves match nothing"

Renaming a level-placed actor changes its save identity: the old record no longer matches, the actor is treated as missing and (with Respawn Missing Level Actors on) respawned next to the renamed one. Delete old saves after renaming actors, or avoid renaming shipped actors.

"The colors/text I set in On Loaded do not show on clients"

They do - On Loaded fires on clients too. If you see defaults, check the client log for the lines in Step 09. Most often the PIE Net Mode is Play Standalone, which has no networking at all.

"My player data is missing after quitting"

It should not be: a departing player is snapshotted at logout and written to the active slot (see Step 06). If data still goes missing, check that Save Players and Save Players On Logout are on, and that the session had an active slot (at least one save or load had happened - before that, the snapshot lives in memory and is written with the first save).

"How do I save PlayerController (or PlayerState) variables?"

Just mark them Save Game - they are captured and restored automatically, keyed by the player id. Do not add a Saveable Component to the PlayerController or PlayerState. They are not world actors, so the world save would try to reconcile them by position and could pull the pawn to a stale spot. The Saveable Component belongs on the pawn and on ordinary world actors.

"My player teleports to its last position on its own (Restore Into Current Pawn)"

Under Restore Into Current Pawn, position is yours to apply - the automatic load restores only the pawn's SaveGame data, never its transform. If the pawn moves back to its saved spot without you calling Restore Player Pawn, the pawn is being captured by the world save, not the player save. That happens when the pawn is a world-saved actor - most often a pawn you dragged into the level (Auto Possess Player). Let the GameMode spawn the pawn at a PlayerStart, and apply the saved position yourself with Restore Player Pawn or Get Saved Player Transform (see Step 06).

"Saving on map change / quit"

GameMode End Play -> Save Game and Begin Play -> Load Game is the supported pattern: the system snapshots the world at the start of the shutdown (before actors are torn down) and an End Play save writes that snapshot. Controlled by the Capture World On Teardown setting - see Step 07.

"What if the server (or game) crashes?"

A crash cannot corrupt a slot: every write goes to a temp file first, is CRC-verified, and only then swapped into place - a crash mid-save leaves the previous file untouched. You lose at most the progress since the last completed save, so on servers run autosave at a short interval and keep Keep Backup File on as a second safety net.

"A save file got corrupted"

Nothing to do - writes are atomic and a .bak of the previous save is kept (Keep Backup File setting). A corrupt file fails CRC and the load recovers from the backup automatically; the result struct reports Recovered From Backup = true.

"I updated my game and old saves broke"

Adding or removing variables never breaks saves (serialization is name-based). Class renames and removals need a migration step - a full walkthrough with the built-in Class Remap and Drop Class steps is in Step 11: Save Versions & Migration.

"Where are the save files?"

YourProject/Saved/SaveGames/ (packaged: the project's Saved folder), unless you set Default Save Directory. A slot is one .sav file plus sidecars: .players (player records), .global (persistent/custom objects), and optionally .bak backups.

"Does it support World Partition?"

Yes. WP runtime cells are keyed to the owning map, so actor identity survives grid/layout changes. Save keeps the records of actors sitting in unloaded cells (carry-over); load defers them until their cell streams in, then applies state (including tombstones) to just that cell. Nothing to configure - a load auto-mounts the slot for cell streaming.

"Does it support PCG?"

Yes, by seed. PCG content is procedural, so the system saves each PCG component's Seed (actor needs a Saveable Component) and on load a differing seed is applied and the content regenerates deterministically. Individual changes to generated actors are not tracked - treat the seed as the source of truth. Toggle: Save PCG Component Seeds. Works without the PCG plugin installed (it simply no-ops).

"What is the .players file? Do I need Restore Player Pawn?"

slot.players holds per-player records keyed by a stable player id: PlayerState/Controller SaveGame variables and the player's per-map position - so a fresh GameMode pawn can be filled after travel or on rejoin (multiplayer). If your pawn itself carries a Saveable Component, the world domain (.sav) already restores its position and variables - then you do NOT need Restore Player Pawn for position; it exists for the session model (no marker on the pawn) and for multiplayer rejoin.

"How big can a save get?"

The streaming path is built for millions of records: chunked files, one sub-chunk resident at a time, a per-frame time budget and a memory ceiling. See Step 07 and tune the three Performance settings.

"Is the save file encrypted?"

Obfuscate Files adds light tamper deterrence, not real security. For a competitive game, treat client-side saves as untrusted regardless of encryption - that is why multiplayer saving is server-only.

Reading the logs

Everything logs under LogUSS. The two most useful lines:

Save 'Slot': wrote N record(s) ...
Restore: N in place, N respawned, N tombstoned, N skipped, N removed (X ms)

Turn on Verbose Logging for per-actor detail. When asking for support, paste the lines around the first Warning: - the startup line includes the plugin version.

Clone this wiki locally