Rolly Docs

Give players a slot screen

Rolly Save's slot screen lets players save, load, start a new game and manage their saves, with a pad, a keyboard and mouse, or touch, in the layout and look of Rolly Save Core UI.

Sheet
11 of 64
Rev
1.0.0
Updated
On this sheet
Figure 1. Load in the Tabs layout: eight saves newest first, each with its picture, kind mark, pills, place, play time and save time; the run that ended and the save of a newer version dimmed; the focused save's large picture and facts in the detail panel; the sort chip in the header and the keys in the footer.

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.

Figure 2. Save in the Tabs layout: New Save has focus, and the detail panel shows the picture taken of the game as the screen opened, which the new save will hold.

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);
C++

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
Figure 3. Load in the Side Rail layout with Grouping By Kind: the rail lists Saves, Autosaves and Checkpoints, the list shows the Saves group, and Back reads Groups.
Figure 4. Save in the Centered Panel over the game: New Save has focus, and the strip under the list says a title comes next.
Figure 5. Load in the Couch Hub at Large density: the group's page with its rows and the focused save's picture in the preview column.
Figure 6. Save in the Side Drawer docked at the right 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
Figure 7. Save over a save: Overwrite Before the cellar? The save from Today 2:32 PM is replaced. Cancel has focus, Overwrite is the danger button.

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.

Figure 8. New Save's title typed with a pad on the on-screen keyboard, the Xbox glyphs on Shift, Space, Delete and Done, the counter at 11 of 40.

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.

Figure 9. The profiles panel: Anna active with the check, Kim, Sam in use by player 2 and unavailable, and New Profile.
  • 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.

Figure 10. Load in the Tabs layout on a Steam Deck's 1280 x 800 screen: the list and the side detail panel with the large picture, and the pad's prompts in the footer.

Show it in VR on a widget component

  1. 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.
  2. 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.
  3. Set Project Settings > Plugins > Rolly Save Screens > World Space > Input Mode to Overlay, so the game’s input still reaches your Widget Interaction component.
  4. 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).