Skip to content

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

  1. Single-client PIE (Play Settings → Number of Players = 1). The narrative sessions leave PlayNumberOfClients=2 behind in EditorPerProjectUserSettings.ini; a second client adds a second audio device and a second window for OBS to mis-pick.
  2. Boot a PIE combat session per the /pie-test skill (session-hygiene gates, then L_Default → play → Eternal.PlayPreset <Preset> Node_DevArena). The dev arena is the default capture stage: flat, quiet, no packs. Check the log for LogAudioMixer ... OnCriticalError before trusting anything — a dead audio device records silence.
  3. Stage the action: SpawnEnemy <EnemyData> for enemy captures, equip the kit under test, ClearEnemies between clips.
  4. Start OBS recording (profile below).
  5. 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).
  6. Perform the action. Leave a beat of silence before and after.
  7. 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 (UnrealEditor child 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.