Appearance
Blueprint settings, mixer output and real save failure — 2026-10-12
Accepted scope:48current source/exact Development-package reports on5.6.1/5.7.4/5.8.3, plus independent analysis of84actual exported PCM waveforms. The saved settings Blueprint now retains more editing space during failure at enlarged scale. This is a scoped UI product milestone, not full acceptance or physical listening certification.
Usable settings and product change
WBP_AshenSettings uses public Begin Edit, Set Scalar Preference, Apply, Cancel, Restore Defaults and Unreal controls/playback. Test audio's actual saved On Clicked→Play Sound2D graph plays original IF_GamePreview through the game class; IFButton's normal confirmation uses the theme's original UI-class sound. Both are independently synthesized, not external recordings. UI/game SoundClasses and SoundMix remain engine-owned; the core provides routing/preferences, not another audio mixer.
Visual review found the fixed Restore defaults action occupied a second tall footer row while a save error was visible at150%UI+text. Defaults is now a quiet draft action in the existing scrolling body, with its variable/callback unchanged. Apply/Cancel remain fixed and readable. The failure view retains170.4logical reading height at800×600/max scale (normal480), showing two controls instead of the earlier cramped single-control view. No global text shrink or reference design was used. Actual Blueprint recipe.
Only seven candidate paths changed from PausedMotion: one settings BP; sample module dependency list; example-controller opt-in hook; two new settings/audio QA files; editor authoring cpp/header. Source count153, content53packages. Core63files and all other assets remain unchanged and byte-match prior independent strict WorldLinks5.6/5.7/5.8 hosts. No duplicate core build. AudioMixer is a sample QA dependency, not a new InterfaceForge dependency. Before-SettingsAudio source/asset/progress snapshots preserve previous work.
Actual signal and persistence verification
The opt-in actor operates the saved settings screen with synthetic Slate Enter/Back and explicit slider OnValueChanged events. It records actual main-submix float PCM from the engine AudioMixer, exporting48kHz stereo16-bit WAVs. Original feedback frequencies620/930Hz and game-preview220/330Hz distinguish their gains without confusing simultaneous button confirmation with preview sound.
Seven states: both full; UI20%/game full; UI full/game20%; UI-only; game-only; both muted; Cancel/reopen restores committed80%/80%. Every state has recorded frames. Band amplitudes and RMS confirm isolation, both mute directions and rollback; both-muted WAVs contain actual zero PCM frames. Independent Python wave/Goertzel analysis reads every exported file and compares format/frame count, signal/RMS and gain ratios with native markers.84waveforms pass; this checks the recording rather than merely trusting a PASS label. Tolerances allow scheduling/recording-window variation; no latency/performance claim.
The fixture temporarily disables main-submix auto-disable and changes only its process's unfocused-volume multiplier to1, restoring both afterward. This permits continuous silent output recording without desktop focus automation. It does not alter source audio assets or persisted audio configuration.
A unique GUID profile is selected through public Set Storage Profile before editing. An empty owned <GUID-slot>.sav directory blocks the actual Win64 engine save path. Actual Blueprint Apply fails, leaves the edit session/draft and visible Failure Reason, and preserves editing space. Removing only that empty owned blocker permits retry of the same60%UI/70%game draft. Actual LoadGameFromSlot confirms schema1/preferences. A clean second process selects the exact completed profile and verifies loaded values and reopened sliders, then deletes only that uniquely named test save. The player's InterfaceForgeUI.sav bytes/existence are checked before/after every process and remain unchanged. No permissions/ACL changes, recursive deletion or shared player-save manipulation.
The same current packages/source also pass complete RTS/RPG main→settings-preview/cancel→loading cancel/failure/retry→HUD→pause/resume→return/dialog flows, cues/focus/arrival/reduced-motion/root lifetime. Audio captures use the RTS host; both controllers configure the same routing/settings asset, but independent RPG mixer capture is not asserted here. Physical slider dragging, speakers/listening, controllers/touch are distinct gates.
Commands, builds and archives
Build.bat ForgeExamplesEditor Win64 Development -Project=<canonical or isolated project> -WaitMutex -NoHotReloadFromIDE. Fresh approved UE57/58-SettingsAudio copies contain153files, with only copied EngineAssociation changed. CompileAllBlueprints uses the complete30-class allowlist, quoting whole AllowListFile, with NullRHI/unattended/nosplash/InstalledNoZenLocalFallback/unique absolute logs.
| Actual engine | Final Editor build | Blueprint compilation | Native build warnings |
|---|---|---|---|
| 5.6.1 CL44394996 | 7.60s | 30classes/0errors/0warnings/0failed loads | 0 |
| 5.7.4 CL51494982 | 42.11s | same | 0 |
| 5.8.3 CL58210709 | 47.60s | same | 20existing C4305 colors;2CS0618 legacy include-order notices |
Tools/run_settings_audio_reviews.ps1 uses unique Prefix/actual EngineVersion/isolated ProjectPath or exact PackagedExecutable. It serializes primary and clean-process reload for each1280×720/default or800×600/150%UI+text run. Source56 prefix SettingsAudio-ReadingSource, newer SettingsAudio57/58-Source; cooked SettingsAudio56/57/58-Cooked. Full-flow prefixes SettingsAudio-FlowSource, SettingsAudio57/58-FlowSource and SettingsAudio56/57/58-FlowCooked. All final processes/strong verifiers pass. Exact results/arguments/84waveforms (local verification record).
Installed RunUAT BuildCookRun uses own project, noP4/platformWin64/clientconfigDevelopment/build/cook/stage/pak/archive, both ForgeOutpost+ForgePilgrimage maps, NoHotReloadFromIDE and InstalledNoZenLocalFallback. Exact engine UAT Log.txt and FinalCopyWin64_UFSFiles.txt are preserved before another UAT run. Tests use each archive's inner Windows/ForgeExamples/Binaries/Win64/ForgeExamples.exe. All builds/UAT and persistence/remap-writing phases are serialized.
| Archive | Build/cook/stage/archive | Cook | Cooked + platform skipped | Staging targets |
|---|---|---|---|---|
| SettingsAudioUE56 | 25.79s | 8.90s | 486+7=493 | 2663 |
| SettingsAudioUE57 | 61.88s | 22.41s | 488+7=495 | 2678 |
| SettingsAudioUE58 | 95.41s | 46.53s | 559+7=566 | 2341 |
No final cook/Blueprint/material/shader warning/error lines. Boundary153source/53own packages/5546reference UIhashes passes each exact manifest. All153canonical and152copied files per newer engine match after tests; only copied association differs. SourceReceipt and exact per-engine boundaries preserved. Three final renders reviewed/copied: source enlarged failure, cooked5.7 enlarged failure, cooked5.8 enlarged reload. Scroll overflow is intentional and retains controls through navigation; no arbitrary-language/mobile claim.
Failed iterations and preservation
Initial baseline checked IsEditing immediately after Push Screen, before CommonUI activation; the actor failed despite engine exit0. The strict verifier rejected it. Ownership is now checked after actual activation. The next recording run captured only active submix buffers: silence auto-disable gave varying lengths and no both-muted PCM, making fixed-duration/normalized-gain comparisons invalid. Installed mixer source established that behavior; continuous main capture repaired it, and all independent wave checks now pass. Failed logs/waves remain, excluded from final48reports.
An older real pre-layout audio PASS is rejected by the current verifier because it lacks the preserved-reading assertion; SettingsAudio-PreReading-NegativeControl.json records that boundary. Old failed temporary GUID artifacts remain in Saved as internal evidence, outside shipping; successful final test saves are cleaned. No reference or player data was reset.
SettingsAudio-References.json confirms discovery HEAD/prior changed-file hashes/all5546UIpackage hashes match. Sakura status unchanged. GameMaster/MassForge retain separately observed external code changes; their full statuses are not unchanged. No reset/rebaseline; native/reference sessions untouched; no commit/publication. Sakura material and timing remain byte-identical.
Physical controller explicitly deferred. Mixer PCM is not human listening/speaker certification. Touch/native drift/disconnect/remap disk-I/O, graphics examples, multiplayer/split-screen, accessibility/localization/performance and final product polish remain open. Core remains independent; inventory is outside scope. Goal ACTIVE.