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
- 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.
- 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) {});