User Accounts
UOperatingSystemUserManager handles login screen flow, multiple users per device, simulated funds/transactions, and per-user save data (FOperatingSystemUserManagerSaveData).
Access the manager from UOperatingSystemWorldSubsystem or Blueprint nodes on the running OS.
flowchart TB
subgraph row1[" "]
direction LR
Boot["UOperatingSystemBaseDevice boot"] --> Login["UOperatingSystemWidget login screen"] --> UM["UOperatingSystemUserManager"]
end
subgraph row2[" "]
direction LR
User["Active UOperatingSystemUser"] --> Home["Per-user home directory"] --- Desktop["Desktop + FOperatingSystemUserManagerSaveData"]
end
UM --> User
Enable login UI
Section titled “Enable login UI”On your UOperatingSystemWidget subclass (duplicate WBP_OS from plugin):
- Implement the login / user picker UI exposed as Blueprint implementable events on the OS widget.
- Call Login User / Switch User on the user manager when the player confirms selection.
The bundled demo map shows a working login → desktop flow you can study before customizing.
Create users at runtime
Section titled “Create users at runtime”Blueprint:
Get User Manager → Add User (Username, Password, Display Name, …) → Set Active UserUsers persist when save/load is configured — see Save and load.
Simulated funds
Section titled “Simulated funds”The user manager supports balance and transactions (EOperatingSystemBankTransactionType) for Store purchases and narrative systems.
Example: deduct Store Price when a program installs from UOperatingSystemStore.
Per-user directories
Section titled “Per-user directories”Non-Unix paths typically include the username segment (C:\Users\{Name}\Desktop). Unix uses /Users/{Name}/.... Creating a user should create or mount their home directory tree — follow bundled OS Data Assets for the expected layout.
C++ hook
Section titled “C++ hook”#include "Core/OperatingSystemUserManager.h"
if (UOperatingSystemUserManager* UM = WorldSubsystem->GetUserManager()){ UM->LoginUser(UserId, OutError);}Exact signatures are on the API reference page.