Skip to content

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

On your UOperatingSystemWidget subclass (duplicate WBP_OS from plugin):

  1. Implement the login / user picker UI exposed as Blueprint implementable events on the OS widget.
  2. 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.

Blueprint:

Get User Manager
→ Add User (Username, Password, Display Name, …)
→ Set Active User

Users persist when save/load is configured — see Save and load.

The user manager supports balance and transactions (EOperatingSystemBankTransactionType) for Store purchases and narrative systems.

Example: deduct Store Price when a program installs from UOperatingSystemStore.

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.

#include "Core/OperatingSystemUserManager.h"
if (UOperatingSystemUserManager* UM = WorldSubsystem->GetUserManager())
{
UM->LoginUser(UserId, OutError);
}

Exact signatures are on the API reference page.