How-To: Presets & Profiles
Goal: ship one-click presets (Low/Medium/High) and let players save/load named snapshots of every setting.
Prerequisites
A registry with settings (Quick Start). Both features are optional.
Presets (author a batch of overrides)
Create a UCrimsonSettingPreset data asset and add FCrimsonSettingPresetEntry rows - each maps a DevName to a serialized value (number for scalar, index for discrete). Apply it in one call.
Registry->ApplyPreset(HighQualityPreset); // sets every listed DevName to its preset value
Named profiles (save / load snapshots)
Profiles serialize all registered settings to a USaveGame slot. All value types round-trip automatically.
Registry->SaveProfile(TEXT("MyProfile")); // write a snapshotRegistry->LoadProfile(TEXT("MyProfile")); // returns false if the slot is missingRegistry->DeleteProfile(TEXT("MyProfile"));Registry->ProfileExists(TEXT("MyProfile")); // non-destructive check// List saved profiles (BlueprintCallable static):TArray<FString> Slots = UCrimsonSettingBlueprintLibrary::GetSavedProfileSlotNames();
Verify
Applying a preset moves the relevant sliders/options at once; saving then loading a profile restores every value exactly.
Related: hardware auto-detect
UCrimsonSettingScreen::RunHardwareBenchmark() runs UE's GPU/CPU scalability benchmark, applies the recommended quality to UCrimsonSettingsLocal, saves GameUserSettings.ini, and regenerates the registry so the UI reflects it - one call from an 'Auto-Detect' button.