Skip to content

Pattern — Program with Data & Settings

Programs that save player preferences and hold runtime data use three companion Blueprints alongside the main program class. BP_Prog_Mail is the canonical bundled example.

flowchart TB
  subgraph program["BP_Prog_Mail"]
    direction TB
    P["UOperatingSystemBaseProgram"]
    S["BP_Prog_MailSettings<br/><i>UOperatingSystemProgramSettings</i>"]
    D["BP_Prog_MailData<br/><i>UOperatingSystemProgramData</i>"]
    W["WBP_Mail"]
  end
  P -->|"Settings Class"| S
  P -->|"Data Class"| D
  P -->|"Widget Class"| W
  P -->|"Save Method: SaveOnExit"| SG["UOperatingSystemSaveGame"]
  S --> SG
PropertyValue
Identifiermail
Settings ClassBP_Prog_MailSettings
Data ClassBP_Prog_MailData
Save MethodSaveOnExit
Widget ClassWBP_Mail

Plugin paths:

  • Shared/Blueprints/Programs/Mail/BP_Prog_Mail
  • Shared/Blueprints/Programs/Mail/BP_Prog_MailSettings
  • Shared/Blueprints/Programs/Mail/BP_Prog_MailData
  • Shared/Blueprints/Widgets/Programs/Mail/WBP_Mail
stateDiagram-v2
  [*] --> Validate: OS installs program
  Validate --> Idle: On Validate passes
  Validate --> Error: On Validate fails
  Idle --> Running: Player launches
  Running --> Running: On Program Started
  Running --> Idle: On Program Closed
  Idle --> [*]: SaveOnExit writes settings
Event / overrideUse for
On ValidateReject broken config
On Program StartedLoad inbox, spawn sub-widgets
On Program ClosedFlush unsaved drafts
On Open FileHandle double-click on mail attachments
ProgramSettingsData
BP_Prog_BankingBP_Prog_BankingSettingsBP_Prog_BankingData
BP_Prog_VideoPlayerBP_Prog_VideoPlayerData