Audio Capture Workflow¶
How to produce the reference clips that external sound designers and composers work from. They
never get engine access — a video clip plus the creative brief (Notion → Design → Audio Vision) and
the tech spec (03_External_Deliverable_Spec.md) are their entire working surface. They author
to picture: the clip goes into their DAW and they design against the frames.
A capture is one individual action, not a scripted scenario: one combo, one ability (windup/travel/impact), one consumable use, one enemy's attack/hit/death set. Mostly montages playing. Batch many short clips per session.
What goes in a brief package¶
- The video is the deliverable. Timing is read visually from the clip; no timing sheet exists or is needed.
- Game audio in the video is a per-brief choice. Default muted for brand-new sounds (a placeholder anchors the designer's thinking); audible for replacements where the current timing feel should carry over.
- The clean WAV bounce is optional context, not an authoring input. Attach it when the brief needs mix context — "your sound must read over this" (kept foley, enemy sounds, the existing bed) — and always for music briefs, which are scored under the existing SFX. Its main life is internal: when delivered files are wired in, capture the same action again and A/B against the designer's mockup (the "accepted when wired in-game and reviewed against capture" step in the deliverable spec).
Console commands¶
| Command | Effect |
|---|---|
Eternal.Capture.Start [ClipName] |
Starts bouncing the master mix to WAV. Plays an audible sync mark (punch transient) and flashes a red CAPTURE START banner on screen. |
Eternal.Capture.Stop |
Writes Saved/AudioCaptures/<ClipName>.wav and logs the path + duration. |
Both are registered in the runtime module (Private/Audio/AudioCaptureCommands.cpp), so they work
from the in-game console, the editor console during PIE, and MCP execute_console_command. Not
available in Shipping builds.
Capture.Start also sets au.DisableAppVolume 1 and au.Debug.PlayAllPIEAudio 1 (process-lifetime,
not persisted): an unfocused editor zeroes the app volume multiplier, and multi-client PIE mutes
every non-active audio device — either one bounces as pure silence. With the cvars set, the
recording survives alt-tabbing mid-take and agent-driven (headless) sessions.
Sync model: video is recorded separately (OBS, below). The sync mark lands in both the bounced WAV and OBS's desktop-audio track, and the banner lands in the video frames — so when a brief or an A/B review wants the clean WAV against the video, aligning them in any editor is trivial.
Session recipe¶
- Single-client PIE (Play Settings → Number of Players = 1). The narrative sessions leave
PlayNumberOfClients=2behind inEditorPerProjectUserSettings.ini; a second client adds a second audio device and a second window for OBS to mis-pick. - Boot a PIE combat session per the
/pie-testskill (session-hygiene gates, thenL_Default→ play →Eternal.PlayPreset <Preset> Node_DevArena). The dev arena is the default capture stage: flat, quiet, no packs. Check the log forLogAudioMixer ... OnCriticalErrorbefore trusting anything — a dead audio device records silence. - Stage the action:
SpawnEnemy <EnemyData>for enemy captures, equip the kit under test,ClearEnemiesbetween clips. - Start OBS recording (profile below).
Eternal.Capture.Start <ClipName>— clip names follow the deliverable spec's naming scheme so the delivered files map 1:1 (e.g.sfx_sword_heavy_combo,vox_cultist_death).- Perform the action. Leave a beat of silence before and after.
Eternal.Capture.Stop, then stop OBS. One action per clip.
OBS profile (v1 video leg)¶
Per the audio plan's ruling: a scripted native encoder is gold-plating; OBS is the honest v1.
- Source: Game Capture → the PIE window (
UnrealEditorchild window). Not display capture — no editor chrome. - Output: 1080p60, mp4 (H.264). OBS's own audio track only needs to carry the sync mark — the bounced WAV is the real audio when one is attached.
- Canvas: match the PIE window; run PIE in a New Editor Window at 1920×1080 (Editor Preferences → Play → Window Size).
The weekly-review and delivery process is defined in 03_External_Deliverable_Spec.md.