RollySave
ARollySaveAutosaveVolume
Rolly Save Autosave Volume · derives from AVolume · #include "Level/RollySaveAutosaveVolume.h"
Requests an autosave when a player walks in. Shape it like any volume.
| Property | Type | Default | Description |
|---|---|---|---|
| Trigger | URollySaveTriggerComponent |
Rolly Save Trigger | Requests the autosave: its Ignore Minimum Gap, Triggers and events. |
ARollySaveCheckpointVolume
Rolly Save Checkpoint Volume · derives from AVolume · #include "Level/RollySaveCheckpointVolume.h"
Saves a checkpoint when a player walks in. Shape it like any volume.
| Property | Type | Default | Description |
|---|---|---|---|
| Trigger | URollySaveTriggerComponent |
Rolly Save Trigger | Saves the checkpoint: its Checkpoint Name, Triggers and events. |
ARollySaveResetAreaVolume
Rolly Save Reset Area Volume · derives from AVolume · #include "Level/RollySaveResetAreaVolume.h"
The saved actors inside start as designed again when this level is next built, as Resets says. Shape it like any volume; it stays loaded in World Partition maps.
| Property | Type | Default | Description |
|---|---|---|---|
| Reset Area | URollySaveResetAreaComponent |
Rolly Save Reset Area | Resets the actors inside: its Resets, Reset After and events. |
ARollySaveSavePoint
Rolly Save Point · derives from AActor · #include "Level/RollySaveSavePoint.h"
A placed object that saves when a player touches it or your game calls Trigger on its Rolly Save Trigger: by default it opens the slot screen when one exists, otherwise it saves a checkpoint. Replace its Mesh with your own.
| Property | Type | Default | Description |
|---|---|---|---|
| Trigger | URollySaveTriggerComponent |
Rolly Save Trigger | Saves when used: its Action, Checkpoint Name, Triggers and events. |
| Mesh | UStaticMeshComponent |
Static Mesh Component | What players see: the engine’s cylinder until you pick your own Static Mesh. |
| Sphere | USphereComponent |
Sphere Collision | Where walking in triggers it: a sphere that overlaps pawns and vehicles only; its Sphere Radius is the Overlap Radius. |
URollySaveAIStateHandler
Rolly Save AI State Handler · derives from URollySaveEngineStateHandler, abstract · #include "EngineState/RollySaveAIStateHandler.h"
The base of Rolly Save’s engine state handlers that set AI and ability system state, such as a Blackboard, a StateTree or Ability System Components: each applies on a tick after its Apply Timing comes, once its AI is ready, never inside the caller’s stack.
URollySaveAudioHandler
Audio · derives from URollySaveEngineStateHandler · #include "EngineState/RollySaveAudioHandler.h"
Saves the actor’s audio components: whether each plays, is paused or stopped, where it is, and the sound your game set, so music and ambience go on where they were. MetaSounds start again from their beginning.
| Property | Type | Default | Description |
|---|---|---|---|
| Components | FRollySaveComponentFilter |
Which audio components save. Components that destroy themselves when done (Auto Destroy), such as Spawn Sound Attached makes, never save. With every list empty, all others. | |
| Position | ERollySaveAudioPosition |
Estimated | How the handler knows where a playing sound is. Estimated: from when it started, its pauses and its pitch, at no cost while it plays. Reported: the engine reports it, exact for sound waves, at a small cost per playing sound and frame. |
| Stop Saved Stopped | bool |
true | Stop a sound that was stopped when the game saved, also one Auto Activate started again. Off: it plays as Auto Activate starts it. |
Save Volume and Pitch (bSaveVolumeAndPitch) |
bool |
true | Save each component’s volume and pitch multipliers, as Set Volume Multiplier and Set Pitch Multiplier set them. Off: they stay as the editor or your game sets them. |
URollySaveBlackboardHandler
Blackboard · derives from URollySaveAIStateHandler · #include "EngineState/RollySaveBlackboardHandler.h"
Attach to AI pawns: saves the Blackboard values of the pawn’s AI controller, which never saves itself, and restarts its Behavior Tree with them after a load.
| Property | Type | Default | Description |
|---|---|---|---|
| Keys | TArray<FName> |
empty | Only these keys, such as TargetActor. Empty: every key but SelfActor, which the controller sets from the pawn. |
| Not Saved Keys | TArray<FName> |
empty | Keys left out, such as those your controller sets again when it possesses the pawn. |
| Restart Logic | bool |
true | Restart the Behavior Tree once the values are set, so it decides again from them. While a tree restarts, observers are not told of the loaded values, since the tree reads them all again; a controller that runs no tree hears each one through its observers. Off: the running tree goes on, observers hear what changed, and its tasks read the values as they next run. |
| Spawn Missing Controller | bool |
true | Give a pawn that a load spawned again its AI Controller Class when it comes back without a controller: Auto Possess AI’s default, Placed in World, gives none to spawned pawns. Off: the values wait until your game possesses it. |
URollySaveBytesAction
Rolly Save Bytes Action · derives from UBlueprintAsyncActionBase · #include "Nodes/RollySaveBytesAction.h"
The Rolly Save node that gives a save as bytes: Export Rolly Slot to Bytes. It ends in Success or Failure on a later tick than the call.
URollySaveComponent
Rolly Save · derives from UActorComponent · #include "Actor/RollySaveComponent.h"
Makes its actor save, and overrides what Project Settings > Plugins > Rolly Save > Actor Defaults and the Save Rules that match the actor save for it. Its events tell the actor’s graph when the actor is saved and loaded. An actor with a variable that has SaveGame ticked saves without it.
| Property | Type | Default | Description |
|---|---|---|---|
| Overrides | FRollySaveActorOverrides |
What this actor saves where it differs from Actor Defaults in Project Settings > Plugins > Rolly Save and from its Save Rules. Not saved: after a load the actor has the values set in the editor. | |
Use Save Rules (bUseSaveRules) |
bool |
true | Off: no Save Rule applies to this actor; Actor Defaults and this component decide. |
| Ignored Rules | TArray<TSoftObjectPtr<URollySaveRule> > |
empty | Save Rules that do not apply to this actor though they match it. |
Saved by Path (Properties) |
TArray<FRollySavePropertyPath> |
empty | Engine and plugin properties this actor saves beside those its Save Rules pick. Pick them with Pick Properties. |
Not Saved (NotSaved) |
TArray<FRollySavePropertyPath> |
empty | What this actor does not save though its Save Rules pick it or its SaveGame is ticked: a property, or a whole component (an entry without a property). A save made before the entry still restores a SaveGame value once. |
| Handlers | TArray<TObjectPtr<URollySaveHandler> > |
empty | Save Handlers for this actor’s state that is in no property, beside those its Save Rules attach, each with its settings here. A class a rule also attaches is attached once, with these settings. Get Target Actor gives them this actor. |
Removed Handlers (RemovedHandlers) |
TArray<TSoftClassPtr<URollySaveHandler> > |
empty | Save Handler classes this actor’s Save Rules attach that it does without. |
Custom Save ID (CustomSaveId) |
FString |
empty | Leave empty for most actors: the actor saves under its name in its level. Fill in to keep its saved state when you move it to another sublevel of this map or replace it with another actor: it then saves under this ID, which must be unique in the map. 1 to 128 letters, digits, _, - and ., such as FrontDoor. |
URollySaveEngineStateHandler
Rolly Save Engine State Handler · derives from URollySaveHandler, abstract · #include "EngineState/RollySaveEngineStateHandler.h"
A Save Handler of Rolly Save for an engine system’s state on the actor it is attached to. Attach it in a Save Rule or Rolly Save component; it cannot be a Global Handler.
URollySaveGameClock
Rolly Save Game Clock · derives from UObject, abstract · #include "Level/RollySaveGameClock.h"
Tells Reset Areas your game’s own time, such as in-game days. Make a Blueprint of it, override Get Game Time Seconds, and pick it in Project Settings > Plugins > Rolly Save > Game Clock Class.
URollySaveHandler
Rolly Save Handler · derives from UObject, abstract · #include "Handler/RollySaveHandler.h"
Saves state you cannot tick SaveGame on, such as another plugin’s actor. Add variables with SaveGame ticked, set them in Gather, use them in Apply, and list the handler in Project Settings > Plugins > Rolly Save > Global Handlers, or attach it to actors in a Save Rule or Rolly Save component.
| Property | Type | Default | Description |
|---|---|---|---|
| Apply Timing | ERollySaveApplyTiming |
Before Begin Play | Before Begin Play: with the other saved values, so Begin Play sees the result. After Begin Play: once the actor the handler is attached to began play, also in a level that streams in, or once every actor’s Begin Play ran for a Global Handler. When Asked: for a handler a Save Rule or Rolly Save component attaches, once your game calls Apply Saved Values for its actor; a Global Handler with it applies After Begin Play. A load with Keep Current Map runs Apply at once with any of them. Rolly Save’s engine state handlers other than Material Parameters apply After Begin Play at the earliest. |
| Group | FString |
empty | The group a part save or part load takes this handler with, such as Chapter2: 1 to 1,024 characters, compared with capital letters. Empty saves it with the world. Not used when a Save Rule or Rolly Save component attaches the handler. |
URollySaveImportAction
Rolly Save Import Action · derives from UBlueprintAsyncActionBase · #include "Nodes/RollySaveImportAction.h"
The Rolly Save node that reads a save the engine’s Save Game to Slot wrote: Import Engine Save Game. It ends in Success or Failure on a later tick than the call.
URollySaveInterface
Rolly Save Interface · derives from UInterface, abstract · #include "Record/RollySaveInterface.h"
Adds Rolly Save’s three events to a Blueprint (Class Settings > Implemented Interfaces) and makes its objects save. A custom event of the same name works without the interface; C++ classes declare the functions directly.
URollySaveJsonAction
Rolly Save Json Action · derives from UBlueprintAsyncActionBase · #include "Nodes/RollySaveJsonAction.h"
The Rolly Save node that gives a save as JSON text: Export Rolly Slot to JSON Text. It ends in Success or Failure on a later tick than the call.
URollySaveListAction
Rolly Save List Action · derives from UBlueprintAsyncActionBase · #include "Nodes/RollySaveListAction.h"
The Rolly Save nodes that list saves: List Rolly Slots and List Rolly Export Files. Each ends in Success or Failure on a later tick than the call.
URollySaveLoadAction
Rolly Save Load Action · derives from UCancellableAsyncAction · #include "Nodes/RollySaveLoadAction.h"
The Rolly Save nodes that load: Load Game from Rolly Slot, Rolly Quick Load, Load Game Part from Rolly Slot, Load Game from Rolly Memory Slot, Rewind Rolly Game, Load Rolly Checkpoint and Start Rolly New Game Plus. Their Async Action pin cancels: before the map changes the load stops and only On Load Cancelled fires; after, or while its values are being set (a cancel from On Rolly Save Loaded, an On Loaded event or a Save Handler’s Apply), the load finishes and On Load Finished fires, but these pins do not. New Game+ cannot be cancelled: its new game has begun by the time the node returns.
URollySaveMaterialHandler
Material Parameters · derives from URollySaveEngineStateHandler · #include "EngineState/RollySaveMaterialHandler.h"
Saves the dynamic materials of the actor’s meshes and decals: their parameters, the materials they were made from, and the meshes’ custom primitive data, such as a lamp’s glow your game turned up. A material your game sets with Set Material saves when you pick Override Materials in Pick Properties.
| Property | Type | Default | Description |
|---|---|---|---|
| Components | FRollySaveComponentFilter |
Which primitive and decal components save their materials, such as only Lampshade. With every list empty, all of them. | |
| Save Parameters | bool |
true | Save the parameters your game set on dynamic material instances, such as with Set Scalar Parameter Value on Materials, and set them again after a load. |
| Parameter Names | TArray<FName> |
empty | Only these parameters, such as Glow. Empty: every parameter a dynamic material instance holds. |
| Save Parent Materials | bool |
true | Save the material a dynamic material instance was made from when it is not the slot’s material from the editor, such as a lamp’s lit material, and make the instance from it after a load. Off: parameters go to the slot’s dynamic material instance, made from the slot’s material where there is none. |
| Save Custom Primitive Data | bool |
true | Save each mesh’s custom primitive data where it differs from the values set in the editor, as Set Custom Primitive Data Float sets it. |
URollySaveMigrationContext
Rolly Save Migration Context · derives from UObject · #include "Migration/RollySaveMigrationContext.h"
The save a migration step changes: its saved objects, found by class, by what they were saved for or by chunk, their top-level saved values, and the values Save Rules and Rolly Save components save by path. Rolly Save makes one for each step’s Migrate.
URollySaveMigrationStep
Rolly Save Migration Step · derives from UObject, abstract · #include "Migration/RollySaveMigrations.h"
One change to saved data between two Game Data Versions. Create a Blueprint of it for a change no built-in step makes, then pick it in the Steps of your Rolly Save Migrations asset.
| Property | Type | Default | Description |
|---|---|---|---|
To Version (ToVersion) |
int32 |
2 | The Game Data Version this step brings saves to. It runs on saves of a lower version once Game Data Version in Project Settings is at least this. At least 2. |
URollySaveMigrations
Rolly Save Migrations · derives from UDataAsset · #include "Migration/RollySaveMigrations.h"
The steps that bring saves of older Game Data Versions up to date before they load. Name this asset in Project Settings > Plugins > Rolly Save > Migrations.
| Property | Type | Default | Description |
|---|---|---|---|
| Steps | TArray<TObjectPtr<URollySaveMigrationStep> > |
empty | Each step runs on saves below its To Version; steps run in order of To Version, then in list order. |
URollySaveMontageHandler
Montages · derives from URollySaveEngineStateHandler · #include "EngineState/RollySaveMontageHandler.h"
Saves the montages the actor’s skeletal meshes play: each montage, its position, play rate, section order and pause, so an emote or a reload goes on after a load. The animation graph’s states are not saved.
| Property | Type | Default | Description |
|---|---|---|---|
| Components | FRollySaveComponentFilter |
Which skeletal mesh components save their montages. With every list empty, all of them. | |
| Blend In | float |
0 | How long restored montages take to blend in. 0: at full weight at once. From 0 to 10. |
| Stop Other Montages | bool |
true | Stop the montages that play when the handler applies and that the save does not hold, such as an idle montage Begin Play started. Off: they go on. |
URollySavePlayerIdProvider
Rolly Save Player ID Provider · derives from UObject, abstract · #include "Profile/RollySavePlayerIdProvider.h"
Names each local player’s profile when Profile Keys is Provider, such as by the account the platform signed in. Make a Blueprint of it, override Get Profile Key and pick it in Project Settings > Plugins > Rolly Save > Profiles > Player ID Provider. Rolly Save makes one per game instance as the game starts.
URollySaveProfile
Rolly Save Profile · derives from UObject, abstract · #include "Profile/RollySaveProfile.h"
One local player’s data outside any playthrough, such as unlocks. Make a Blueprint of it, add variables with SaveGame ticked and pick it in Project Settings > Plugins > Rolly Save > Profile Class.
URollySaveProfileAction
Rolly Save Profile Action · derives from UBlueprintAsyncActionBase · #include "Nodes/RollySaveProfileAction.h"
The Rolly Save nodes that give a local player’s profile: Load Rolly Profile and Reset Rolly Profile. Each ends in Success or Failure on a later tick than the call. They work on clients: each machine keeps its own players’ profiles.
URollySaveProfileInfoAction
Rolly Save Profile Info Action · derives from UBlueprintAsyncActionBase · #include "Nodes/RollySaveProfilesAction.h"
The Rolly Save nodes that give one named profile: Create Rolly Profile and Use Rolly Profile. Each ends in Success or Failure on a later tick than the call.
URollySaveProfilesAction
Rolly Save Profiles Action · derives from UBlueprintAsyncActionBase · #include "Nodes/RollySaveProfilesAction.h"
The Rolly Save node that lists the named profiles players make under Named profile keys: List Rolly Profiles. It ends in Success or Failure on a later tick than the call, and works on clients: each machine keeps its own.
URollySaveReloadRulesAction
Rolly Save Reload Rules Action · derives from UBlueprintAsyncActionBase · #include "Nodes/RollySaveReloadRulesAction.h"
The Reload Save Rules node. It ends in Completed on a later tick than the call.
URollySaveRemoveRecordsStep
Remove Records of Class · derives from URollySaveMigrationStep · #include "Migration/RollySaveMigrationSteps.h"
Removes every saved object of a class, such as one of a plugin the game no longer uses.
| Property | Type | Default | Description |
|---|---|---|---|
Class Path (ClassPath) |
FString |
empty | As rolly.save.dump -records and the old-save check show it, such as /Game/Chests/BP_Chest.BP_Chest_C. |
URollySaveRemoveValueStep
Remove Saved Value · derives from URollySaveMigrationStep · #include "Migration/RollySaveMigrationSteps.h"
Removes a top-level saved value from saved objects of the classes listed, so the old-save check stops reporting it as dropped.
| Property | Type | Default | Description |
|---|---|---|---|
| Classes | TArray<FSoftClassPath> |
empty | The classes whose saved objects hold the value. Compared after Core Redirects. |
Value Name (ValueName) |
FName |
None | The name of the value your game no longer has. |
URollySaveRenameMapStep
Rename Map · derives from URollySaveMigrationStep · #include "Migration/RollySaveMigrationSteps.h"
Moves a save made in a map that was renamed or moved to the map’s new name: the map the save opens, the map’s saved Level Blueprint and everything saved inside it. The step fails on a save that already holds the new map.
| Property | Type | Default | Description |
|---|---|---|---|
Old Map (OldMap) |
FString |
empty | As rolly.save.dump -records and the old-save check show it, such as /Game/Maps/Tavern. |
New Map (NewMap) |
TSoftObjectPtr<UWorld> |
None | The map as it is named now. |
URollySaveRenameNameStep
Rename Registered Name · derives from URollySaveMigrationStep · #include "Migration/RollySaveMigrationSteps.h"
The object saved under a registered name, and every saved pointer to it, takes a new name. Names compare with capital letters. The step fails on a save that already holds an object under New Name.
| Property | Type | Default | Description |
|---|---|---|---|
Old Name (OldName) |
FString |
empty | The name Register Object for Saving was given in saves of lower versions. |
New Name (NewName) |
FString |
empty | The name the object registers under now. |
URollySaveRenameValueStep
Rename Saved Value · derives from URollySaveMigrationStep · #include "Migration/RollySaveMigrationSteps.h"
In saved objects of the classes listed, the top-level saved value Old Name becomes New Name.
| Property | Type | Default | Description |
|---|---|---|---|
| Classes | TArray<FSoftClassPath> |
empty | The classes whose saved objects hold the value, such as your Game Mode Blueprint. Compared after Core Redirects. |
Old Name (OldName) |
FName |
None | The value’s name in saves of lower versions, such as ModeCount. |
New Name (NewName) |
FName |
None | The value’s name now, such as ModeTotal. The step fails on a save whose object holds both names. |
URollySaveReplaceClassStep
Replace Class · derives from URollySaveMigrationStep · #include "Migration/RollySaveMigrationSteps.h"
Every reference to Old Class Path, in every saved object, becomes New Class: saved objects of that class load into objects of New Class, and pointers to the class follow.
| Property | Type | Default | Description |
|---|---|---|---|
Old Class Path (OldClassPath) |
FString |
empty | As rolly.save.dump -records and the old-save check show it, such as /Game/Chests/BP_Chest.BP_Chest_C. |
New Class (NewClass) |
TSoftClassPtr<UObject> |
None | The class that takes the old class’s place. |
URollySaveResetAreaComponent
Rolly Save Reset Area · derives from UActorComponent · #include "Level/RollySaveResetAreaComponent.h"
The saved actors inside its actor’s shape start as designed again when its level is next built: on a return by travel, a load that opens the map, or New Game Plus, as Resets says. With Reset Instances, so do the instances inside. Add it to any actor with a Box, Sphere or Capsule Collision; placed volumes and Blueprints spawned during play both work.
| Property | Type | Default | Description |
|---|---|---|---|
Enabled (bEnabled) |
bool |
true | Off: it resets nothing and decides no overlap, as if it were not there. Set Enabled changes it during play; the save keeps that. |
Resets (Rule) |
ERollySaveResetRule |
On Revisit | When the saved actors inside start as designed again. |
| Reset After | double |
3600 | Time on Clock since the player left its level after which a return resets it, such as 3600 for an hour. From 1 to 3155760000. |
| Clock | ERollySaveResetClock |
Project Default | The clock Reset After counts on. Project Default: Reset Clock in Project Settings > Plugins > Rolly Save. |
| Remove Spawned Actors | bool |
true | Remove actors spawned during play that are inside when it resets, such as dropped loot. What a player holds is never removed. |
Reset Instances (bResetInstances) |
bool |
true | Instances inside its shapes start as the level designs them when it resets, even when their actor, such as a foliage actor that spans the level, stands outside: removed ones come back, moved ones go back, and ones your game added inside go. Filter is checked against their actor. With Resets set to Never, removed instances inside never regrow. Off: it leaves instances as they are. |
| Priority | int32 |
0 | Where areas overlap, the higher Priority decides; with equal Priority, the area that resets least: Never, On New Game Plus, After Game Time with the longer Reset After, On Revisit. Can be negative. |
| Filter | FRollySaveActorFilter |
Only actors that pass reset; others inside keep their state, and this area does not decide for them where areas overlap. A list with entries must pass; empty lists let every saved actor inside pass. An actor spawned during play is judged by its class: its tags are its class’s. Maps limits the maps where it acts. | |
| Except | FRollySaveActorFilter |
Actors that any entry matches keep their state. Maps lists maps where it does not act. | |
| Shapes | TArray<FComponentReference> |
empty | The components of its actor that make its shape. Empty: every Box, Sphere and Capsule Collision and brush of the actor. |
URollySaveRule
Rolly Save Rule · derives from UDataAsset · #include "Rules/RollySaveRule.h"
Decides what a group of actors saves: match them by class, interface, tag or map, then set ticks, pick properties and attach Save Handlers. Every Save Rule in the project applies while Enabled is on.
| Property | Type | Default | Description |
|---|---|---|---|
| Enabled | bool |
true | Off: this rule applies to nothing. On, it applies without being listed anywhere. |
| Priority | int32 |
0 | Among rules matching one actor, a higher Priority applies later and wins each tick both set; equal Priorities go by asset path. A Rolly Save component wins over every rule. Can be negative. |
| Match Mode | ERollySaveRuleMatch |
All Lists | All Lists: an actor matches when it passes every list below that has entries. Any List: when it passes one of them. Maps and Except apply either way. |
| Match | FRollySaveActorFilter |
The actors this rule applies to. One entry passes a list; an empty list is no condition. | |
| Except | FRollySaveActorFilter |
Actors this rule leaves out though Match passes them: one entry of any list is enough. | |
| Overrides | FRollySaveActorOverrides |
Whether and what matched actors save, where it differs from Actor Defaults and earlier rules. | |
Saved by Path (Properties) |
TArray<FRollySavePropertyPath> |
empty | Engine and plugin properties saved for matched actors, such as a light’s intensity. Pick them with Pick Properties; Blueprint variables use their SaveGame tick. |
Not Saved (NotSaved) |
TArray<FRollySavePropertyPath> |
empty | What matched actors do not save though earlier rules pick it or its SaveGame is ticked: a property, or a whole component (an entry without a property). A later rule or the component can pick a property by path again. A save made before the entry still restores a SaveGame value once. |
| Handlers | TArray<TObjectPtr<URollySaveHandler> > |
empty | Save Handlers for each matched actor’s state that is in no property, each with its settings here. Each actor gets its own copy; Get Target Actor gives it the actor. A class that several rules or the component attach is attached once, with the settings of the one that applies last. |
Removed Handlers (RemovedHandlers) |
TArray<TSoftClassPtr<URollySaveHandler> > |
empty | Save Handler classes that earlier rules attach and matched actors do without. |
URollySaveSequenceHandler
Level Sequence · derives from URollySaveEngineStateHandler · #include "EngineState/RollySaveSequenceHandler.h"
For a Level Sequence Actor: saves its time and whether it plays, is paused or stopped, so a cutscene or a moving platform goes on where it was.
| Property | Type | Default | Description |
|---|---|---|---|
Save Sequence Asset (bSaveSequence) |
bool |
true | Save the sequence your game set with Set Sequence when it is not the one placed in the editor, and set it again after a load. Off: the actor keeps the sequence placed in the editor. |
| Save Play State | bool |
true | Save whether the sequence plays, is paused or stopped, its direction and its play rate. Off: only its time is set, and it plays as Auto Play and your Begin Play leave it. |
| Fire Events | bool |
false | Play to the saved time instead of jumping there, so event keys between the start and the saved time fire. Off: none fire. |
URollySaveSlotAction
Rolly Save Slot Action · derives from UBlueprintAsyncActionBase · #include "Nodes/RollySaveSlotAction.h"
The Rolly Save nodes that write: Save Game to Rolly Slot, Rolly Quick Save, Save Game to New Rolly Slot, Set Rolly Slot Title, Set Rolly Title for Next Save, Delete Rolly Slot, Copy Rolly Slot, Save Game Part to Rolly Slot, Save Game to Rolly Memory Slot, Save Rolly Rewind Point, Save Rolly Checkpoint, Start and End Rolly Run, Rename Rolly Slot, Export Rolly Slot to File, Import Rolly Slot from File and from Bytes, Save Rolly Profile, and Rename and Delete Rolly Profile. A write that started cannot be undone, so they have no Cancel. Each ends in Success or Failure on a later tick than the call. The game instance holds the node until then, so the operation finishes when the Blueprint that called it is gone, whose pins then do not run.
URollySaveStorageSpaceAction
Rolly Save Storage Space Action · derives from UBlueprintAsyncActionBase · #include "Nodes/RollySaveStorageSpaceAction.h"
The Rolly Save node Check Rolly Storage Space. Ends in Done on a later tick than the call.
URollySaveSubsystem
Rolly Save Subsystem · derives from UGameInstanceSubsystem · #include "Game/RollySaveSubsystem.h"
Saves and loads the game for one game instance. Bind On Save Finished and On Load Finished here; the Rolly Save nodes call it for you.
URollySaveThumbnailAction
Rolly Save Thumbnail Action · derives from UBlueprintAsyncActionBase · #include "Nodes/RollySaveThumbnailAction.h"
The Rolly Save node that gives a save’s picture: Load Rolly Slot Thumbnail. It ends in Success or Failure on a later tick than the call, and works on clients: each machine shows its own saves.
URollySaveThumbnailHoldLibrary
Rolly Save Thumbnail Hold Library · derives from UBlueprintFunctionLibrary · #include "Nodes/RollySaveThumbnailHoldLibrary.h"
The Rolly Save nodes for pictures that menus keep: Capture, Use and Release Rolly Thumbnail Hold, for a save menu of your own in split screen, where each player’s menu keeps the picture of that player’s view until its save. Capture Rolly Save Thumbnail keeps one picture for the next save instead, which both players’ menus would share.
URollySaveTimelineHandler
Timelines · derives from URollySaveEngineStateHandler · #include "EngineState/RollySaveTimelineHandler.h"
Saves each timeline of the actor’s Blueprint: its position, whether it plays or reverses, its play rate and looping, so a half-open door stays half-open after a load.
| Property | Type | Default | Description |
|---|---|---|---|
| Components | FRollySaveComponentFilter |
Which timelines save, by the name your Blueprint gives them, such as DoorTimeline. With every list empty, all of them. | |
| Run Update | bool |
true | After the position is set, run each timeline’s Update output once, so what it moves, such as a door, is where it was. Off: only the position is set; Update runs when the timeline next plays. |
| Fire Events | bool |
false | Fire the timeline’s event track keys between its start and the restored position, such as one that turns a light on halfway. Off: none fire. |
URollySaveTriggerComponent
Rolly Save Trigger · derives from UActorComponent · #include "Level/RollySaveTriggerComponent.h"
Saves when a player walks into its actor’s collision or your game calls Trigger: a checkpoint, an autosave, a save to a slot, or the slot screen. Add it to any actor with a Box, Sphere or Capsule Collision, such as a campfire or a bed. Acts on the server or in a standalone game.
| Property | Type | Default | Description |
|---|---|---|---|
Enabled (bEnabled) |
bool |
true | Off: it ignores entries and Trigger calls. Saved; Set Enabled changes it during play. |
| Action | ERollySaveTriggerAction |
Automatic | What it does when triggered. |
| Checkpoint Name | FName |
None | The name slot lists show for its checkpoints, such as Bridge; at most 128 characters. |
| Slot Name | FString |
empty | The slot it saves to, such as Slot 1. |
Slot Screen (SlotScreenMode) |
ERollySaveSlotScreenMode |
Save | Whether the slot screen opens to save, to load or to start a new game. |
| Ignore Minimum Gap | bool |
false | Autosave even when a save to storage happened within Minimum Gap in Project Settings, such as after a story moment. |
| Slot Location | FText |
empty | When filled in, saves from now on name this place in slot lists, as Set Slot Location does, its own save included, such as Old Bridge. |
| Trigger on Overlap | bool |
true | Trigger when an actor that Trigger By allows enters its shape. Off: only Trigger calls trigger it, such as from your interaction system. |
| Trigger By | ERollySaveTriggerBy |
Players | Who can trigger it, by walking in or through Trigger. |
| Players | ERollySaveTriggerPlayers |
Any Player | Which players. |
Triggers (TriggerMode) |
ERollySaveTriggerMode |
Each Entry | How often it triggers. |
| Cooldown | float |
0 | Entries and Trigger calls this soon after it triggered are ignored. Counts game time: pauses stop it. At least 0. |
| Filter | FRollySaveActorFilter |
Only actors that pass trigger it; for players and pawns, the pawn is checked. A list with entries must pass; empty lists let every actor pass. Maps limits the maps where it acts. | |
| Except | FRollySaveActorFilter |
Actors that any entry matches never trigger it; for players and pawns, the pawn is checked. Maps lists maps where it does not act. | |
| Trigger on Appear | bool |
false | Off: an actor already inside when the map begins play, placed inside by a load, or spawned inside, such as at a respawn, does not trigger it until it leaves and enters again. On: it triggers once the map has begun play, the load has finished, or the frame after the spawn. |
| Shapes | TArray<FComponentReference> |
empty | The collision components of its actor that make its shape. Empty: every Box, Sphere and Capsule Collision and brush of the actor. |
Triggered (bTriggered) |
bool |
false | True once it triggered. Once and Once per Visit stop while it is true; Rearm clears it. Saved. |
URollySaveTriggerInterface
Rolly Save Trigger Interface · derives from UInterface, abstract · #include "Level/RollySaveTriggerInterface.h"
Lets an actor refuse its Rolly Save Triggers, such as a bonfire while enemies are near. Add it in Class Settings > Implemented Interfaces and return false from Can Trigger Rolly Save.
URollySaveWaitWorldReadyAction
Rolly Save Wait World Ready Action · derives from UBlueprintAsyncActionBase · #include "Nodes/RollySaveWaitWorldReadyAction.h"
The Wait for Rolly World Ready node.
RollySaveStateTree
URollySaveStateTreeHandler
StateTree · derives from URollySaveAIStateHandler · #include "RollySaveStateTreeHandler.h"
Saves the StateTree components of the actor and, for an AI pawn, of its AI controller: their parameters, whether each tree runs, and the states it is in, which it enters again after a load. Tasks start again.
| Property | Type | Default | Description |
|---|---|---|---|
| Components | FRollySaveComponentFilter |
Which StateTree components save. With every list empty, all of them. | |
Include AI Controller (bIncludeController) |
bool |
true | For a pawn, also save the StateTree components of its AI controller, such as a StateTree AI component; controllers never save themselves. |
| Save Parameters | bool |
true | Save each tree’s parameters and set them again after a load, marked as set on the component so the tree’s defaults do not replace them. A save holds those set on the component; a load puts every other one back to the tree’s default. |
| Save Active States | bool |
true | Save the states each running tree is in, linked trees included, and enter them again after a load; their tasks start again. Off: a restored tree starts at its root. |
| Spawn Missing Controller | bool |
true | Give a pawn that a load spawned again its AI Controller Class when its saved trees ran on its controller and it comes back without one. Off: the trees wait until your game possesses it. |
RollySaveGAS
URollySaveGASHandler
Gameplay Abilities · derives from URollySaveAIStateHandler · #include "RollySaveGASHandler.h"
Saves the actor’s Ability System Components: attribute base values, the abilities given to them, active gameplay effects with their remaining time, and loose gameplay tags, and sets them again after a load. Abilities active at the save do not resume.
| Property | Type | Default | Description |
|---|---|---|---|
| Components | FRollySaveComponentFilter |
Which Ability System Components of the actor save. With every list empty, all of them. | |
Include AI Controller (bIncludeController) |
bool |
true | For a pawn an AI controls, also save the Ability System Components of its AI controller and of that controller’s Player State, which never save themselves. A player’s Player State saves through a rule of its own. |
| Spawn Missing Controller | bool |
true | Give a pawn that a load spawned again its AI Controller Class when its saved state was on its controller and it comes back without one. Off: that state waits until your game possesses it. |
| Save Attributes | bool |
true | Save each attribute’s base value and set it again after a load. Current values follow from the base values and the restored effects. |
| Attributes | TArray<FGameplayAttribute> |
empty | Only these attributes. Empty: every attribute of every attribute set the component has. |
| Not Saved Attributes | TArray<FGameplayAttribute> |
empty | Attributes that never save, such as a Damage meta attribute. |
| Add Missing Attribute Sets | bool |
false | Add an attribute set the save holds values for when the component lacks it, such as one your game adds when an item is equipped. Off: those values are left out, with an Issues line. |
| Save Abilities | bool |
true | Save the abilities given to the component, with their level, input ID and source, and give them again after a load. Abilities an effect gives come back with that effect. |
| Not Saved Abilities | TArray<TSoftClassPtr<UGameplayAbility> > |
empty | Abilities your game gives itself after a load: never saved, matched or removed. |
| Not Saved Ability Tags | FGameplayTagContainer |
Abilities with any of these asset tags are treated as Not Saved Abilities. | |
| Save Ability Variables | bool |
true | Save the variables with SaveGame ticked on each ability’s instance, such as a combo counter, and set them again after a load. |
| Save Effects | bool |
true | Save the active gameplay effects that have a duration or are infinite: level, stacks, remaining time, Set By Caller values and who applied them, and apply them again after a load with their remaining time. |
| Not Saved Effects | TArray<TSoftClassPtr<UGameplayEffect> > |
empty | Effects your game applies itself after a load: never saved, matched or removed. |
| Not Saved Effect Tags | FGameplayTagContainer |
Effects with any of these asset tags are treated as Not Saved Effects. | |
| Save Loose Tags | bool |
true | Save the gameplay tags your game added to the component itself, with their counts. Tags from effects and active abilities come back with them; GameplayCue tags never save. |
| Loose Tags | FGameplayTagContainer |
Only these tags and their children. Empty: every loose tag. | |
| Not Saved Loose Tags | FGameplayTagContainer |
Loose tags that never save, with their children. | |
| Loose Tag Replication | ERollySaveGASTagReplication |
None | How restored loose tags replicate: None, as Add Loose Gameplay Tag does by default, or Count to Owner, as with Should Replicate. |
Not in the Save (Unsaved) |
ERollySaveGASUnsaved |
Remove in Place | What happens to abilities, effects and loose tags the component has and the save does not hold. Remove in Place: removed when the load keeps the current map or loads a part, kept on actors the load made fresh, so an ability an update gives at start stays. Remove: always removed. Keep: never removed. |
RollySaveUI
URollySaveLoadingOverlay
Rolly Save Loading Overlay · derives from URollySaveCoreUIUserWidget · #include "Feedback/RollySaveLoadingOverlay.h"
The loading overlay: covers every player’s view from a load’s start until its values are set, with the loaded save’s picture, a progress bar, its title and place in the middle, and Loading with a spinner in a corner. It draws above the Rolly screens and stays through the map change, where the window keeps the last frame.
Parts a Blueprint layout can provide (by name): Backdrop (Border), Picture (Image), ProgressBar (Rolly Progress Bar), TitleText and LocationText (Text Blocks), Spinner (Rolly Spinner), StatusText (Text Block).
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
Backdrop |
UBorder |
optional | The whole viewport in the Backdrop colour, opaque. |
Picture |
UImage |
optional | The loaded save’s picture, 40 % of the area’s width and at most 960 units; collapsed without one. |
ProgressBar |
URollySaveCoreUIProgressBar |
optional | The progress, the picture’s width, under it. |
TitleText |
UTextBlock |
optional | The save’s title, in the Title role. |
LocationText |
UTextBlock |
optional | The save’s place, in the Body role and Text Muted. |
Spinner |
URollySaveCoreUISpinner |
optional | Turns beside Loading in the corner while the load runs. |
StatusText |
UTextBlock |
optional | Loading, in the Caption role. |
URollySaveProfileRow
Rolly Save Profile Row · derives from URollySaveCoreUIRow · #include "Profiles/RollySaveProfileRow.h"
A row of the profiles panel: a named profile’s name and, at its trailing end, Active with a check for the player’s own, or another local player’s badge and In use (the row then shows unavailable). The New Profile row has a plus before its name. Accept, a click or a tap chooses the row.
Parts a Blueprint layout can provide (by name), besides the core row’s: StateIcon (Rolly Icon), StateBadge (Rolly Player Badge), StateText (Text Block), PlusIcon (Rolly Icon).
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
StateIcon |
URollySaveCoreUIIcon |
optional | The check of the active profile, in Control. |
StateBadge |
URollySaveCoreUIPlayerBadge |
optional | The badge of the player who uses the profile. |
StateText |
UTextBlock |
optional | Active or In use, in the Caption role. |
PlusIcon |
URollySaveCoreUIIcon |
optional | The plus before the New Profile row’s name. |
URollySaveProfilesScreen
Rolly Save Profiles Screen · derives from URollySaveCoreUIPanelScreen · #include "Profiles/RollySaveProfilesScreen.h"
The profiles panel (Open Rolly Profiles, the slot screen’s profile chip) of Named profile keys: the named profiles, the player’s own marked Active, another local player’s shown unavailable with their badge and In use, then New Profile (or, at Max Named Profiles, a line that says so). Choosing a profile offers Use This Profile, Rename and Delete; New Profile asks for a name and switches to it. Deleting a profile also deletes its saves while each profile sees only its own, and says so first.
Replace the layout with a Blueprint subclass (Project Settings > Plugins > Rolly Save Screens > Profiles Screen Class): widgets named like the parts are driven by the panel (TitleText, MessageText for the explainer, ProfileList, LimitText, PromptBar).
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
ProfileList |
UScrollBox |
optional | The rows’ list; it scrolls when the panel is full. |
LimitText |
UTextBlock |
optional | “8 of 8 profiles. Delete one to make another.”, in the Caption role and Text Muted. |
PromptBar |
URollySaveCoreUIPromptBar |
optional | Choose and Close. |
URollySaveSavingIndicator
Rolly Save Saving Indicator · derives from URollySaveCoreUIUserWidget · #include "Feedback/RollySaveSavingIndicator.h"
The saving indicator: a plate in a corner of the saving player’s part of the screen, inside the safe area, that says Saving with a turning spinner, then Saved with a check, and Loading with the spinner while Rolly Save holds the player for ground. It draws over every player’s view, above the Rolly screens, and stays across map changes; the spinner turns only while it shows.
Parts a Blueprint layout can provide (by name): Plate (Border), Spinner (Rolly Spinner), DoneIcon (Rolly Icon), StatusText (Text Block).
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
Plate |
UBorder |
optional | The plate: Surface at 90 %, the large radius, 48 high. |
Spinner |
URollySaveCoreUISpinner |
optional | Turns while saving, in Accent; stands still as a partial ring with Reduce Motion. |
DoneIcon |
URollySaveCoreUIIcon |
optional | The check once saved, in Success. |
StatusText |
UTextBlock |
optional | Saving, then Saved, or Loading, in the Caption role. |
URollySaveSlotRow
Rolly Save Slot Row · derives from URollySaveCoreUIRow · #include "Screens/RollySaveSlotRow.h"
A row of the slot screen: the save’s picture with its kind on the corner, its title on one line (an ellipsis cuts a long one), pills (Run, Ended, Imported, NG+ 2, a profile) and fields (place, play time) under it, and the save time at the trailing end. New, Empty, Import rows and a numbered slot another profile’s save takes show a placeholder and their words. An unavailable row (a newer version’s save, an ended run, saving blocked) keeps focus so its reason is read; while its own work runs, a spinner and the word take the save time’s place. Accept, a double click or a tap on the focused row chooses it.
Parts a Blueprint layout can provide (by name), besides the core row’s (BusySpinner, LeadingPicture and the others): KindPlate (Border), KindIcon (Rolly Icon), Pills (Horizontal Box), TimeText (Text Block).
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
KindPlate |
UBorder |
optional | The plate at the picture’s bottom-left that holds the kind’s icon, in Surface Raised at 90 %. |
KindIcon |
URollySaveCoreUIIcon |
optional | The kind’s icon: a bolt for a quick save, the autosave mark, a flag for a checkpoint, a heart for a run’s save. |
Pills |
UHorizontalBox |
optional | The pills before the fields under the title. |
TimeText |
UTextBlock |
optional | The save time, in the Caption role, at the trailing end of the title’s line. |
URollySaveSlotScreen
Rolly Save Slot Screen · derives from URollySaveCoreUICategoryScreen · #include "Screens/RollySaveSlotScreen.h"
The slot screen: a player’s saves to save over, load, start a new game in or import, laid out in the Rolly layout the theme or Project Settings > Plugins > Rolly Save Core UI pick. Rows show each save’s picture, title, place, play time and save time; the detail shows the large picture and the facts. One list by default (no category navigation), or groups by kind or by profile.
Gamepad and keyboard: Accept saves, loads, continues or starts; X (F2) renames, or opens More while Copy or Export is on and on a run that goes on; Y (Delete) deletes after a question; RT (S) changes the order; LT (P) opens the profiles panel with Named profile keys; the right stick button (Ctrl+F) searches from Search From saves; B (Escape) goes back. A click focuses a row and a double click acts; a tap focuses and a tap on the focused row acts. Questions ask before anything that cannot be undone, and an answer acts only while its row still shows the save the question named.
Open it with Open Rolly Slot Screen, or let Save Points and Request Slot Screen open it. Replace the layout with a Blueprint subclass (Project Settings > Plugins > Rolly Save Screens > Slot Screen Class): widgets named like the parts are driven by the screen (the category screen’s, plus SortChip and ProfileChip), and rows come from Slot Row Class.
| Property | Type | Default | Description |
|---|---|---|---|
| Rename Keys | TArray<FKey> |
Gamepad Face Button Left, F2 | Keys that rename the focused save, or open More while Copy or Export is on: X and F2. A keyboard letter keeps its place on other layouts. |
| Delete Keys | TArray<FKey> |
Gamepad Face Button Top, Del | Keys that delete the focused save after a question: Y and Delete. |
| Sort Keys | TArray<FKey> |
Gamepad Right Trigger (Digital), S | Keys that change the order: the right trigger and S. |
| Profile Keys | TArray<FKey> |
Gamepad Left Trigger (Digital), P | Keys that open the profiles panel with Named profile keys: the left trigger and P. |
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
SortChip |
URollySaveCoreUIChip |
optional | Changes the order (the right trigger, S); shows the order’s words. Hidden where the list cannot be sorted. |
ProfileChip |
URollySaveCoreUIChip |
optional | Opens the profiles panel (the left trigger, P); shows the player’s profile. With Named profile keys in Load and New Game only. |
URollySaveUILibrary
Rolly Save UI Library · derives from UBlueprintFunctionLibrary · #include "RollySaveUILibrary.h"
The nodes that open and close Rolly Save’s slot screen and profiles panel, and preview the saving indicator.
URollySaveUISubsystem
Rolly Save UI Subsystem · derives from UGameInstanceSubsystem · #include "RollySaveUISubsystem.h"
Rolly Save’s screens for one game instance: it opens the slot screen when Save Points or Request Slot Screen ask (Show Slot Screen), and shows the saving indicator, notices and loading overlay as the game saves, loads and holds its players. Each piece is a class of its own that this subsystem hands the game’s events to. Not on dedicated servers.
RollySaveCore
URollySaveCoreInputDeviceSubsystem
Rolly Save Core Input Device Subsystem · derives from ULocalPlayerSubsystem · #include "Input/RollySaveCoreInputDeviceSubsystem.h"
Which input method one local player uses right now (keyboard and mouse, gamepad or touch) and which gamepad family its button prompts show. Every Rolly system reads it, so prompts, glyphs, the cursor and mouse hover follow the device the player holds.
A Slate input pre-processor feeds the player’s tracker (FRollySaveCoreInputDeviceTracker) and consumes nothing. A stick that drifts at rest never switches to the gamepad (Project Settings > Plugins > Rolly Save Core > Gamepad Analog Switch Threshold), and device names map to families through the Device Families table there. A game or a player setting can force a family (Set Gamepad Family Override), for pads the engine cannot identify.
RollySaveCoreUI
URollySaveCoreUIBackdrop
Rolly Backdrop · derives from URollySaveCoreUICanvasWidget · #include "Widgets/RollySaveCoreUIBackdrop.h"
The layer behind a screen, over the game: the theme’s Backdrop colour, its optional vertical gradient (Backdrop Gradient To), vignette and blur (Backdrop Blur, with the backdrop at 90 % where blur cannot run). It takes the pointer, so clicks never reach the game below. Transparent parts draw nothing. A plain widget: it never ticks.
| Property | Type | Default | Description |
|---|---|---|---|
| Mode | ERollySaveCoreUIBackdropMode |
Full | How the backdrop covers the game. |
| Edge Side | ERollySaveCoreUIDrawerSide |
Right | Edge mode: the side the panel is docked to; the backdrop is darkest there. |
| Edge Extent | float |
0 | Edge mode: how far the docked panel reaches in from its side (its width and margin); the fade starts there. At least 0. |
URollySaveCoreUIButton
Rolly Button · derives from URollySaveCoreUIUserWidget · #include "Components/RollySaveCoreUIButton.h"
A button every input method works: it takes focus, Accept (the confirm face button, Enter, Space) presses it on key down, a click or tap presses it, and a pointer moving over it gives it focus while the player uses keyboard and mouse. Four variants: Primary (the Accent fill, for the main answer; keep one per screen), Secondary (outlined), Danger (outlined in the Danger colour, for destructive answers) and Quiet (no fill or outline). Focus shows the theme’s focus style; a pressed button shrinks a little. An optional icon sits before the label (a back arrow). While busy (Set Busy) it says “Working” beside a spinner and ignores presses.
| Property | Type | Default | Description |
|---|---|---|---|
| Label | FText |
empty | What the button says. |
| Variant | ERollySaveCoreUIButtonVariant |
Secondary | How the button looks. |
| Icon | ERollySaveCoreUIIcon |
None | An icon before the label (None: no icon), in the label’s colour. |
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
Box |
USizeBox |
optional | Keeps the button at least the Control Height high and the minimum button width wide. |
Background |
UBorder |
optional | The button’s face: its variant’s fill and outline, the hover and focus fills. |
FocusFrame |
URollySaveCoreUIFocusFrame |
optional | The focus indicator (outside the fill of a Primary button, on the edge of the others). |
LabelText |
UTextBlock |
optional | The label, in the Button text role. |
IconImage |
URollySaveCoreUIIcon |
optional | The icon before the label; collapsed without one. |
BusySpinner |
URollySaveCoreUISpinner |
optional | Turns while the button is busy; collapsed otherwise. |
URollySaveCoreUICanvasWidget
Rolly Save Core UICanvas Widget · derives from UWidget, abstract · #include "Widgets/RollySaveCoreUICanvasWidget.h"
Base of the plain Rolly widgets drawn in code (dividers, focus frames, progress bars, switches, sliders): a UMG widget over one Slate leaf that never ticks. Subclasses keep their state and hand the leaf a desired size and a painter whenever the state or the theme changes.
URollySaveCoreUICardTemplate
Rolly Save Core UICard Template · derives from URollySaveCoreUITemplate, abstract · #include "Templates/RollySaveCoreUICardTemplate.h"
The shared shape of the Centered Panel and the Side Drawer: everything in one raised card over the game, top to bottom an overline, the switcher, a hairline, the list, the detail strip and the prompts. A screen with one category that hides its navigation (Hide Single Category) shows its title in the Title role in the switcher’s place, without the overline. The subclasses place and size the card.
URollySaveCoreUICategoryNav
Rolly Save Core UICategory Nav · derives from URollySaveCoreUIUserWidget, abstract · #include "Navigation/RollySaveCoreUICategoryNav.h"
The base of the category navigations of the layout templates: tabs, the side rail, the switcher and the hub tiles. It holds the categories and the selected one and tells its owner what the player did; the owner decides what shows. Set Selected Category only moves the highlight and fires nothing.
- On Category Chosen: the player picked a category (a click, a tap, a switch key or a chevron). Show it.
- On Category Focused: focus moved onto a category inside the navigation (a rail item, a tile).
- On Category Opened: the player went into a category (Accept or Right on a rail item, Accept on a tile).
Subclass it for a navigation of your own; the category screen drives it through this interface.
URollySaveCoreUICategoryScreen
Rolly Save Core UICategory Screen · derives from URollySaveCoreUIScreen, abstract · #include "Screens/RollySaveCoreUICategoryScreen.h"
A screen of categories of rows, laid out in the layout template the theme or Project Settings name: a settings screen, and later a codex, a controls list, an options page. The screen builds its parts (title, category navigation, list, detail, footer) and puts them into the template’s named slots; the template arranges them for the area and says how they behave (Get Traits). Switching the template at run time keeps the category, the focused row and its level, and scrolls that row into view.
What it does for every product:
-
Categories: tabs, a side rail, a switcher or hub tiles, per template; the previous and next category keys (the shoulder buttons, Q and E) from any level; a click or tap on a tab, rail item, chevron or tile.
-
Levels: two-level templates (the rail, the hub) open on the categories; Accept (or Right on the rail) goes into the list and Back comes out of it. Back at the top level closes the screen, asking first while changes wait for Apply.
-
Focus memory: each category remembers its focused row for the session; the list keeps focus in view.
-
Detail: the focused row’s title, description, preview and facts, as a panel, a strip or a band.
-
Footer: the count of changes waiting for Apply and prompts that follow the player’s device, dropping the least important ones when the footer runs out of room.
-
Search: an entry in the header (the right stick button, Ctrl+F, a click or a tap) finds rows across categories by what the player types, on the on-screen keyboard for gamepad and touch players; results are the real rows, editable in place, and Accept goes to a row in its category.
-
Products add footer prompts of their own (Collect Product Prompts), chips in the header that answer their keys (a Rolly Chip among the header’s actions), a line in the list’s place (Set List Message) and a texture as the detail’s preview.
A product derives from it and supplies the data: its categories (Collect Categories), a category’s rows (Build Rows), the focused row’s detail (Collect Detail), its searchable rows (Collect Search Entries, Build Search Row) and what Apply, Revert, Reset and Discard do. A Blueprint subclass with a designer layout of its own keeps working without a template: parts are bound by name and parts left out turn their feature off.
| Property | Type | Default | Description |
|---|---|---|---|
| Previous Tab Keys | TArray<FKey> |
Gamepad Left Shoulder, Q | Keys that show the previous category (at either level of a two-level layout). The built-in letters follow the keyboard layout by place (FRollySaveCoreUIDefaultKeys); a list you set stays as set. |
| Next Tab Keys | TArray<FKey> |
Gamepad Right Shoulder, E | Keys that show the next category. |
| Apply Keys | TArray<FKey> |
Gamepad Face Button Left, F | Keys that apply the changes waiting for Apply. |
| Revert Keys | TArray<FKey> |
Gamepad Special Left, Backspace | Keys that drop the changes waiting for Apply. |
| Reset Keys | TArray<FKey> |
Gamepad Face Button Top, R | Keys that reset the category’s values to their defaults (after a question). |
| Close Keys | TArray<FKey> |
Gamepad Special Right | Keys that close the screen from any level, like Back at the top (asking first when changes wait for Apply). |
| Search Keys | TArray<FKey> |
Gamepad Right Thumbstick Button, F | Keys that open search: gamepad keys as they are; a keyboard key needs Ctrl held (Ctrl+F), so it never clashes with a letter shortcut. |
| Search Mode | ERollySaveCoreUISearchMode |
Auto | Search: Auto shows the entry while the screen has two or more categories and 20 or more searchable rows; On and Off force it. |
| Screen Title | FText |
empty | The screen’s name, shown as its title (“Settings”). |
| Ask Before Discarding | bool |
true | Ask before closing drops changes that wait for Apply. |
| Hide Single Category | bool |
false | With one category, show no category navigation and no Category prompt, with one level in every layout: the Side Rail shows no rail, the Couch Hub opens on the page, and the Centered Panel and the Side Drawer show the title in the switcher’s place. Off, one category shows as any number does. |
| Show Accept on Unavailable Rows | bool |
false | A row that cannot act now shows its Accept prompt dimmed, with the row’s own label, so the player sees what Accept does once it can. Off, such a row leaves the Accept prompt’s place empty. |
| List Message Busy Delay | float |
0.25 | How long a busy list message (Set List Message) waits before it shows, in seconds, so a quick read never flashes. From 0 to 5. |
| Preview Aspect Ratio | float |
1.77778 | The detail’s preview picture’s width over its height (16:9 by default; 4:3 or 1:1 for pictures of that shape). A product’s texture is cut from its middle to it. Held to 1 to 4: a square is the tallest picture the detail panel holds above its facts at 1920 x 1080, so a portrait picture (3:4, 9:16) shows its middle square. The Couch Hub’s column shows a picture taller than its page smaller, whole. From 1 to 4. |
| Tab Class | TSubclassOf<URollySaveCoreUITab> |
None | The tabs of the tab strip. Empty: the tab strip’s own (Rolly Tab). |
| Rail Item Class | TSubclassOf<URollySaveCoreUIRailItem> |
None | The items of the side rail. Empty: the rail’s own (Rolly Rail Item). |
| Tile Class | TSubclassOf<URollySaveCoreUITile> |
None | The tiles of the couch hub. Empty: the hub’s own (Rolly Tile). |
| Prompt Class | TSubclassOf<URollySaveCoreUIPrompt> |
None | The prompts of the prompt bar. Empty: the prompt bar’s own (Rolly Prompt). |
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
Backdrop |
UWidget |
optional | The layer behind the screen, over the game (a Rolly Backdrop; a Border in a Blueprint layout gets the Backdrop colour). It takes the pointer. |
TitleText |
UTextBlock |
optional | The screen’s title (or, on a page of the couch hub, the category’s name). |
NoticeText |
UTextBlock |
optional | Shown while an applied change needs a restart, in the Caption role and the Warning colour. |
NoticeIcon |
URollySaveCoreUIIcon |
optional | The restart icon in front of the notice, in the Warning colour; shown with it. |
PlayerBadge |
URollySaveCoreUIPlayerBadge |
optional | “P1” to “P4” while more than one local player exists. |
TouchBackButton |
URollySaveCoreUIButton |
optional | Back for touch players, and the “All settings” link of the couch hub’s pages. |
TabStrip |
URollySaveCoreUITabStrip |
optional | Tabs across the top (the Tabs layout). |
RailList |
URollySaveCoreUIRail |
optional | The side rail (the Side Rail layout). |
CategorySwitcher |
URollySaveCoreUISwitcher |
optional | The category switcher (the Centered Panel and Side Drawer layouts, the couch hub’s pages, narrow rails). |
HubTiles |
URollySaveCoreUITiles |
optional | The couch hub’s category tiles. |
CategoryTitle |
UTextBlock |
optional | The category’s name above the list (the side rail). |
ListPanel |
UBorder |
optional | The Border around the list: Surface, the large radius and a hairline in Outline (clear on a card). |
ContentList |
UScrollBox |
optional | The Scroll Box the screen fills with rows (a product may name it otherwise, Get List Part Name). |
ListMessage |
URollySaveCoreUIListMessageWidget |
optional | The line in the list’s place (Set List Message), over the list inside its panel; the list hides while it shows. |
DescriptionPanel |
UBorder |
optional | The Border of the detail: a panel (Surface) or a strip or band (Surface Raised). |
DescriptionTitle |
UTextBlock |
optional | The focused row’s name in full, in the Title role (panels and bands). |
DescriptionText |
UTextBlock |
optional | The focused row’s description, in the Body role (panels and bands). |
DescriptionLine |
URollySaveCoreUIInlineText |
optional | The strip’s line: the title in bold running into the description. |
DescriptionPreview |
UImage |
optional | The focused setting’s preview picture (at Preview Aspect Ratio), when it has one. |
DescriptionPlaceholder |
UBorder |
optional | Surface Sunken in the preview’s place while the detail has no picture but a Preview Icon (a thumbnail not read yet). |
DescriptionPlaceholderIcon |
URollySaveCoreUIIcon |
optional | The placeholder’s icon (the detail’s Preview Icon), centred, 40 units in Text Muted. |
DescriptionStatus |
UPanelWidget |
optional | The panel the screen fills with the facts, a line each with its icon. A Vertical Box works. |
PendingCounter |
UWidget |
optional | Shown while values wait for Apply (a Pending dot and the counter text). |
PendingCounterText |
UTextBlock |
optional | “2 changes to apply”, in the Caption role. |
PromptBar |
URollySaveCoreUIPromptBar |
optional | The prompts of the footer; they follow the player’s device and drop by priority when the footer is full. |
HeaderActions |
UHorizontalBox |
optional | The header’s actions: product widgets (a profile chip), then the search entry at the trailing end. |
SearchEntry |
URollySaveCoreUIButton |
optional | The search entry as a 40-unit icon button (centered panel, side drawer, Tiny widths). |
SearchField |
URollySaveCoreUITextField |
optional | The search field: the entry in Tabs, the side rail and the couch hub, and where typing happens everywhere. |
SearchCount |
UTextBlock |
optional | The count line above the results (“12 results”), in the Caption role (not focusable). |
SearchMessage |
UTextBlock |
optional | The empty and no-match message, in the Body role. |
SearchRule |
UTextBlock |
optional | The matching rule under the message, in the Caption role and Text Muted. |
SearchHint |
UTextBlock |
optional | “Try fewer words.” for a query of two or more words without a match. |
Keyboard |
URollySaveCoreUIKeyboard |
optional | The on-screen keyboard for gamepad and touch players (the template’s Keyboard slot). |
URollySaveCoreUIChip
Rolly Chip · derives from URollySaveCoreUIUserWidget · #include "Components/RollySaveCoreUIChip.h"
A header control that shows a choice and the key that changes it: an icon, a label (the sort order, the profile’s name) and the key of the player’s device (none for touch). Its key, a click or a tap fire On Chip Activated once. It keeps the width of its widest label, so it never moves as the label changes; a label wider than Max Label Width ends with an ellipsis. Compact shows the icon and the key only. Among a category screen’s header actions it answers its keys from anywhere on the screen. It takes no focus unless Set Chip Focusable says so (a layout whose header is reached by moving focus); focused, Accept activates it.
Parts a Blueprint layout can provide (by name): Background (Border), FocusFrame (Rolly Focus Frame), Icon (Rolly Icon), LabelText (Text Block), KeyGlyph (Rolly Glyph).
| Property | Type | Default | Description |
|---|---|---|---|
| Chip Icon | ERollySaveCoreUIIcon |
None | The icon before the label (None: no icon). |
| Label | FText |
empty | What the chip shows now (“Newest first”, a profile’s name). |
| Reserved Labels | TArray<FText> |
empty | Every label the chip can show: it keeps the width of the widest (up to Max Label Width), so it never moves. |
| Action Name | FText |
empty | What the chip does, in a word, for narration (“Sort”): its hint and its line read it before the label. |
| Gamepad Key | FKey |
None | The key that activates it while the player uses a gamepad, shown in the pad’s family (none: no key). |
| Keyboard Key | FKey |
None | The key that activates it while the player uses keyboard and mouse. |
| Max Label Width | float |
240 | The widest the label gets before it ends with an ellipsis, in units at Standard density. From 40 to 1000. |
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
Background |
UBorder |
optional | The chip’s face: the control height, the small radius and a 1-unit outline in Outline Strong; Hover Fill under the pointer. |
FocusFrame |
URollySaveCoreUIFocusFrame |
optional | The focus indicator, while the chip is focusable and has focus. |
Icon |
URollySaveCoreUIIcon |
optional | The icon, 24 units in Text. |
LabelText |
UTextBlock |
optional | The label, in the Caption role; one line, an ellipsis past Max Label Width. |
KeyGlyph |
URollySaveCoreUIGlyph |
optional | The key of the player’s device. |
URollySaveCoreUIChoiceDialog
Rolly Choice Dialog · derives from URollySaveCoreUIPanelScreen · #include "Screens/RollySaveCoreUIChoiceDialog.h"
A question with any number of answers, as buttons in a row (right-aligned, wrapping when narrow; three answers take the wider panel) or in a column (a list of actions). Back answers the cancel answer. The core’s dialog has a confirm and a cancel button only; this one serves the questions that need more (Keep as Ended, Delete, Cancel) and lists of actions on a row.
URollySaveCoreUIDialog
Rolly Save Core UIDialog · derives from URollySaveCoreUIScreen · #include "Screens/RollySaveCoreUIDialog.h"
A question with a confirm and a cancel button over the screen below (dimmed by the Scrim, inactive). The safe answer (cancel) comes first and has focus unless the options say otherwise; Back answers it. An optional countdown answers by itself when it runs out, in real time (it keeps counting while the game is paused), with the seconds left in words and a bar that empties over the full time.
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
Backdrop |
UBorder |
optional | Over the whole area behind the panel, in the Scrim colour. It takes the clicks that would reach the screen below. |
Panel |
UBorder |
optional | The dialog’s panel, in Surface Raised with the large radius. |
TitleText |
UTextBlock |
optional | The heading, in the Title text role. |
MessageText |
UTextBlock |
optional | The question, in the Body text role; collapsed when there is none. |
CountdownText |
UTextBlock |
optional | The seconds left, in the Caption role and the Accent colour; collapsed without a countdown. |
CountdownBar |
URollySaveCoreUIProgressBar |
optional | The countdown bar: the time left over the full time; collapsed without a countdown. |
ConfirmButton |
URollySaveCoreUIButton |
optional | The confirm button; it answers Confirmed. |
CancelButton |
URollySaveCoreUIButton |
optional | The cancel button, the safe answer: first, and focused unless the options focus the confirm button; it answers Cancelled, like Back. |
URollySaveCoreUIDivider
Rolly Divider · derives from URollySaveCoreUICanvasWidget · #include "Widgets/RollySaveCoreUIDivider.h"
A hairline in the Outline colour role between parts of a screen, horizontal or vertical.
| Property | Type | Default | Description |
|---|---|---|---|
| Orientation | EOrientation |
Horizontal | Horizontal: a line across; vertical: a line down. |
| Color Role | ERollySaveCoreUIColorRole |
Outline | The line’s colour role. |
URollySaveCoreUIDots
Rolly Save Core UIDots · derives from URollySaveCoreUICanvasWidget · #include "Widgets/RollySaveCoreUIDots.h"
A row of small dots, one per item, the current one in its own colour: a stepper’s options (Control) or a switcher’s categories (Accent). Other dots are Outline Strong, so the current one reads by position and shape of the row as well as colour. A plain widget: it never ticks.
URollySaveCoreUIDrawerTemplate
Rolly Side Drawer Template · derives from URollySaveCoreUICardTemplate · #include "Templates/RollySaveCoreUIDrawerTemplate.h"
The Side Drawer layout: a drawer 560 wide docked to the right (or left) edge, 24 units in, full height, over a backdrop that only darkens the game near it, so the game stays visible and keeps running (it never pauses). Inside: the overline, the switcher, the list (its rows stack), the detail strip and the prompts. Regular areas keep it at most 45 % of the width, Narrow ones make it max(480, 50 %), Tiny widths full width. In split screen it docks to the outer edge of the player’s part of the screen, and dialogs over it centre in the drawer.
URollySaveCoreUIEdgeFade
Rolly Edge Fade · derives from UContentWidget · #include "Widgets/RollySaveCoreUIEdgeFade.h"
Fades the edges of the Scroll Box it holds where more content continues: a gradient from the colour of what lies under the scroll box to transparent, so a cut-off tab or row reads as “there is more”. The fades follow the scroll position as it is drawn, without ticking. Rolly Lists fade their own edges; wrap other scroll boxes (a row of tabs) in this. A plain widget.
| Property | Type | Default | Description |
|---|---|---|---|
| Fade Role | ERollySaveCoreUIColorRole |
Surface | The colour role of what lies under the scroll box: the fades blend into it. |
| Fade Length | float |
24 | How far each fade reaches into the scroll box, at Standard density. From 0 to 256. |
URollySaveCoreUIEditableText
Rolly Save Core UIEditable Text · derives from UWidget · #include "Widgets/RollySaveCoreUIEditableText.h"
The line a physical keyboard types into, inside a Rolly Text Field: the engine’s editable text (with the platform’s input method editor for languages typed through one), without its blinking caret, which the field replaces with a still one. The field drives it; layouts rarely need it on its own.
URollySaveCoreUIFocusFrame
Rolly Focus Frame · derives from URollySaveCoreUICanvasWidget · #include "Widgets/RollySaveCoreUIFocusFrame.h"
Draws the theme’s focus indicator around the widget it covers (a layer over the element): a ring in the Focus colour that follows the element’s corners (the Ember default, and always in high contrast), a bar at the leading edge, or four corner brackets. The Fill style is drawn by the element itself (its background turns Accent). Shown only while the element has focus.
| Property | Type | Default | Description |
|---|---|---|---|
| Radius | ERollySaveCoreUIRadius |
Medium | The corner radius role of the element the frame surrounds. |
| Gap | float |
0 | Space between the element and the ring (Standard density units); 0 draws the ring on the element’s edge. From 0 to 16. |
URollySaveCoreUIGlyph
Rolly Glyph · derives from UWidget · #include "Glyphs/RollySaveCoreUIGlyph.h"
A key or gamepad button drawn as a cap: keyboard keys and mouse buttons as rounded keys, face buttons as circles (Xbox and Nintendo letters, the PlayStation shapes drawn), shoulders, triggers and system buttons as pills, directions as drawn icons. Labels use the KeyCap text role. The theme’s Glyph Overrides replace single keys. A keyboard key prints what it types on the keyboard layout in use and follows a layout change. A plain widget: it never ticks.
| Property | Type | Default | Description |
|---|---|---|---|
| Key | FKey |
None | The key or button. |
| Family | ERollySaveCoreUIGlyphFamily |
Xbox | The family whose buttons gamepad keys show as (keyboard and mouse keys ignore it). |
| Outlined | bool |
false | Draw an outline in Outline Strong around the cap (the key cells of a key list). |
URollySaveCoreUIHost
Rolly Save Core UIHost · derives from URollySaveCoreUIUserWidget · #include "Screens/RollySaveCoreUIHost.h"
Holds one local player’s screens, one above the other. While a menu screen is open it keeps the player’s input away from the game: keys and sticks the screens do not use stop here instead of reaching the game, and the pointer cannot click through. It also catches Back when focus fell back to it, and tells the stack when something removed it from the screen (a map change, Remove All Widgets), so the stack can close and put input back.
Its toast layer shows the player’s toasts above the screens, also while no screen is open.
While menu narration speaks through the player’s screen reader, the host hides its screens from that screen reader, so the screen reader does not read each focused element a second time beside the narration’s lines.
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
ScreenLayer |
UOverlay |
optional | The screens, bottom to top. |
InputBlocker |
UBorder |
optional | Under the screens: catches the pointer while a menu screen is open. |
ToastLayer |
URollySaveCoreUIToastLayer |
optional | Above the screens: the player’s toasts. |
URollySaveCoreUIHubTemplate
Rolly Couch Hub Template · derives from URollySaveCoreUITemplate · #include "Templates/RollySaveCoreUIHubTemplate.h"
The Couch Hub layout: big targets and big type (Large density by default). Two levels, one at a time: the hub, a grid of category tiles with live summaries (4, 3 or 2 columns by width, a list on Tiny widths), and a page per category with an “All settings” link, the category’s name, the previous and next keys with “1 / 7”, the list, a preview column on Wide areas and a description band above the prompts. Accept on a tile opens its page; Back returns to the tile.
A page shorter than a Tall area at its density (800 units at Standard, 1040 at Large) is compact, so its list keeps room for rows: the category’s name in the Title role (the “All settings” link only for touch), a band of one line without facts, one line of prompts and half the gaps between them. On Tiny heights a page also drops its title (the switcher keeps the position), shows a strip instead of the band, lays its rows on the backdrop without a panel, drops the option dots, keeps a quarter of the gaps and names Back “Back”, so a stacked row still shows whole.
A screen with one category that hides its navigation (Hide Single Category) has no hub level: its page opens with the screen’s title and without the “All settings” link, the position or the keys, and Back closes the screen.
URollySaveCoreUIIcon
Rolly Icon · derives from UWidget · #include "Icons/RollySaveCoreUIIcon.h"
An icon drawn in code (chevrons, check, close, arrows, info, warning, lock, restart, the PlayStation shapes, the directional pad and sticks) in a colour role. A plain widget: it never ticks. The theme’s Icon Overrides can replace any icon with your own brush.
| Property | Type | Default | Description |
|---|---|---|---|
| Icon | ERollySaveCoreUIIcon |
None | What the icon shows. |
| Color Role | ERollySaveCoreUIColorRole |
Text | The colour role. |
| Size | float |
0 | Width and height at Standard density; 0 uses the theme’s Icon Size. From 0 to 256. |
| Color Opacity | float |
1 | Multiplies the colour’s opacity (a dimmed part). From 0 to 1. |
URollySaveCoreUIInlineText
Rolly Save Core UIInline Text · derives from UWidget · #include "Widgets/RollySaveCoreUIInlineText.h"
A title in bold that runs on into its text, in the Body role: “Music Raises or lowers the soundtrack.” The detail strip of narrow layouts uses it, limited to one or two lines that end with an ellipsis; the full text shows elsewhere. Markup characters in the text are shown as they are. A plain widget: it never ticks.
URollySaveCoreUIKeyboard
Rolly Keyboard · derives from URollySaveCoreUIUserWidget · #include "Widgets/RollySaveCoreUIKeyboard.h"
The on-screen keyboard for players without a physical keyboard (a gamepad, or touch on a computer). Its letter rows follow the interface language (Rolly Save Core UI Keyboard Layouts), with the digits on top and the function keys at the bottom. It types into a Rolly Text Field.
- Gamepad: the directional pad and the stick move between keys (no wrapping; between rows of different lengths to the nearest key), A types, X deletes (held, it repeats after 400 ms, then every 80 ms), Y types a space, LT is Shift (names), B ends typing (Set Done Button picks another button, which the Done key then shows).
- Mouse and touch: click or tap a key (touch on release).
- Keys are 64 x 56 units, 8 apart; a narrow area narrows them (never under 44, the gap then 4), and Tiny heights make them 44 high.
Parts a Blueprint layout can provide (by name): Panel (Border), KeyRows (Vertical Box the character rows go into), FunctionRow (Horizontal Box the function keys go into).
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
Panel |
UBorder |
optional | The keyboard’s panel: Surface Raised, the large radius, 16 units of padding. |
KeyRows |
UVerticalBox |
optional | The rows of character keys, each a Horizontal Box the keyboard fills. |
FunctionRow |
UHorizontalBox |
optional | The function keys. |
URollySaveCoreUIKeyboardKey
Rolly Save Core UIKeyboard Key · derives from URollySaveCoreUIUserWidget · #include "Widgets/RollySaveCoreUIKeyboardKey.h"
One key of the Rolly Keyboard: a character, or a function (Space, Delete, Clear, Done, Shift) with its word and, when it has room, the gamepad button that does it anywhere on the keyboard. Accept, a click or a tap (on release) presses it. The keyboard lays the keys out and moves focus between them.
Parts a Blueprint layout can provide (by name): Background (Border), FocusFrame, LabelText (Text Block), Glyph (Rolly Glyph).
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
Background |
UBorder |
optional | The key’s face: Surface with an outline in Outline Strong; Accent while a Shift key is on. |
FocusFrame |
URollySaveCoreUIFocusFrame |
optional | The focus indicator. |
LabelText |
UTextBlock |
optional | The character (Label role) or the function’s word (Caption role). |
Glyph |
URollySaveCoreUIGlyph |
optional | The gamepad button that does a function key’s work (Y for Space), when the key has room for it. |
URollySaveCoreUILibrary
Rolly Save Core UILibrary · derives from UBlueprintFunctionLibrary · #include "RollySaveCoreUILibrary.h"
Blueprint nodes that open and close Rolly screens for a player (the player of the given player controller; a split-screen game passes each player’s own). They reach the player’s screen stack, which manages focus, input, the cursor and the pause.
URollySaveCoreUIList
Rolly List · derives from UScrollBox · #include "Widgets/RollySaveCoreUIList.h"
A vertical list of rows styled by the theme: a thin scroll thumb in Surface Sunken (Text Muted under the pointer, Control while dragged) that shows only when the list overflows, no edge shadows but a 24-unit fade at each edge where more rows continue, and focus that stays in view with a row to spare above and below where the list is tall enough (focus the pointer gives only with Project Settings > Rolly Save Core UI > Scroll Lists on Hover). A fade never covers the focused row, so its focus ring shows whole even in a list one row tall. It scrolls to the focused row with an animation, or jumps there with reduced motion. The list itself never takes focus; its rows do.
| Property | Type | Default | Description |
|---|---|---|---|
| Fade Role | ERollySaveCoreUIColorRole |
Surface | The colour role of the panel under the list: the edge fades blend into it. |
URollySaveCoreUIListMessageWidget
Rolly List Message · derives from URollySaveCoreUIUserWidget · #include "Components/RollySaveCoreUIListMessage.h"
Shows a list message (Set Message) centred in the place it is given, in the Body role and Text Muted: an icon or, while busy, a spinner before the text, and an optional button under it; a long text wraps within the place’s width. A busy message waits Busy Delay before it shows; one that takes the place of a message already shown shows at once. A category screen puts one over its list (Set List Message); any screen can use one for a list of its own.
Parts a Blueprint layout can provide (by name): Spinner (Rolly Spinner), MessageIcon (Rolly Icon), MessageText (Text Block), ActionButton (Rolly Button).
| Property | Type | Default | Description |
|---|---|---|---|
| Busy Delay | float |
0.25 | How long a busy message waits before it shows, in seconds of real time, so a quick read never flashes (0: at once). From 0 to 5. |
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
Spinner |
URollySaveCoreUISpinner |
optional | Turns before the text while the message is busy. |
MessageIcon |
URollySaveCoreUIIcon |
optional | The message’s icon, 24 units in Text Muted; collapsed without one. |
MessageText |
UTextBlock |
optional | The text, in the Body role and Text Muted; it wraps. |
ActionButton |
URollySaveCoreUIButton |
optional | The button under the text (Primary); collapsed without an Action Label. |
URollySaveCoreUINameDialog
Rolly Name Dialog · derives from URollySaveCoreUIPanelScreen · #include "Screens/RollySaveCoreUINameDialog.h"
A question for a short text (a profile’s name, a save’s title): a text field with its counter and error line, the on-screen keyboard for gamepad and touch players (keys narrowed to the panel), then Cancel and the confirm button.
- A physical keyboard types into the field with the text selected; a pad or a finger types on the keyboard, whose name mode capitalizes the first letter and each one after a space (Shift flips the next one).
- Errors from the validator show under the field as the player types (“Type a name.”); while one shows, the confirm button is dimmed, and Enter, Done or Accept on it play the Error sound and say the error.
- Enter, the keyboard’s Done key (the menu button on a pad) and the confirm button confirm. Escape and B cancel, except while a dialog that starts on Confirm is typing: there they end the typing, keep the text and go back to the confirm button.
- Control characters, brackets and quotes never type, and the text never grows past its longest. Languages typed without keys (Chinese, Japanese, Korean) show “Connect a keyboard to type.” to a pad player instead of the keyboard.
- Tiny areas drop the title, and so do areas under 800 units high while the on-screen keyboard shows.
Parts a Blueprint layout can provide (by name), besides the panel’s: NameField (Rolly Text Field), Keyboard (Rolly Keyboard), NoKeyboardText (Text Block), CancelButton and ConfirmButton (Rolly Buttons).
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
NameField |
URollySaveCoreUITextField |
optional | The text field (Rolly Text Field). |
Keyboard |
URollySaveCoreUIKeyboard |
optional | The on-screen keyboard (Rolly Keyboard), in name mode. |
NoKeyboardText |
UTextBlock |
optional | “Connect a keyboard to type.”, in the Caption role and Text Muted. |
CancelButton |
URollySaveCoreUIButton |
optional | Cancel (Rolly Button): closes without a change. |
ConfirmButton |
URollySaveCoreUIButton |
optional | The confirm button (Rolly Button, Primary): dimmed while the text has an error. |
URollySaveCoreUINarrationProvider
Rolly Save Core UINarration Provider · derives from UObject, abstract · #include "Narration/RollySaveCoreUINarrationProvider.h"
The game’s own voice for menu narration: recorded lines, a speech engine of your own, a platform service. Make a Blueprint subclass, implement Speak, Stop and Is Speaking, and name it in Project Settings > Rolly Save Core UI > Narration Provider Class. Narration then offers it as the Game Voice and picks it under Auto when no screen reader runs and no Windows voice or engine speech exists. One provider serves every local player of the game.
| Property | Type | Default | Description |
|---|---|---|---|
| Has Rate | bool |
true | The provider follows the player’s narration speed (Narration Speed shows for it). |
| Has Volume | bool |
true | The provider follows the player’s narration volume (Menu Narration Volume shows for it). |
URollySaveCoreUINarrationSubsystem
Rolly Save Core UINarration Subsystem · derives from UGameInstanceSubsystem · #include "Narration/RollySaveCoreUINarrationSubsystem.h"
Menu narration for every Rolly screen of the game: it reads what the player focuses, values as they change, screens and dialogs as they open, and messages, through one voice for the whole game. The player’s choices (on or off, voice, speed, volume, Full or Brief) are the shared narration console variables, so every installed Rolly product follows them; a product’s player settings write them, and so can a game (Rolly Save Core Accessibility). While the screen reader speaks the lines, each player’s host hides its screens from it, so nothing is read twice.
Voices, picked by the choice (Auto takes the first that works here):
- Screen Reader: the player’s own screen reader (Narrator, NVDA, JAWS, VoiceOver), with its voice and speed.
- Windows Voice: an installed Windows voice played through the game’s audio (Windows).
- Built-in Voice: the engine’s Text To Speech plugin, while the project enables it.
- Game Voice: the project’s own provider (Project Settings > Rolly Save Core UI > Narration Provider Class).
Players repeat the focused item, or stop the voice, with the left stick button, Ctrl+Space (Ctrl alone stops), the middle mouse button or a two-finger tap, on any Rolly screen while narration is on.
URollySaveCoreUIPanelScreen
Rolly Panel Screen · derives from URollySaveCoreUIScreen, abstract · #include "Screens/RollySaveCoreUIPanelScreen.h"
A dialog-width panel over the Scrim, centred in the player’s part of the screen (in the drawer over a side drawer), with a title and an optional message: the base of panels and questions over a screen (a profiles panel, the choice and name dialogs). The screen below stays visible, dimmed.
Width: the theme’s Dialog Width (Wider Panel Width for a question with three answers), never wider than the area less 48 units (24 on short narrow areas); on tiny areas it fills the area less the tiny margins. Height: never taller than the area less the same margins; a list a subclass adds with a filling slot scrolls inside.
Parts a Blueprint layout can provide (by name): Backdrop (Border), Panel (Border), TitleText and MessageText (Text Blocks).
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
Backdrop |
UBorder |
optional | Over the whole area behind the panel, in the Scrim colour; it takes the pointer, so nothing below is clicked. |
Panel |
UBorder |
optional | The panel, in Surface Raised with the large radius. |
TitleText |
UTextBlock |
optional | The heading, in the Title role. |
MessageText |
UTextBlock |
optional | The sentence under the heading, in the Body role and Text Muted; collapsed while empty. |
URollySaveCoreUIPanelTemplate
Rolly Centered Panel Template · derives from URollySaveCoreUICardTemplate · #include "Templates/RollySaveCoreUIPanelTemplate.h"
The Centered Panel layout: a card 880 wide in the middle of a dimmed game, 85 % of the area tall and at most 820, the same for every category (the list scrolls inside, and a short category leaves room above the detail strip): the overline, the switcher with position dots, the list, the detail strip and the prompts. One level. Narrow areas give the card all but 24 units a side, Tiny widths all but 12; short areas make it all but 24 units tall with a lower switcher.
URollySaveCoreUIPlayerBadge
Rolly Save Core UIPlayer Badge · derives from URollySaveCoreUICanvasWidget · #include "Widgets/RollySaveCoreUIPlayerBadge.h"
Says whose screen this is in split screen: “P1” to “P4” on the player’s colour (the theme’s Player Colours), a pill 28 units high. The number is always there, so colour is never the only cue. Screens show it while more than one local player exists. A plain widget: it never ticks.
URollySaveCoreUIPointerButton
Rolly Pointer Button · derives from UButton · #include "Widgets/RollySaveCoreUIPointerButton.h"
A button only the pointer presses (mouse or touch): it never takes focus, so the row or control around it keeps focus and gamepads and keyboards reach the same action through it (left, right, Accept). Used for the chevrons of a stepper and the key cells of a key list. It shows the theme’s Hover Fill under the pointer and Focus Fill while pressed, in a radius role.
| Property | Type | Default | Description |
|---|---|---|---|
| Radius | ERollySaveCoreUIRadius |
Small | The corner radius role of the hover and press fills. |
| Content Padding | FMargin |
0, 0, 0, 0 | Space around the content, at Standard density. |
URollySaveCoreUIPortal
Rolly Portal · derives from UWidget · #include "Widgets/RollySaveCoreUIPortal.h"
Draws another widget here without moving it in the widget tree (the widget lives on a Rolly Shelf): a layout shows a part in one place or another, or in a template’s named slot, and the part keeps its Slate widgets and their state (scroll position, focus, running motion). A widget is drawn by one portal at a time: pointing a portal at a widget another portal draws takes it from there.
URollySaveCoreUIProgressBar
Rolly Progress Bar · derives from URollySaveCoreUICanvasWidget · #include "Widgets/RollySaveCoreUIProgressBar.h"
A thin bar that fills from the left: countdowns, timeouts, progress. A Surface Sunken track with an Accent fill by default, rounded at both ends. A plain widget: it never ticks; its owner sets the fraction.
| Property | Type | Default | Description |
|---|---|---|---|
| Fraction | float |
1 | How much of the bar is filled, 0 to 1. From 0 to 1. |
| Track Role | ERollySaveCoreUIColorRole |
Surface Sunken | The track’s colour role. |
| Fill Role | ERollySaveCoreUIColorRole |
Accent | The fill’s colour role. |
| Thickness | float |
4 | The bar’s height at Standard density. From 1 to 32. |
URollySaveCoreUIProgressRing
Rolly Progress Ring · derives from URollySaveCoreUICanvasWidget · #include "Widgets/RollySaveCoreUIProgressRing.h"
A ring that fills clockwise from the top: hold prompts, cooldowns, progress the player caused. An Outline track and an Accent fill, 3 units thick by default. A plain widget: it never ticks; its owner sets the fraction (the fill is information, so it moves with reduced motion too).
| Property | Type | Default | Description |
|---|---|---|---|
| Fraction | float |
0 | How much of the ring is filled, 0 to 1. From 0 to 1. |
| Size | float |
0 | Width and height at Standard density; 0 uses the theme’s Icon Size Large. From 0 to 512. |
| Track Role | ERollySaveCoreUIColorRole |
Outline | The track’s colour role. |
| Fill Role | ERollySaveCoreUIColorRole |
Accent | The fill’s colour role. |
URollySaveCoreUIPrompt
Rolly Prompt · derives from URollySaveCoreUIUserWidget · #include "Components/RollySaveCoreUIPrompt.h"
A button prompt: the key or button of an action and what it does (“A Select”), in the device family the player uses; an action with a pair of keys shows both (“LB RB Category”). A click or tap does the same as the key, so a footer of prompts doubles as pointer buttons. An unavailable prompt stays in place, dimmed, so players learn the controls and the footer does not jump. While the player uses touch it becomes a labelled button without keys.
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
Background |
UBorder |
optional | The prompt’s face: the Hover Fill under the pointer while it is available. |
Glyph |
URollySaveCoreUIGlyph |
optional | The key or button of the action. |
SecondGlyph |
URollySaveCoreUIGlyph |
optional | The second key of a pair; collapsed without one. |
LabelText |
UTextBlock |
optional | What the key does, in the Caption text role. |
URollySaveCoreUIPromptBar
Rolly Prompt Bar · derives from URollySaveCoreUIUserWidget · #include "Components/RollySaveCoreUIPromptBar.h"
The prompt bar of a screen’s footer: a Rolly Prompt per entry, in the order given (Back last), 24 units apart, right-aligned, wrapping to a second line when the area is narrow. Given the width it may use (Set Available Width), it wraps at that width and, when the prompts still need more lines than it may use, drops the prompts of lowest priority first (never those marked Always Shown). Each prompt keeps the width of its widest Reserved Label, and an entry marked Keep Place holds its place while its label is empty, so a screen that lists every prompt it uses keeps each prompt where it is. It follows the owning player’s device on its own: keyboard keys for keyboard and mouse, the buttons of the player’s gamepad family for a pad, labelled buttons without keys for touch. A click or tap on an available prompt fires On Prompt Clicked with the prompt’s Id, so the bar doubles as pointer buttons.
Give it prompts with Set Prompts whenever what they say or allow changes; prompts that keep their Id keep their widget, so the pointer’s hover and the bar’s layout stay calm.
| Property | Type | Default | Description |
|---|---|---|---|
| Prompt Class | TSubclassOf<URollySaveCoreUIPrompt> |
None | The class of the prompts. Empty: Rolly Prompt. Set it before the first Set Prompts. |
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
PromptPanel |
UPanelWidget |
optional | The panel the bar fills with prompts. A Wrap Box (the default) wraps them onto a second line when narrow. |
URollySaveCoreUIRail
Rolly Rail · derives from URollySaveCoreUICategoryNav · #include "Navigation/RollySaveCoreUIRail.h"
The side rail of the Side Rail layout: every category in a column, the selected one marked with a bar. The rail is the first of two levels: while it has focus, up and down move between categories (wrapping with the theme’s Wrap Navigation) and the owner shows the focused one once focus rests; Accept or Right goes into the list (On Category Opened). A click selects a category; hovering never does. It scrolls when the categories do not fit.
| Property | Type | Default | Description |
|---|---|---|---|
| Item Class | TSubclassOf<URollySaveCoreUIRailItem> |
None | The class of the items. Empty: Rolly Rail Item. Set it before Set Categories. |
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
ItemList |
UScrollBox |
optional | A vertical Scroll Box around the items: the rail keeps the selected item in view. |
ItemPanel |
UPanelWidget |
optional | The panel the rail fills with an item per category, for example a Vertical Box. |
URollySaveCoreUIRailItem
Rolly Rail Item · derives from URollySaveCoreUIUserWidget · #include "Navigation/RollySaveCoreUIRailItem.h"
A category of the side rail: its icon and name in the Tab role, wrapping to two lines. The selected category has a Surface Raised fill and an Accent bar at its leading edge; the focused one also shows the theme’s focus style; a category with changes waiting for Apply shows a Pending dot at its trailing edge. It takes focus while the rail has it: up and down move between items (wrapping with the theme’s Wrap Navigation), Accept and Right go into the category, a click selects it. The pointer resting on it never selects it.
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
Background |
UBorder |
optional | The item’s face: Surface Raised while selected, the Hover Fill under the pointer, clear otherwise. |
SelectionBar |
UBorder |
optional | The Accent bar at the leading edge of the selected item. |
IconImage |
URollySaveCoreUIIcon |
optional | The category’s icon; collapsed without one. |
LabelText |
UTextBlock |
optional | The category’s name, in the Tab text role; it wraps to two lines. |
PendingDot |
URollySaveCoreUIIcon |
optional | A dot at the trailing edge while changes in the category wait for Apply. |
FocusFrame |
URollySaveCoreUIFocusFrame |
optional | The focus indicator while the item has focus. |
URollySaveCoreUIRailTemplate
Rolly Side Rail Template · derives from URollySaveCoreUITemplate · #include "Templates/RollySaveCoreUIRailTemplate.h"
The Side Rail layout: every category in a rail at the left, the list in the middle with the category’s name above it, the detail at the right, in a centred block at most 1976 wide. Two levels, both visible: focus opens in the rail, Accept or Right goes into the list, Back returns to the rail. Regular widths narrow the rail to 260 and move the detail under the list; Narrow widths turn the rail into a switcher over the list (one level). Short areas drop the title and use 48-unit rail items. A screen with one category that hides its navigation (Hide Single Category) shows no rail and has one level: the title over the list, and on Wide areas the list and the detail share the block.
URollySaveCoreUIRegion
Rolly Region · derives from UContentWidget · #include "Widgets/RollySaveCoreUIRegion.h"
The region a layout template lays its body out in: all the room it gets, at most Max Aspect times as wide as high and centred on wider screens (the backdrop fills the rest), and never smaller than Floor Size: in less room the body lays out at that size and is scaled down to fit, the only case where text gets smaller. It works from the room it really gets, inside the safe zone.
| Property | Type | Default | Description |
|---|---|---|---|
| Max Aspect | float |
0 | The widest aspect (width over height) the body lays out in; 0: any. 2.37 is 21:9. At least 0. |
| Floor Size | FVector2D |
640, 360 | Below this size the body keeps it and is scaled down to fit. |
URollySaveCoreUIRow
Rolly Save Core UIRow · derives from URollySaveCoreUIUserWidget, abstract · #include "Components/RollySaveCoreUIRow.h"
One line of a list: a name on the left, a value on the right. Rows take focus (up and down move between them); left and right change the value by one step; Accept (the confirm face button, Enter, Space) does the row’s action; a click or tap on the row acts when it is released over the row. A press that moves more than 12 units first is a drag: it scrolls the list and changes nothing, and rows never capture the pointer on a press, so a finger can scroll a list of rows. Moving the pointer over a row focuses it while the player uses keyboard and mouse; a cursor at rest never does.
States, each told apart by shape or icon as well as colour: hover (the Hover Fill), focus (the theme’s focus style: in Ember a ring and the Focus Fill; hidden while the player uses touch), unavailable (Text Disabled and a lock after the name, no hover fill; it stays focusable so its reason can be read), pending (a dot in the leading space), restart needed and error (an icon after the name). A preview draws its current row focused without it holding focus (Set Shown As Focused).
Narrow lists stack their rows: the name on top, the control below across the row. Kinds whose control stays beside the name (a switch) say so with Can Stack.
Busy (Get Row Busy Text): while the row’s own work runs (a save, a delete), a spinner and the busy text take the value’s place and the row refuses Accept, steps, clicks and taps. A leading picture (Set Leading Picture: a save’s thumbnail) sits before the name at Leading Picture Size, with a placeholder until the texture comes; the row never changes height when it does. The busy and picture parts of the default layout are made the first time a row needs them.
Subclass it for a kind of value: build the value widget in BuildValueWidget, draw it in RefreshValue and ApplyValueStyle, and answer HandleStep, HandleAccept, HandleRowClicked and HandleRowTapped. Parts a Blueprint layout can provide (by name): Background (Border), FocusFrame (Rolly Focus Frame), PendingDot and StatusIcon (Rolly Icons), NameText (Text Block), ValueBox (Size Box that holds the value widgets), BusySpinner (Rolly Spinner), BusyText (Text Block), LeadingPicture (Image), LeadingPlaceholder (Border) and LeadingPictureIcon (Rolly Icon).
| Property | Type | Default | Description |
|---|---|---|---|
| Leading Picture Size | FVector2D |
96, 54 | The leading picture’s size (Set Leading Picture) in units at Standard density, 96 x 54 (16:9) by default; a texture is cut from its middle to this shape, so 72 x 54 suits 4:3 pictures and 54 x 54 square ones. From 8 to 512. |
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
Background |
UBorder |
optional | The row’s face: the Hover Fill under the pointer, the Focus Fill while it has focus, clear otherwise. |
FocusFrame |
URollySaveCoreUIFocusFrame |
optional | The focus indicator on the row’s edge. |
PendingDot |
URollySaveCoreUIIcon |
optional | A dot in the leading space while the row’s value waits for Apply. |
NameText |
UTextBlock |
optional | The name, in the Label text role; it wraps to two lines, then ends with an ellipsis. |
CaptionText |
UTextBlock |
optional | The line under the name (Get Row Caption), in the Caption role and Text Muted, one line with an ellipsis; collapsed while empty. |
StatusIcon |
URollySaveCoreUIIcon |
optional | The lock of an unavailable row, or the restart or error icon (Get Row Notice). |
ValueBox |
USizeBox |
optional | The box at the right that holds the value widgets; the theme’s Value Width sets its width. |
BusySpinner |
URollySaveCoreUISpinner |
optional | Turns in the value’s place while the row is busy (Get Row Busy Text). |
BusyText |
UTextBlock |
optional | The busy text beside the spinner, in the Caption role. |
LeadingPicture |
UImage |
optional | The leading picture (Set Leading Picture), with the small radius; at 45 % opacity while the row is unavailable. |
LeadingPlaceholder |
UBorder |
optional | Surface Sunken under the leading picture: what shows until its texture comes. |
LeadingPictureIcon |
URollySaveCoreUIIcon |
optional | The placeholder’s icon, 24 units in Text Muted, centred. |
URollySaveCoreUIScreen
Rolly Save Core UIScreen · derives from URollySaveCoreUIUserWidget, abstract · #include "Screens/RollySaveCoreUIScreen.h"
A screen on a local player’s screen stack (Rolly Save Core UI Stack Subsystem): a product’s screens (the settings screen), dialogs, and screens of your own (make a Blueprint subclass and open it with Push Rolly Screen). The stack shows the top screen, gives it focus and the player’s input, handles Back, pauses when the screen asks for it and puts input back when the last screen closes, whichever way it closes.
Back (Escape, the gamepad’s back face button) closes the screen by default; override On Back to ask first or to refuse. Focus goes to the widget Get Focus Target names (the layout’s Desired Focus Widget, else the screen). A screen fades in and rises a little when it opens (no movement with reduced motion).
| Property | Type | Default | Description |
|---|---|---|---|
| Input Mode | ERollySaveCoreUIScreenInput |
Menu | Menu: the game gets none of the player’s input while the screen is open. Overlay: the game keeps its input. |
| Pause Game | bool |
false | Pause the game while the screen is open (standalone games only; see Project Settings > Rolly Save Core UI > Pausing). |
| Keep Screen Below Visible | bool |
false | Keep the screen below visible, dimmed and inactive (a dialog). Otherwise the screen below is hidden until this one closes. |
| Show Mouse Cursor | bool |
true | Show the mouse cursor while the screen is open (it still hides while the player uses a gamepad). |
| Show Above Game Widgets | bool |
false | Show the player’s screens above every widget the game adds to the viewport (a main menu, a HUD), in the player’s part of the screen, while this screen is open: for a screen that must come first, such as a first-start setup. The screens then sit at Project Settings > Rolly Save Core UI > Above Game Z Order. A presenter of your own (Set Presenter, Set Host Panel) decides where screens go and ignores it. |
URollySaveCoreUIShadow
Rolly Shadow · derives from UContentWidget · #include "Widgets/RollySaveCoreUIShadow.h"
A soft shadow under what it holds (a card, a drawer, a dialog, a toast), in the theme’s Shadow Colour, drawn from a texture made in code. Wrap the panel in it: the shadow reaches outside the panel’s bounds without taking room. High contrast draws no shadow (panels get outlines instead). A plain widget: it never ticks.
Elevation levels: 0 and 1 draw nothing (rows, panels on a backdrop); 2 is for dialogs, cards and drawers over the game; 3 for toasts and popups.
| Property | Type | Default | Description |
|---|---|---|---|
| Elevation | int32 |
2 | How high the content floats: 2 for dialogs, cards and drawers, 3 for toasts and popups; 0 and 1 draw no shadow. From 0 to 3. |
URollySaveCoreUISharedSubsystem
Rolly Save Core UIShared Subsystem · derives from UGameInstanceSubsystem · #include "Stack/RollySaveCoreUISharedSubsystem.h"
What the screen stacks of all local players share: the game’s input while screens are open (an input handler you can replace) and the pause. One per game instance, never on a dedicated server. The players’ stacks (Rolly Save Core UI Stack Subsystem) use it; games rarely need it directly.
URollySaveCoreUIShelf
Rolly Shelf · derives from UPanelWidget · #include "Widgets/RollySaveCoreUIShelf.h"
Keeps widgets in a widget tree without drawing them: they stay bound by name, alive and found by Find Widget, while Rolly Portals draw them wherever a layout wants them (a template’s slot, one of two places).
Why: moving a widget from one panel to another makes UMG release its Slate widgets, and when something still holds them at that moment (the input event that caused the move holds the focused widget’s path) the widget is left without its Slate objects and stops updating. A widget on a shelf never changes panel; portals move only what is drawn, and the widget keeps its state (scroll position, focus, running motion).
URollySaveCoreUIShowDialogAction
Rolly Save Core UIShow Dialog Action · derives from UBlueprintAsyncActionBase · #include "RollySaveCoreUILibrary.h"
Shows a dialog and waits for the answer: Confirmed or Cancelled fires once (Back and a close from outside count as Cancelled).
URollySaveCoreUISlider
Rolly Slider · derives from URollySaveCoreUICanvasWidget · #include "Widgets/RollySaveCoreUISlider.h"
The track of a slider value: a thin pill track, a Control fill from the minimum (or from zero for a range across zero) and a round knob; while its row has focus the knob gets a ring in the Focus colour. The pointer drags it (the whole height the row gives it is the hit area). A plain visual: it never takes focus, and the row around it owns the keys and turns track positions into values.
URollySaveCoreUISpinner
Rolly Spinner · derives from URollySaveCoreUICanvasWidget · #include "Widgets/RollySaveCoreUISpinner.h"
Shows that something the player started is running (Auto-Detect, a save): a quarter arc turning once a second. With reduced motion it stands still as a partial ring; say “Working” beside it (Rolly Button’s busy state does). It animates only while it is shown, through a Slate active timer that a hidden or collapsed spinner does not keep, so it costs nothing until shown. A plain widget: it never ticks.
| Property | Type | Default | Description |
|---|---|---|---|
| Color Role | ERollySaveCoreUIColorRole |
Accent | The arc’s colour role. |
| Size | float |
0 | Width and height at Standard density; 0 uses the theme’s Icon Size. From 0 to 256. |
URollySaveCoreUIStackSubsystem
Rolly Save Core UIStack Subsystem · derives from ULocalPlayerSubsystem · #include "Stack/RollySaveCoreUIStackSubsystem.h"
One local player’s screen stack: the screens the player has open, one above the other. Get it with Get Rolly Screen Stack from a player controller, or use the Rolly Save Core UI nodes (Push Rolly Screen, Show Rolly Dialog and the others).
- Push, Pop, Replace, Close and Back work on the stack; Back asks the top screen first.
- The top screen has focus and the player’s input. Screens below are hidden, or dimmed behind a dialog. Split-screen players each have their own stack in their part of the screen.
- When the first screen opens, the game’s input and the cursor are recorded; when the last one closes they come back, whichever way it closed: Back, a close call, a map change, the widgets being removed, the player leaving (the input handler of the Rolly Save Core UI Shared Subsystem decides the details).
- Screens that ask for it pause a standalone game (never a networked one).
- A map change or the widgets being removed close every screen; On External Close tells products first, so a question that must outlive the screens (the settings’ keep-or-revert) can step aside without answering.
URollySaveCoreUISurface
Rolly Surface · derives from UBorder · #include "Widgets/RollySaveCoreUISurface.h"
A panel styled by the theme: a fill colour role, a corner radius role and an optional outline, drawn in code (no texture). It restyles by itself when the theme changes, and in high contrast every filled surface gets a 2-unit outline. Use it for panels, cards, plates and backdrops; the Brush of the border is overwritten by the roles.
| Property | Type | Default | Description |
|---|---|---|---|
| Filled | bool |
true | Draw the fill (off: only the outline, if any). |
| Fill Role | ERollySaveCoreUIColorRole |
Surface | The fill’s colour role. |
| Fill Opacity | float |
1 | Multiplies the fill’s opacity (a drawer at 96 % over the game). From 0 to 1. |
| Radius | ERollySaveCoreUIRadius |
Large | The corner radius role. |
| Outlined | bool |
false | Draw an outline. |
| Outline Role | ERollySaveCoreUIColorRole |
Outline | The outline’s colour role. |
| Control Outline | bool |
false | Use the theme’s control outline width (key cells, secondary buttons) instead of the hairline width. |
URollySaveCoreUISwitch
Rolly Switch · derives from URollySaveCoreUICanvasWidget · #include "Widgets/RollySaveCoreUISwitch.h"
The switch of an on/off value: a pill track with a round knob. On: a Control track with an On Accent knob at the right; off: a Surface Sunken track with a Text knob at the left. The knob slides in Duration Fast (it jumps with reduced motion). A plain visual: the row around it owns focus and input.
URollySaveCoreUISwitcher
Rolly Switcher · derives from URollySaveCoreUICategoryNav · #include "Navigation/RollySaveCoreUISwitcher.h"
Shows one category at a time and switches to the previous or next one: the switch keys of the player’s device at the ends, chevrons either side of the category’s name in the Title role, and a dot per category below (the current one Accent), or “3 / 14” past twelve categories. The chevrons are clickable and tappable; the owner switches with its keys through Choose Category. It never takes focus, so the list below keeps it. Height 72, 56 in short areas.
| Property | Type | Default | Description |
|---|---|---|---|
| Switcher Style | ERollySaveCoreUISwitcherStyle |
Full | How the switcher shows the current category. |
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
PreviousGlyph |
URollySaveCoreUIGlyph |
optional | The key that shows the previous category, for the player’s device. |
NextGlyph |
URollySaveCoreUIGlyph |
optional | The key that shows the next category, for the player’s device. |
PreviousButton |
URollySaveCoreUIPointerButton |
optional | The chevron before the name: the previous category, for the pointer. |
NextButton |
URollySaveCoreUIPointerButton |
optional | The chevron after the name: the next category, for the pointer. |
NameText |
UTextBlock |
optional | The current category’s name, in the Title role; it ends with an ellipsis when too long. |
PositionText |
UTextBlock |
optional | “3 / 14”, in the Caption role: past twelve categories, and in the Position style. |
PositionDots |
URollySaveCoreUIDots |
optional | A dot per category, the current one Accent (up to twelve). |
URollySaveCoreUITab
Rolly Tab · derives from URollySaveCoreUIUserWidget · #include "Navigation/RollySaveCoreUITab.h"
A tab of a tab bar: a category’s name in the Tab text role, Text Muted until it is the selected one, which turns Text with an Accent underline (a shape as well as a colour). Tabs never take focus, so up and down stay in the list; they change with their screen’s keys (the shoulder buttons, Q and E), a click or a tap.
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
LabelText |
UTextBlock |
optional | The name, in the Tab text role: Text Muted, Text while selected or under the pointer. |
Underline |
UBorder |
optional | The Accent underline of the selected tab (clear on the others). |
URollySaveCoreUITabStrip
Rolly Tab Strip · derives from URollySaveCoreUICategoryNav · #include "Navigation/RollySaveCoreUITabStrip.h"
A strip of tabs: a Rolly Tab per category, the selected one underlined, and the keys that switch tabs (the shoulder buttons, Q and E) at both ends, drawn for the owning player’s device. When the tabs do not fit, they scroll sideways, keep the selected tab in view with room to spare and fade out at an edge where more tabs continue, while the keys stay at the ends.
Tabs never take focus, so up and down stay in the owner’s list. The owner switches tabs with its keys (Select Previous Tab, Select Next Tab); the player can also click or tap a tab. Both fire On Tab Selected (and On Category Chosen), and the owner answers by showing that tab’s content. Set Selected Tab only moves the highlight.
When TabScroll (or TabFade around it) sits in a Horizontal Box, the strip sizes it to its tabs while they fit and lets it shrink and scroll when they do not; it applies that rule whenever it is built or its properties are synchronised, so a Blueprint layout keeps it.
| Property | Type | Default | Description |
|---|---|---|---|
| Tab Class | TSubclassOf<URollySaveCoreUITab> |
None | The class of the tabs. Empty: Rolly Tab. Set it before Set Tabs. |
| Previous Tab Keys | TArray<FKey> |
Gamepad Left Shoulder, Q | Keys that switch to the previous tab; the strip shows the first one of the device in use. |
| Next Tab Keys | TArray<FKey> |
Gamepad Right Shoulder, E | Keys that switch to the next tab; the strip shows the first one of the device in use. |
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
TabScroll |
UScrollBox |
optional | A horizontal Scroll Box around the tabs: the strip scrolls it to keep the selected tab in view. |
TabBar |
UPanelWidget |
optional | The panel the strip fills with a tab per name, for example a Horizontal Box. |
PreviousTabGlyph |
URollySaveCoreUIGlyph |
optional | The key that shows the previous tab, for the player’s device; hidden with fewer than two tabs. |
NextTabGlyph |
URollySaveCoreUIGlyph |
optional | The key that shows the next tab, for the player’s device; hidden with fewer than two tabs. |
TabFade |
URollySaveCoreUIEdgeFade |
optional | Fades the scrolling tabs out at an edge where more continue (48 units, into the backdrop). |
URollySaveCoreUITabsTemplate
Rolly Tabs Template · derives from URollySaveCoreUITemplate · #include "Templates/RollySaveCoreUITabsTemplate.h"
The Tabs layout: everything at once. A centred column at most 1640 wide: the title and restart notice, tabs across the top over a hairline, the list with the detail panel at its right (a strip under the list below 1600 units), and the footer. One level: focus stays in the list. Short areas drop the title; Tiny heights get lower tabs; Narrow widths give the value 45 % of a row. A screen with one category that hides its navigation (Hide Single Category) shows no tab row: the body starts 24 below the title line. The default for new projects.
URollySaveCoreUITemplate
Rolly Save Core UITemplate · derives from URollySaveCoreUIUserWidget, abstract · #include "Templates/RollySaveCoreUITemplate.h"
A layout template: the arrangement of a category screen’s regions, as named slots the screen puts its parts into. Backdrop covers the whole area; everything else sits inside the safe zone, in a centred region at most 21:9 wide, laid out at 640 x 360 and scaled down below that floor. The slots: Backdrop, Header, Navigation, Content, Detail, Footer, and Preview (the Couch Hub’s preview column).
A template decides, per area and level, which navigation shows and how the detail, the title and the footer look (Get Traits), and arranges its slots (Arrange). Five ship: Tabs, Side Rail, Centered Panel, Couch Hub and Side Drawer, picked by id in Project Settings or the theme. Rearrange one in the UMG designer with a Blueprint subclass that places named slots of the same names (and adjusts in On Arrange), then pick it for its id in Project Settings > Rolly Save Core UI > Template Classes.
URollySaveCoreUIText
Rolly Text · derives from UTextBlock · #include "Widgets/RollySaveCoreUIText.h"
A text block styled by the theme: it takes its font, size, letter spacing, case and line height from a text role and its colour from a colour role, and restyles by itself when the theme, high contrast or the density change. Use it wherever a Rolly screen shows text; the Font and Color and Opacity of the text block are overwritten by the roles.
| Property | Type | Default | Description |
|---|---|---|---|
| Text Role | ERollySaveCoreUITextRole |
Body | The text role: font, size, tracking, case and line height from the theme. |
| Color Role | ERollySaveCoreUIColorRole |
Text | The colour role. |
| Color Opacity | float |
1 | Multiplies the colour’s opacity (a dimmed part). From 0 to 1. |
| Size Override | float |
0 | A size of its own at Standard density (Slate size, scaled with the density like the roles’ sizes); 0 keeps the role’s size. The role’s typeface stays. From 0 to 200. |
| Line Height Override | float |
0 | A line height of its own (a multiple of the font’s); 0 keeps the role’s. From 0 to 2.5. |
URollySaveCoreUITextField
Rolly Text Field · derives from URollySaveCoreUIUserWidget · #include "Widgets/RollySaveCoreUITextField.h"
A one-line text field in the Rolly look: a sunken box with an optional search icon, the text or a placeholder, a still caret while it is active, and at its trailing end the key that opens it (while empty and inactive) or a clear button. A physical keyboard types into it (with the platform’s input method editor), and the Rolly Keyboard types into it for gamepad and touch players. Search uses it; so can screens of your own (profile names, a seed, a filter).
States: default; hover (Hover Fill); focused (the theme’s focus style, where the field takes focus as an entry); active (typing: a 2-unit outline in Text and the caret, no focus ring); error (a 2-unit Danger outline and the error line under it). The caret does not blink.
Parts a Blueprint layout can provide (by name): Box (Border), FocusFrame, LeadingIcon (Rolly Icon), Editable (Rolly Editable Text), Placeholder (Text Block), Caret (Border), KeyGlyph, SecondKeyGlyph (Rolly Glyphs), ClearButton (Rolly Button), CounterText and ErrorText (Text Blocks).
| Property | Type | Default | Description |
|---|---|---|---|
| Field Name | FText |
empty | What the field is for, read by narration and shown while it is empty (“Search”). |
| Show Search Icon | bool |
false | Shows the search icon at the field’s leading end. |
| Max Length | int32 |
0 | The most characters the field takes (0: no limit); a counter “n / Max” shows under its trailing end. At least 0. |
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
Box |
UBorder |
optional | The field’s box: Surface Sunken with an outline in Outline Strong (Text while active, Danger with an error). |
FocusFrame |
URollySaveCoreUIFocusFrame |
optional | The focus indicator, while the field has focus as an entry. |
LeadingIcon |
URollySaveCoreUIIcon |
optional | The search icon at the leading end. |
Editable |
URollySaveCoreUIEditableText |
optional | The line a physical keyboard types into. |
Placeholder |
UTextBlock |
optional | The field’s name while it is empty, in Text Muted. |
Caret |
UBorder |
optional | The still caret: 2 units wide, the text’s height, in Text. |
KeyGlyph |
URollySaveCoreUIGlyph |
optional | The key that opens the field (a stick press, or Ctrl), while it is empty and inactive. |
SecondKeyGlyph |
URollySaveCoreUIGlyph |
optional | The second key of a keyboard chord (F of Ctrl+F). |
ClearButton |
URollySaveCoreUIButton |
optional | Empties the field; shown while it has text. |
CounterText |
UTextBlock |
optional | “n / Max” under the trailing end while Max Length is set. |
ErrorText |
UTextBlock |
optional | The error line under the field, in Danger. |
URollySaveCoreUITheme
Rolly Save Core UI Theme · derives from UDataAsset · #include "Theme/RollySaveCoreUITheme.h"
The Rolly UI theme: every colour, font, size, shape, motion and sound the Rolly widgets draw with. Widgets ask the theme for roles (Surface, Accent, the Title text role), never for literal values, so one asset restyles every screen of every Rolly product, live.
The class defaults are the Ember preset (Rolly Save Core UI Presets has the others): the brand palette (near-black 0F1012, off-white F0EFF2, orange FF6000), with the orange kept small (focus, primary actions, selection). To change the look, create a data asset of this class (Content Browser > Miscellaneous > Data Asset), edit its tokens and assign it in Project Settings > Plugins > Rolly Save Core UI > Theme; it is always cooked. Saving the asset checks it: contrast pairs, text sizes and focus width, each with its fix.
Token names are persistent and append only: new tokens can be added, none renamed or removed.
| Property | Type | Default | Description |
|---|---|---|---|
| Layout | FName |
Tabs | The layout template screens use unless their product’s Project Settings pick another: Tabs, Rail, Panel, Hub or Drawer. |
| Density | ERollySaveCoreUIDensity |
Auto | Text, spacing inside components and sizes: Compact (x0.9), Standard, Large (x1.3), or Auto (the layout’s own). |
| Source Preset | FName |
Ember | The preset this theme was made from. |
| Colors | FRollySaveCoreUIColors |
The colour roles. | |
| High Contrast Colors | FRollySaveCoreUIColors |
The colours used while High Contrast is on (7:1 for every pair). | |
| Display Font | UFont |
None | The font of the Display and Title roles. Empty: the engine’s built-in Roboto, always present in Shipping. |
| Primary Font | UFont |
None | The font of every other role. Empty: the built-in Roboto. |
| Mono Font | UFont |
None | The font of monospaced values. Empty: the built-in monospaced font. |
| Text Roles | FRollySaveCoreUITextRoles |
The ten text roles: typeface, size, tracking, case and line height. | |
| Sizes | FRollySaveCoreUISizes |
Spacing steps, component sizes and screen margins. | |
| Shape | FRollySaveCoreUIShape |
Corner radii, borders and focus. | |
| Elevation | FRollySaveCoreUIElevation |
Shadows and the backdrop. | |
| Motion | FRollySaveCoreUIMotion |
Durations, easings and distances. | |
| Sounds | FRollySaveCoreUISounds |
The interface sounds (none by default). | |
| Glyph Tints | bool |
false | Draw gamepad face buttons in their family colours (Xbox letters, PlayStation shapes). Off: every glyph in Key Cap Text. |
| Glyph Tint Colors | FRollySaveCoreUIGlyphTintColors |
The family colours Glyph Tints draws. A colour below 3:1 on Key Cap is never drawn (that glyph uses Key Cap Text). | |
| Glyph Overrides | TArray<FRollySaveCoreUIGlyphOverride> |
empty | Replaces how single keys or buttons are shown, per family (label, your own icon, round, tint). |
| Icon Overrides | TMap<ERollySaveCoreUIIcon,FSlateBrush> |
empty | Replaces built-in icons with brushes of your own (a texture or an SVG under your Content/Slate folder). |
| Behaviour | FRollySaveCoreUIBehaviour |
Navigation and timing. | |
| Player Colors | TArray<FLinearColor> |
#4C9BF0, #F2665C, #6CC24A, #F5C542 | The colours of split-screen player badges, players 1 to 4 (badges always carry the number too). |
| Player Badge Text | FLinearColor |
#0F1012 | The number on a player badge (“P2”), drawn on the player’s colour: dark, so it reads on all four. |
URollySaveCoreUIThemeAware
Rolly Theme Aware · derives from UInterface, abstract · #include "Theme/RollySaveCoreUIThemeListenerExtension.h"
For widgets of your own that follow the Rolly theme: add this interface in a Widget Blueprint’s Class Settings and call Listen To Rolly Theme once (in Event Pre Construct), and On Rolly Theme Changed runs whenever the theme, its contrast, density or motion change while the widget is on screen, and once more when it shows again after a change. Read the theme there with Get Rolly Theme Color and the other nodes.
URollySaveCoreUIThemeLibrary
Rolly Save Core UITheme Library · derives from UBlueprintFunctionLibrary · #include "Theme/RollySaveCoreUIThemeLibrary.h"
Blueprint nodes for widgets of your own that match the Rolly theme: read a colour, a font or the motion scale by role, make a surface brush, and listen for theme changes. Values follow high contrast and the density in effect.
URollySaveCoreUIThemeListenerExtension
Rolly Theme Listener · derives from UUserWidgetExtension · #include "Theme/RollySaveCoreUIThemeListenerExtension.h"
Lets any Widget Blueprint follow the Rolly theme without polling: while the widget is on screen it calls On Rolly Theme Changed on the widget (when the widget has the Rolly Theme Aware interface) and fires On Theme Changed, once per change. Add it with Listen To Rolly Theme. It never ticks.
URollySaveCoreUIThemeSubsystem
Rolly Save Core UITheme Subsystem · derives from UEngineSubsystem · #include "Theme/RollySaveCoreUIThemeSubsystem.h"
The theme every Rolly widget draws with, for all local players (one look, one layout, one density, one contrast, one motion setting). It resolves the theme of Project Settings > Plugins > Rolly Save Core UI: by default the theme every installed Rolly product shares (rolly.ui.theme while it is set, else the project’s [RollyUI] Theme, else the built-in Ember), another product’s theme copied through the reflection bridge. It raises one event when anything changes: another theme or preset, an edit of the theme asset in the editor (Play In Editor restyles live), another layout or density, high contrast on or off, reduced motion on or off. Every Rolly widget listens and restyles itself without rebuilding; screens built on templates move into the new template.
High contrast and reduced motion follow the Rolly accessibility preferences (Rolly Save Core Accessibility), which live in the shared console variables rolly.ui.contrast and rolly.ui.motion, so every installed product follows them.
Previews (the editor’s theme preview, thumbnails) set a preview look for the object at their top: widgets under it draw with that look, the rest keep the game’s.
URollySaveCoreUITile
Rolly Tile · derives from URollySaveCoreUIUserWidget · #include "Navigation/RollySaveCoreUITile.h"
A category of the Couch Hub: a Surface card of the theme’s Tile Size with the category’s large icon at its top, and from its bottom up a live summary of two lines at the theme’s Tile Summary Size (“Fullscreen, 2560 x 1440”) and its name in the Title role. Changes waiting for Apply show a Pending dot and “1 change” at its top-right. Focus shows the theme’s focus style and grows the tile a little (not with reduced motion); a preview draws its current tile so without it holding focus (Set Shown As Focused). Accept, a click or a tap opens the category’s page. On Tiny widths it becomes a full-width entry of a list.
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
Background |
UBorder |
optional | The card: Surface, the Hover Fill under the pointer, the Focus Fill while focused. |
IconImage |
URollySaveCoreUIIcon |
optional | The category’s icon, at the theme’s Icon Size Large; collapsed without one. |
NameText |
UTextBlock |
optional | The category’s name, in the Title role. |
SummaryText |
UTextBlock |
optional | The live summary, in the Caption role and Text Muted, two lines at most. |
PendingBadge |
UWidget |
optional | Holds the pending dot and “1 change”; shown while changes wait for Apply. |
PendingText |
UTextBlock |
optional | “1 change”, in the Caption role. |
FocusFrame |
URollySaveCoreUIFocusFrame |
optional | The focus indicator while the tile has focus. |
URollySaveCoreUITiles
Rolly Tiles · derives from URollySaveCoreUICategoryNav · #include "Navigation/RollySaveCoreUITiles.h"
The hub of the Couch Hub layout: a grid of category tiles with live summaries, the first of its two levels. The directional pad and stick move in the grid without wrapping; Accept, a click or a tap opens a category’s page (On Category Opened). Columns follow the width (the Couch Hub sets them: four on Wide areas, three on Regular, two on Narrow) and Tiny widths get a list. It scrolls when the tiles do not fit.
| Property | Type | Default | Description |
|---|---|---|---|
| Tile Class | TSubclassOf<URollySaveCoreUITile> |
None | The class of the tiles. Empty: Rolly Tile. Set it before Set Categories. |
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
TileScroll |
UScrollBox |
optional | A vertical Scroll Box around the grid. |
TileGrid |
UGridPanel |
optional | The grid the hub fills with a tile per category. |
URollySaveCoreUIToast
Rolly Toast · derives from URollySaveCoreUIUserWidget · #include "Toasts/RollySaveCoreUIToast.h"
A message that appears for a while without stopping the player: a status icon (a check in Success, a warning in Warning, info in Accent) and up to three lines of text on a raised panel with a shadow. It never takes focus. It stays at least the theme’s Toast Seconds, longer for long text, and waits while the pointer is over it. Show one with Show Rolly Toast; the player’s toast layer places it.
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
Panel |
UBorder |
optional | The raised panel: Surface Raised, the large radius. |
StatusIcon |
URollySaveCoreUIIcon |
optional | The status icon, in the kind’s colour. |
MessageText |
UTextBlock |
optional | The message, in the Body role and Text, up to three lines. |
URollySaveCoreUIToastLayer
Rolly Save Core UIToast Layer · derives from URollySaveCoreUIUserWidget · #include "Toasts/RollySaveCoreUIToastLayer.h"
Where a player’s toasts appear, newest on top, at most three, 8 units apart, above the player’s screens, inside the safe area. They keep out of the parts the shown screens report (a header, a drawer’s or a panel’s card), in the first of these places that overlaps none: the top right; the top centre of the widest part beside those parts, narrower when that part is (down to 240); otherwise just below the header at the top right. It keeps time in real time (toasts wait while the game is paused only if the player points at them) and holds a ticker registration only while toasts show.
The parts a Blueprint layout binds, by the names of its widgets:
| Part | Widget | Binding | Description |
|---|---|---|---|
ToastBox |
UVerticalBox |
optional | The column of toasts, newest on top. In an overlay’s slot the layer moves it clear of the screens’ parts; elsewhere it stays where the layout puts it, with the toasts at its right. |
URollySaveCoreUIUserWidget
Rolly Save Core UIUser Widget · derives from UUserWidget, abstract · #include "Components/RollySaveCoreUIUserWidget.h"
Base of every focusable or replaceable Rolly widget (screens, rows, buttons, tabs, prompts, dialogs).
- Default tree: the first time the widget initializes it builds its layout in C++, but only when it has no tree of its own. A Blueprint subclass with a designer layout keeps its layout, and its widgets named like the C++ parts (BindWidgetOptional) are driven by the C++ code; a part the layout leaves out turns that feature off.
- Theme: ApplyStyle runs before the widget shows, whenever the theme, high contrast or motion change while it is on screen, and when it shows again after a change. Parts are styled by roles, never by literal values, so a theme switch restyles the widget in place: nothing is rebuilt, focus and state stay.
- Input: it answers the Slate user of its local player, gives subclasses simple clicks and hover, plays the theme’s sounds, and focuses on hover only while the player uses keyboard and mouse.