Open the slot screen
The screen opens in one of three modes: Save, Load and New Game.
- Save Points and Rolly Save Trigger components with Action Automatic or Open Slot Screen open it for the player who uses them (see Place save points, checkpoints and reset areas).
- Request Slot Screen on the Rolly Save Subsystem asks for it from your own code; Rolly Save’s screen answers while Project Settings > Plugins > Rolly Save Screens > Show Slot Screen is on.
- Open Rolly Slot Screen opens it whatever Show Slot Screen says, such as from your pause menu’s Save and Load buttons or your main menu’s Load and New Game.
The screen opens for the player whose controller you give, on that player’s part of the screen. It pauses the game while it shows, except in the Side Drawer layout, and a second request while it is open does nothing. Opening Save outside a map of Menu Maps takes the picture the save will hold before the screen draws over the game; the detail of New Save and of an empty slot shows it. Each player’s Save screen keeps its own picture, so two players saving at once each save their own view.
Blueprint
In your pause menu, connect the Save button to Open Rolly Slot Screen with Player set to Get Owning Player and Mode Save; do the same for Load. Close Rolly Slot Screen closes it with its dialogs, and Is Rolly Slot Screen Open tells whether it shows.
C++
#include "RollySaveUISubsystem.h"
URollySaveUISubsystem* Screens = URollySaveUISubsystem::Get(this);
Screens->OpenSlotScreen(PlayerController, ERollySaveSlotScreenMode::Load);The screens’ module, RollySaveUI, runs on clients and standalone games; a dedicated server has none of it. Add RollySaveUI to your module’s dependencies to call it.
Pick a slot style
Project Settings > Plugins > Rolly Save Screens > Slot Screen > Slot Style:
| Style | Save | Load | New Game |
|---|---|---|---|
| Free Slots | New Save first, then the saves to overwrite; a new save asks for a title | every save | starts at once, without a screen |
| Numbered Slots | Slot 1 to Number of Slots (1 to 99), each empty or holding a save | every save | the numbered slots; the new game saves to the one picked |
| Playthroughs | saves at once to the playthrough’s slot, without a screen | every save; Accept reads Continue | New Playthrough first, then the playthroughs to replace |
| Runs | saves at once to the active run’s slot; New Run otherwise | every save; a run that goes on reads Continue, an ended run is locked | New Run first, then the runs to replace |
Numbered slots are shared by every profile. While each profile sees only its own saves (Slots Shown, below), a slot that holds another profile’s save reads “Another profile’s save” and is unavailable, so no profile replaces another’s save.
Max Slots (0 to 999, 0 for no limit) caps the manual saves, playthroughs or runs a player can have: at the limit, New Save, New Playthrough or New Run says how many there are and is unavailable until one is deleted.
Grouping splits Load into groups: One List, By Kind (Saves, Autosaves, Checkpoints) or By Profile (each named profile, the player’s first, then Other). Groups without saves are left out.
Pick its layout and look
The slot screen lays out in the layout Project Settings > Plugins > Rolly Save Core UI > Layout picks, or the theme’s, with the theme’s colours, type and density (see Choose a layout and Themes). The layout guide is shared by every Rolly product: on the slot screen a category is a group of saves (Grouping, above) and a row is a save.
| Layout | What the slot screen looks like |
|---|---|
| Tabs | the list with row pictures beside a detail panel with the large picture; groups as tabs |
Side Rail (Rail) |
groups in a rail at the left, the list, and the detail at the right |
Centered Panel (Panel) |
a card over the dimmed game with compact chips and a detail strip under the list |
Couch Hub (Hub) |
large type; with groups, a tile per group with its count and newest save, then the group’s page with a picture column |
Side Drawer (Drawer) |
a drawer docked at the side over the running game |
Choose what each save shows
Rows show the save’s picture with a mark of its kind (a bolt for a quick save, the autosave mark, a flag for a checkpoint, a heart for a run’s save), its title on one line (an ellipsis ends one too long for the row), pills (Run, Ended, Imported), its place, its play time and when it was saved. The detail adds the long date and time, the map, the New Game+ cycle, the profile and your game fields. Under Project Settings > Plugins > Rolly Save Screens > Rows:
| Setting | Default | What it does |
|---|---|---|
| Fields | place, play time, save time, kind marks on | each part a row and the detail show; Map, New Game+ Cycle and Profile are off |
| Game Fields | none | members of your Slot Fields Struct, each with its words, such as Day {Value}, in rows and the detail |
| Row Pictures | on | each row shows its save’s picture; the detail always does |
| Save Time | Relative Day | Relative Day: Today 14:32, Yesterday 21:05, the weekday within a week, then the date; Date and Time: as the language writes them |
| Default Sort | Newest first | Newest first, Oldest first, Title or Play time |
| Player Can Sort | on | the sort chip and its key change the order for the session; numbered Save and New Game lists keep their order |
| Max Rows | 100 | 10 to 1,000 rows are built after sorting; a line under the last row says how many saves are not shown, and search finds every save |
| Search From | 20 | search shows from this many saves, 0 to 1,000; 0 turns it off |
Game Fields show a Text as it is, numbers as the player’s language writes them (1,234.5), a Boolean as Yes or No, an enum by its display name, and a String or Name as written. A C++ enum shows its name in a packaged game, which keeps no display names of C++ enums; a Blueprint enum keeps its own. A member of another type, such as a struct, shows nothing, and the setup warning GameFieldType says so.
A save shows its picture once it is read (see Show save thumbnails); pictures are read for the rows in view and a page below, and the screen holds at most 64 at a time. A save over a listed slot, or a new save in a slot one was deleted from, shows its own picture. A save whose run ended, whose Game Data Version is above the project’s, or that a save block, a load or another player’s save keeps from being used stays listed, dimmed, with the reason in the detail.
Change titles and texts
Titles (Project Settings > Plugins > Rolly Save Screens > Titles) name saves without a typed title: New Save Save {Number}, Numbered Slot {Number}, Playthrough Playthrough {Number}, Run Run {Number}, Quick Quick Save, Autosave Autosave {Number}, Checkpoint Checkpoint: {Checkpoint}, Unnamed Checkpoint, Imported, and Copy Copy of {Title}. {Number} is the slot’s number, {Checkpoint} the checkpoint’s name and {Title} the copied save’s title. Title Entry decides when players type a title: Style Default (Free Slots only), Ask (every new save) or Automatic (never). Max Title Length is 8 to 128 characters, 40 by default.
Texts holds the screens’ words: the screen titles, the New rows, the empty list (“No saves yet.”), the client and first-player notices and the indicator’s Saving, Saved and Loading. Block Reasons gives words to the reasons of Add Save Block: a block named BossFight with the words “You cannot save during this fight.” shows them on the rows of Save. These texts live in Config/DefaultGame.ini: add *.ini to your localization target’s Gather Text From Source paths to translate them.
Choose actions and questions
| Key | Gamepad | Keyboard | Mouse and touch |
|---|---|---|---|
| Save, Load, Continue, Start, Import | A | Enter, Space | double-click a row, or tap the focused row |
| Rename, or More | X | F2 | the prompt |
| Delete | Y | Delete | the prompt |
| Sort | right trigger | S | the sort chip |
| Profiles | left trigger | P | the profile chip |
| Search | right stick button | Ctrl+F | the search entry |
| Move between rows | D-pad, left stick | arrows; Page Up, Page Down, Home, End | hover, or drag to scroll |
| Previous, next group | LB, RB | Q, E | a tab, rail item or chevron |
| Back | B | Esc | the prompt |
| Close from any level | Menu | ||
| Repeat or stop narration | left stick button | Ctrl+Space |
S and P keep their place on other keyboard layouts. The keys are class defaults of the slot screen (Rename Keys, Delete Keys, Sort Keys, Profile Keys); change them in a Blueprint subclass.
Under Actions: Allow Rename and Allow Delete are on; Allow Copy adds Copy, and Allow Export adds Export on Windows, Mac and Linux. With either, and on a run that goes on, X opens More, a list of what the save allows: Rename, Copy, Export, Abandon Run, Delete and Cancel. Allow Import ends Load with Import a Save, which lists the export folder’s files (see Rename, export and import saves).
Under Confirmations, questions ask before what cannot be undone, the safe answer focused:
| Setting | Default | Asks |
|---|---|---|
| Confirm Overwrite | on | before a save replaces another, and before a new game takes a slot that holds one |
| Confirm Delete | on | before a save is deleted |
| Ask Before Loading | When Progress Is Unsaved | before a load when more than Unsaved After (60 seconds) of play since the last save or load would be lost, saying how much; Never or Always |
| Menu Maps | none | maps where loading never asks, such as your title screen |
An answer acts on its save only while the save is still the one the question named. An answer given while another player’s save or a load runs waits for it to end, then checks the save again. If another player’s save, or an autosave under the Side Drawer, replaced it meanwhile, the list shows the new save, a notice says “{Title} changed, so nothing was done.” and nothing happens; ask again to act on it.
New saves and renames ask for a title in the name dialog, which opens on its confirm button: A, then A again saves with the title offered. Up focuses the field, and A on it opens the on-screen keyboard for pad and touch players; Menu confirms from the keyboard, B ends typing and keeps the text. Export names allow letters, digits, spaces, _ and -, 1 to 64.
A save, load, delete, rename, copy, export or import that fails opens a dialog with the reason. A load of a damaged save, an ended run’s save or an older copy of a run offers Delete beside Close while Allow Delete is on. Close After Saving (on) closes the screen once a save from it succeeds; off, the screen stays with focus on the saved row.
Start a new game from the screen
New Game clears the loaded game, sets the slot the new game saves to (Numbered Slots and Playthroughs, with a title when Title Entry asks for one, which the new game’s first save takes: a save the slot holds keeps its own title until then) or starts a run in it (Runs, deleting the run’s old save first when the player picked one), closes the screen and fires On New Game Chosen on the Rolly Save UI Subsystem with the player, the slot name and the title. In Free Slots the event fires at once, without a slot. Then New Game Map (Project Settings > Plugins > Rolly Save Screens > New Game) opens, with Open Options such as listen. With New Game Map empty, open your start map in the event; a setup warning says so when nothing binds it.
Let players use profiles
With Project Settings > Plugins > Rolly Save > Profiles > Profile Keys at Named, Load and New Game show a profile chip with the player’s profile, and the left trigger or P opens the profiles panel. Open Rolly Profiles opens it from your own menu.
- Choosing a profile offers Use This Profile (not for the active one or one in use), Rename, Delete (not for one in use or the only one) and Cancel. Use This Profile closes the panel, says “Now using {Name}.” and lists that profile’s saves.
- New Profile asks for a name, offering
Player {Number}with the lowest free number, on the keyboard first; the profile is made and used. Names are 1 to Max Profile Name Length (8 to 64, 24 by default) characters, and two profiles never share a name, whatever the case. - Delete asks first. While each profile’s saves show alone, its saves go with it; otherwise they stay. Deleting the player’s own profile switches to the first other one.
- At Max Named Profiles, a line says so in place of New Profile.
- An action that fails, such as a name the storage cannot write, says why in a dialog.
Slots Shown (Project Settings > Plugins > Rolly Save Screens > Profiles) decides whose saves the list shows: Auto (every save with Platform User keys, the player’s profile’s saves with Named or Provider keys), All Profiles, or Current Profile. Imported saves show for every profile. See Keep each player’s profile.
While the list shows the player’s profile’s saves alone, a screen opened before that profile is found, as in the first frames after the player joins with Named keys, reads Reading saves until the profile loads, then lists its saves. A profile Use Rolly Profile gives the player while the screen shows gets its saves listed in place.
Continue and abandon runs
In Runs, Load shows each run’s save; a run that goes on reads Continue, and an ended run is locked with the reason. X on a run that goes on opens More with Abandon Run, which ends it by Abandoned Runs: Ask (Cancel, Keep as Ended or Delete), Keep as Ended (the save stays listed as ended) or Delete. Deleting a run that goes on ends it too. See Play single-slot runs.
Share saves between machines
Allow Export adds Export to More: it asks for a file name, cut from the title, writes the save to the export folder of Project Settings > Plugins > Rolly Save > Sharing Saves, and says “Exported to {File}.” Allow Import ends Load with Import a Save: a second screen lists the export folder’s files, Accept imports one into a new slot and says “Imported {Title}.”, and back in Load the new save has focus. Both need a platform that can write files, which Windows, Mac and Linux can. See Rename, export and import saves.
Split screen and Steam Deck
Each local player opens a slot screen on their own part of the screen; saves and loads are the game’s. While one player’s save or a load runs, the other’s open screen marks its rows unavailable (“Another player is saving.”, “A save is loading.”), and a load’s travel closes every screen. The game’s own saves, such as autosaves and checkpoints, leave the rows as they are. A row that cannot act shows what Accept does, dimmed. Who Can Load keeps Load and New Game to player 1 with First Player and tells the others “Only Player 1 can load.”; Save stays open to everyone. A client refuses Save, Load and New Game with “Only the host can save and load.” and the setup warning ClientScreen: its own files hold none of the host’s world. Open Rolly Profiles works on clients.
At the Steam Deck’s 1280 x 800, which lays out about 1730 x 1080 units at the Deck’s DPI scale, Tabs and Side Rail keep the side detail panel; the Couch Hub at Large density suits Deck-first games.
Show it in VR on a widget component
- Make an actor with a Widget Component: Space World, Draw Size 1920 x 1080, Receive Hardware Input off, Window Focusable on. Its widget holds an Overlay.
- In Begin Play, Get Rolly Screen Stack for the player and call Set Host Panel with that Overlay. Do it again after each map change: the component dies with its world.
- Set Project Settings > Plugins > Rolly Save Screens > World Space > Input Mode to Overlay, so the game’s input still reaches your Widget Interaction component.
- Use the Centered Panel (
Panel) at Large density, which reads at arm’s length.
Use it with the pointer: gamepad focus inside a widget component is not covered yet. See Host screens in your own widget.
Replace parts of the screen in Blueprint
Each piece has a class setting under Project Settings > Plugins > Rolly Save Screens > Classes: Slot Screen Class, Slot Row Class, Profiles Screen Class, Saving Indicator Class and Loading Overlay Class. Make a Blueprint subclass of the built-in class and name widgets like its parts; the code drives them, and parts you leave out are built for you.
| Class | Parts |
|---|---|
| Rolly Save Slot Screen | the category screen’s parts (see Choose a layout), plus SortChip and ProfileChip |
| Rolly Save Slot Row | the row’s parts, plus KindPlate, KindIcon, Pills and TimeText |
| Rolly Save Profiles Screen | ProfileList, LimitText, PromptBar |
| Rolly Save Profile Row | StateIcon, StateBadge, StateText, PlusIcon |
Classes start loading as the game starts; a screen opened before its class finished loading waits for that class once. A class that cannot be loaded falls back to the built-in one with a setup error. The cook keeps every class and New Game Map these settings name.
C++
URollySaveSlotScreen (Screens/RollySaveSlotScreen.h) draws its rows from an IRollySaveSlotSource (Model/RollySaveSlotSource.h); FRollySaveSlotScreenModel (Model/RollySaveSlotScreenModel.h) builds rows, groups, order and what each row’s prompts can do from a list of saves, with no widgets, so a screen of your own reads the same rules. FRollySaveSlotFlows runs what a row does: the saves, loads and questions.
Use your own menu instead
Turn Show Slot Screen off, or pick Your own menu for Slot screen in Tools > Rolly Save > Set Up Project…: nothing listens to On Slot Screen Requested, so bind it on the Rolly Save Subsystem to open your menu, and call Mark Slot Screen Request Handled in that event before it returns. Until a listener marks the request, Save Points on Automatic save a checkpoint. List Rolly Slots, Load Rolly Slot Thumbnail and the other nodes give your menu what the screen shows (see Show saves in a slot list). The saving indicator, notices and loading overlay work with either menu (see Show when the game saves and loads).