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
Live defaults on BP_Prog_Mail
Section titled “Live defaults on BP_Prog_Mail”| Property | Value |
|---|---|
| Identifier | mail |
| Settings Class | BP_Prog_MailSettings |
| Data Class | BP_Prog_MailData |
| Save Method | SaveOnExit |
| Widget Class | WBP_Mail |
Plugin paths:
Shared/Blueprints/Programs/Mail/BP_Prog_MailShared/Blueprints/Programs/Mail/BP_Prog_MailSettingsShared/Blueprints/Programs/Mail/BP_Prog_MailDataShared/Blueprints/Widgets/Programs/Mail/WBP_Mail
Screenshot callouts
Section titled “Screenshot callouts”Blueprint lifecycle
Section titled “Blueprint lifecycle”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 / override | Use for |
|---|---|
| On Validate | Reject broken config |
| On Program Started | Load inbox, spawn sub-widgets |
| On Program Closed | Flush unsaved drafts |
| On Open File | Handle double-click on mail attachments |
Same pattern elsewhere
Section titled “Same pattern elsewhere”| Program | Settings | Data |
|---|---|---|
BP_Prog_Banking | BP_Prog_BankingSettings | BP_Prog_BankingData |
BP_Prog_VideoPlayer | — | BP_Prog_VideoPlayerData |