save kit
19 tools. Generated from the plugin source; do not edit by hand.
Guide
Start by inspecting the concrete SaveGame class: save.inspect_class {class} lists default
values and whether every reflected property actually has the SaveGame flag. save.write creates
a slot from that class and only accepts values for writable SaveGame properties. save.read,
save.get_property, and save.validate always load through the platform save system and return a
clear missing/corrupt result instead of treating a file as valid.
Use save.set_property for a focused existing-slot change; save.reset_property restores the
class default. save.reset_slot writes a complete class-default slot. save.copy_slot preserves
the serialized object class, while save.migrate copies only same-name, same-type SaveGame fields
into a chosen new class and returns skipped-field reasons. Compare before deleting or replacing a
slot with save.compare and use save.validate_many for a bounded batch audit.
Raw save.read_bytes / save.write_bytes are recovery tools, not a format editor. The write is
Risk 4 because invalid bytes can make a slot unloadable. Unreal exposes no cross-platform public
slot listing or header reader, so this kit does not invent either.
Creating a schema: save.create_save_game_class {folder, name, variables:[{key:"Score",value:"int"}]}
creates and compiles a SaveGame Blueprint whose variables all carry the SaveGame flag (types: bool,
int, int64, float, string, name, text, vector, rotator, transform). Pass its path as class to
save.write. Values use Unreal text syntax (42, Smoke, (X=1,Y=2,Z=3)).
In the editor, slots are files under <Project>/Saved/SaveGames/<slot>.sav. save.delete removes
one; save.delete_many {slots:[...]} removes several and reports missing ones instead of failing.
Tools
Legend. risk 0 = read-only, 1 = harmless editor op, 2 = modifies asset, 3 = deletes/replaces asset, 4 = project/config/build op, 5 = potentially destructive (calls above
MaxAutoRiskneed"_confirm": true). mutates = runs in a transaction (edit.undo reverts). requires PIE / requires world = refused without a PIE session / an open level. requires plugin = unavailable while the plugin is disabled. dryRun = honours thedryRunargument. smoke = covered byedit.self_test.
save.compare (risk 1, smoke)
No description.
| Argument | Type | Description |
|---|---|---|
firstSlot | string | required. First plain slot name. |
secondSlot | string | required. Second plain slot name. |
userIndex | integer | Platform user index used for both slots. Default 0. |
Returns: equal, different, firstOnly, secondOnly.
save.copy_slot (risk 3, mutates, smoke)
No description.
| Argument | Type | Description |
|---|---|---|
destinationSlot | string | required. Destination plain slot name. |
destinationUserIndex | integer | Destination platform user index; -1 keeps userIndex. Default -1. |
Returns: slot, userIndex, exists, valid, class, byteCount, properties, problems.
save.create_save_game_class (risk 2, mutates, smoke)
Creates a SaveGame Blueprint asset with typed variables, all flagged SaveGame, and compiles it; returns its schema.
| Argument | Type | Description |
|---|---|---|
folder | string | required. Content folder of the new SaveGame Blueprint, e.g. /Game/Save. |
name | string | required. Asset name, e.g. BP_PlayerSave. |
variables | array of UeaKeyValue | Variables to add: key = variable name, value = type (bool, int, int64, float, string, name, text, vector, rotator, transform). Every variable is flagged SaveGame. |
Returns: class, properties, saveGamePropertyCount.
save.delete (risk 3, mutates, destructive, smoke)
No description.
| Argument | Type | Description |
|---|---|---|
slot | string | required. Plain slot name; separators are rejected. |
userIndex | integer | Platform user index. Default 0. |
Returns: slot, userIndex, exists, valid, class, byteCount, properties, problems.
save.delete_many (risk 3, mutates, destructive, smoke)
Deletes several save slots (files under Saved/SaveGames in editor builds); missing slots are reported, not failed.
| Argument | Type | Description |
|---|---|---|
slots | array of string | required. Plain slot names to validate. |
userIndex | integer | Platform user index. Default 0. |
Returns: results, validCount, invalidCount.
save.get_property (risk 1, smoke)
No description.
| Argument | Type | Description |
|---|---|---|
property | string | required. Authored SaveGame property name. |
Returns: slot, userIndex, exists, valid, class, byteCount, properties, problems.
save.inspect_class (risk 0, smoke)
No description.
| Argument | Type | Description |
|---|---|---|
class | string | required. SaveGame class name or path. |
Returns: class, properties, saveGamePropertyCount.
save.list_properties (risk 0, smoke)
No description.
| Argument | Type | Description |
|---|---|---|
class | string | required. SaveGame class name or path. |
Returns: class, properties, saveGamePropertyCount.
save.migrate (risk 3, mutates, smoke)
No description.
| Argument | Type | Description |
|---|---|---|
destinationSlot | string | required. Destination slot. |
destinationClass | string | required. Destination class. Matching SaveGame properties are copied by name and compatible type. |
destinationUserIndex | integer | Destination platform user index; -1 keeps userIndex. Default -1. |
failIfDestinationExists | boolean | Refuse to replace the destination slot. Default false. |
Returns: slot, userIndex, exists, valid, class, byteCount, properties, problems.
save.read (risk 1, smoke)
No description.
| Argument | Type | Description |
|---|---|---|
propertyContains | string | Return only properties whose names contain this text. |
Returns: slot, userIndex, exists, valid, class, byteCount, properties, problems.
save.read_bytes (risk 2, smoke)
No description.
| Argument | Type | Description |
|---|---|---|
slot | string | required. Plain slot name; separators are rejected. |
userIndex | integer | Platform user index. Default 0. |
Returns: slot, userIndex, byteCount, base64.
save.reset_property (risk 3, mutates, smoke)
No description.
| Argument | Type | Description |
|---|---|---|
property | string | required. Authored SaveGame property name. |
Returns: slot, userIndex, exists, valid, class, byteCount, properties, problems.
save.reset_slot (risk 3, mutates, smoke)
No description.
| Argument | Type | Description |
|---|---|---|
class | string | required. Concrete SaveGame class whose defaults replace this slot. |
failIfExists | boolean | Refuse to replace an existing slot. Default false. |
Returns: slot, userIndex, exists, valid, class, byteCount, properties, problems.
save.set_property (risk 3, mutates, smoke)
No description.
| Argument | Type | Description |
|---|---|---|
value | string | required. New value in the same Unreal text form used by the details panel. |
Returns: slot, userIndex, exists, valid, class, byteCount, properties, problems.
save.slot_exists (risk 0, smoke)
No description.
| Argument | Type | Description |
|---|---|---|
slot | string | required. Plain slot name; separators are rejected. |
userIndex | integer | Platform user index. Default 0. |
Returns: slot, userIndex, exists, valid, class, byteCount, properties, problems.
save.validate (risk 1, smoke)
No description.
| Argument | Type | Description |
|---|---|---|
slot | string | required. Plain slot name; separators are rejected. |
userIndex | integer | Platform user index. Default 0. |
Returns: slot, userIndex, exists, valid, class, byteCount, properties, problems.
save.validate_many (risk 1, smoke)
No description.
| Argument | Type | Description |
|---|---|---|
slots | array of string | required. Plain slot names to validate. |
userIndex | integer | Platform user index. Default 0. |
Returns: results, validCount, invalidCount.
save.write (risk 3, mutates, smoke)
No description.
| Argument | Type | Description |
|---|---|---|
class | string | required. SaveGame class name or path. |
values | array of UeaKeyValue | SaveGame property -> Unreal text value. |
failIfExists | boolean | Reject a slot that already exists. Default false. |
Returns: slot, userIndex, exists, valid, class, byteCount, properties, problems.
save.write_bytes (risk 4, mutates, smoke)
No description.
| Argument | Type | Description |
|---|---|---|
base64 | string | required. Base64 raw save-system bytes. This bypasses SaveGame deserialization. |
Returns: slot, userIndex, byteCount, base64.