Quick Start
By the end of this page you have a settings screen with a couple of options that persist per player - no game-code binding, no fields added anywhere. Making an option actually change the game comes next (How-To: Bind a Setting to Game Code).
CrimsonCommon and CrimsonSettings are installed, and you have a UI layer to push a screen to (e.g. CrimsonUI's primary game layout, or your own).1. Enable the plugin
Open Edit -> Plugins, type Crimson, tick CrimsonSettings (and its dependency CrimsonCommon), and restart when prompted. For a Blueprint project that's the whole install.
Images/CrimsonSettings/qs-enable-plugin.pngC++ projects: add the module to your build file so your code can reference settings types:
// YourGame.Build.csPublicDependencyModuleNames.Add("CrimsonSettings");
2. Create a settings data asset
Right-click in the Content Browser -> Miscellaneous -> Data Asset -> CrimsonSettingsDataAsset. Add a Section (e.g. Gameplay), then add Settings entries. For each entry set the Type, DevName, DisplayName, and - to persist it with no code - tick Persist To Shared Store (leave StorageKey empty to reuse DevName).
Images/CrimsonSettings/qs-data-asset.pngScalar shows range/step/default; a Discrete shows options/default index; an Action shows its button text. DevName must be unique within a registry.3. Create a registry
The registry turns the asset into live settings. Make a Blueprint child of UCrimsonSettingRegistry, and in one of the category hooks call Populate From Data Asset with your asset.
Images/CrimsonSettings/qs-registry.pngPopulate From Data Asset accepts your asset with no warnings in the Output Log.4. Create the settings screen
Make a Blueprint widget child of UCrimsonSettingScreen. Add a UCrimsonSettingPanel named exactly `Settings_Panel` (a bind-widget). Override `Create Registry` to return your registry, initialized for the owning local player.
Images/CrimsonSettings/qs-screen.pngSettings_Panel bound (no "BindWidget" error) and Create Registry returns your registry class.5. Push the screen
Push the screen onto a UI layer from a menu button (or BeginPlay for a test).
Images/CrimsonSettings/qs-push.png