Rolly Docs

Rename, export and import saves

Rename a slot, write a save to a file a player can send to a friend or to support, import such a file as a new slot, or move saves as bytes through your own cloud or share codes.

Sheet
29 of 64
Rev
1.0.0
Updated
On this sheet

Rename a slot

Rename Rolly Slot moves the save of From Slot Name to To Slot Name: it copies the save, then deletes the source once the copy is written. A crash in between leaves both.

  • It never overwrites: a target that holds a save fails with Slot Exists. Names that differ only in capital letters are one slot, so such a rename fails with Invalid Input.
  • The current slot and an active run follow the rename.
  • A save of either slot asked for while the rename runs lands after it, so a save of the old name is not deleted with it.
  • It works on clients, on that machine’s storage.

Export a save to a file

Export Rolly Slot to File writes the newest valid copy of Slot Name to <File Name>.<Export Extension> in the export folder, through a temporary file, so a crash never leaves half a file. File Name takes 1 to 64 letters, digits, spaces, _ and -, such as Tavern Day 12, without a space at either end and never a name Windows reserves, such as CON or COM1; any other name fails with Invalid Input and the setup message BadFileName.

An export replaces an earlier export of that name, but never a file that is no Rolly Save file: that fails with Name Collision and the setup message ForeignFile.

Files work on Windows, Mac and Linux. Elsewhere the file nodes fail with Invalid Input and the setup message Unsupported; check Can Transfer Save Files to hide them.

In Project Settings > Plugins > Rolly Save > Sharing Saves:

Setting Default Does
Export Location Saved Folder Saved Folder: the game’s Saved folder. Documents Folder: the player’s Documents, in a folder named after the project
Export Folder SaveExports The folder inside it, 1 to 64 letters, digits, spaces, _ and -
Export Extension rollysave 1 to 16 lowercase letters and digits
Max Import Size (MiB) 64 (1 to 2,048) Larger files and byte arrays are refused unread

A setting that breaks its rule falls back to its default, with the setup message BadExportSetting.

Import a file

  1. List Rolly Export Files lists the export folder’s files, newest first, with the map, play time and the rest of a slot list’s metadata; each one’s Slot Name is its file name. It lists the first 1,000 files by name; files that are no Rolly Save file are left out.
  2. Import Rolly Slot from File takes a File Name from that list and a new Slot Name.

An import checks the file before anything reaches storage, cheapest checks first: its size against Max Import Size, unread when larger (Invalid Input); that it holds a slot’s save, not a profile (Invalid Input); its checksums and the structure of every record (Damaged); its Game Data Version (Newer Version); and, for a save of a single-slot run, the first local player’s run ledger (Run Ended, Older Copy, Newer Version), waiting while that profile loads. A missing file is Not Found. It then stores the file as the new slot, with Kind Imported; loading it later runs every check of a load on top.

An import never overwrites: a slot that holds a save fails with Slot Exists, and so does the active run’s slot.

Move saves as bytes

Export Rolly Slot to Bytes gives a slot’s newest save as an array of bytes, and Import Rolly Slot from Bytes stores bytes as a new slot with the checks of a file import. Both work on every platform, for your own cloud storage or a share code; bytes larger than Max Import Size are refused unread.

From C++

Save->RenameSlot(TEXT("Slot 1"), TEXT("Tavern Day 12"));
if (URollySaveSubsystem::CanTransferFiles())
{
	Save->ExportToFile(TEXT("Tavern Day 12"), TEXT("Tavern Day 12"));
	Save->ImportFromFile(TEXT("Tavern Day 12"), TEXT("Imported 1"));
}
Save->ExportToBytes(TEXT("Slot 1"), [](const FRollySaveResult& Result, const TArray<uint8>& Bytes) {});
C++