Rolly Docs

See what an actor saves while you play

The Gameplay Debugger category RollySave shows, for the actor you look at, whether it saves, which rules apply, what the last load did with it, what its record holds and what saves would keep of its instances, broken pieces and PCG components; without an actor, the game's last save and load, what waits and the world's saved instances.

Sheet
44 of 64
Rev
1.0.0
Updated
On this sheet
Figure 1. The RollySave category for BP_Chest_1: its save ID, settings, rule, last load, record size and first values.

Turn on the RollySave category

The category is registered off, so it costs nothing until you want it.

  1. Play, then press the Gameplay Debugger key (the apostrophe by default) to open the debugger.
  2. Toggle RollySave with the number key the debugger’s category list shows beside it.
  3. Look at an actor, or pick one with the debugger’s own controls, to see its lines.

To have it on at every start, set it in Project Settings > Engine > Gameplay Debugger > Categories > RollySave > Active in Game. The category collects every half second on the server or the standalone game and replicates its lines to the client that shows them.

Read its lines

With an actor:

Line Says
Save ID the actor’s save ID, or “Not saved:” and why
Level for an actor outside the persistent level: its level and kind, and where a spawned one respawns: in this level, in the cell at its place, or with its owner
Saving, Transform, Keep Destroyed, Apply what Actor Defaults, the Save Rules and the actor’s Rolly Save component resolve to
Rules the Save Rules that apply, in applying order with their Priority; four, then how many more
Last load restored from which slot and when, removed because the save holds it as destroyed, not in the last load, or no load yet
Record the size, sections and values of its record in the loaded game, or none
values the record’s first 16 top-level values; the Save Inspector shows the rest
Instances the actor’s Instances Mode and how many of its instanced components are tracked, or “not saved” and how many it has
a component per tracked component, up to 4, then how many more: its kind (static, skinned, foliage or PCG output), its instances, and the removed, changed and added instances a save would hold now; the last load’s changes that matched no instance, kept for the next save; and when its first removed instance regrows
Destruction per geometry collection, up to 2: its pieces broken off, in groups and removed, and whether the last load restored them, or whole; “not saved” under Destruction Off
PCG per PCG component, up to 2: its seed, how many values a save would hold, and whether Rolly Save had it generate again after the last load that set its values
Physics for a root that simulates physics: Asleep or Awake, and “sleep not saved” with Save Physics Sleep off
Level instance for a level instance that loads a level while playing: Loaded, Unloaded or Loading with its level, “changed from” the level it had when Rolly Save met it, or “state not saved”
Handler per attached engine state handler, up to 6, then how many more: restored at the last load, waits for what (its Begin Play, its AI controller, its blackboard, its StateTree to run, Apply Saved Values), not in the last load, or nothing to save; under it up to 2 lines of what its engine system shows now, such as a timeline’s position or a StateTree’s states; for Gameplay Abilities, per component, the attributes, abilities, effects and loose tags the last load set, or before a load those a save would take
Waiting what the actor’s record waits for before it applies, such as its component or Apply Saved Values
Issue up to 8 issues the last load reported
Held for a held pawn or its controller: how long it has been held and what the hold waits for

Without an actor: the last save and load with slot, status and time (and “from the backup” when the newest copy was damaged, the frames a spread save’s capture took when more than one), the loaded game’s records and size, the remembered levels, the saves and loads queued, how many records wait and for what, whether the world is ready, with how many players are held and how many values are left to set, each held player with what it waits for (8, then how many more), and how many streamed levels are visible, unloaded with saved state, waiting for assets and not saved. Then, each only when it counts something: the tracked instanced components with their instances, the memory their design copies hold and the removed, changed and added instances saves would hold, with the unmatched changes kept; how many removed instances are timed to regrow and when the first does, of game time on the Game Clock; the collections whose pieces lie as the last load restored them; the PCG components with values to save, those generated again after a load and the output components that hold changes; the engine state handlers the last load restored and those that wait, for Begin Play, for AI and When Asked; the levels loaded with Load Level Instance saved for this map, those the last load loaded again and those it could not; the level instances the last load unloaded and those whose saved contents it dropped; the parameter collections saved for this map; and the sounds whose positions the Audio handler follows, with how many the engine reports. Counting reads every tracked instance twice a second while the category shows, so expect a slower frame in worlds of millions of instances. On a client the world is always ready and nobody is held: the server holds. Times are this machine’s local time; values are cut at 64 characters; past 48 lines one line counts the rest.

Figure 2. The foliage actor InstancedFoliageActor_Forest: its Changes mode, SM_Pine with 120 felled, 3 changed and 2 planted pines and when the first regrows, untouched SM_Bush, then the game's tracked instances and regrowth.

With several players

The category shows the lines of the player whose debugger is open, for that player’s debug actor. In a listen server game the server’s player sees the server’s state; a client sees the lines the server collected for it, since saves happen on the server.

In packaged test builds

By default the engine builds the Gameplay Debugger into Debug, DebugGame and Development builds only: a Test build has it when its target sets bUseGameplayDebugger = true in its Target.cs. The RollySave category never exists in Shipping, even with that set. The snapshot behind it, URollySaveSubsystem::MakeDebugSnapshot, exists in every build but Shipping, Test included, so your own debug tools can read it there.