L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Développement · SKILL.md

audio-engine

audio-engine

Expert game audio engine — DSP graph, buses and mixing, spatialization/HRTF, streaming decode, ducking, effects (reverb/delay) and voice/performance budgets.

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: audio-engine description: Expert game audio engine — DSP graph, buses and mixing, spatialization/HRTF, streaming decode, ducking, effects (reverb/delay) and voice/performance budgets.

Audio Engine — Deep Engineering Guide

Audio is half the game feel and a third the frame budget people forget. This skill covers the audio graph (DSP, buses, mixing), 3D spatialization, streaming decode, ducking/mixing-control, effects and the performance/voice budgets that keep audio crisp under load.

1. The Audio Pipeline

AudioEvent (play a clip at a world position)
  → Voice (instance; owns a decode stream)
  → Effect chain (per-voice: filters, spatial pan, distance)
  → Bus (music/sfx/ui: bus mixing + ducking)
  → Master → Output (platform audio device)

Two worlds meet here: event (high-level, game-facing) and dsp (signal, low-level). The engine must isolate them (a gameplay event is never a mixing decision).

2. The DSP Graph & Voice Model

Voice = an active playback instance with:
   source: clip or stream
   state: playing/paused/stopped
   effects (per-voice insert chain)
   routing (to which bus, at what pre-fader level)
  • Buses: music, gameplay/sfx, UI, ambience — each with gain+mute+duck parameters. The mixer sums buses into the master.
  • Effects are insert (on a bus or voice) or send (parallel, e.g., global reverb).

3. Spatialization (3D Audio)

TechniqueCostUse
Pan + distance (constant power)trivialdefault
HRTF (head-related)higherheadphones (console/PC)
Ambisonicsmedpositional ambience
Reverb-per-position (levels are baked)reusebeds, rooms

Spatialize per-voice: azimuth→pan/HRTF, distance→attenuation (per-source falloff curve), elevation tweaks. Occlusion (a wall in between) → low-pass + duck the direct + increase reverb send.

4. Streaming & Decode

NeedApproach
Music / long ambientstreamed from disk (pak) in chunks
One-shots (footstep)decompressed to RAM once
Dialoguestreamed + memory pool
  • Decompress in worker threads (see job-system): Vorbis/Opus/platform-native at ~1–2 ms/2 k samples.
  • Chunk size: 10–80 ms ms read-ahead (latency vs memory); a long stream = a ring buffer double-buffered.
  • Latency budget per voice: < 30 ms added (read-ahead), so sound stays synced.

5. Mixing Control & Ducking

SystemWhat it does
Mixing levelsper-bus volume, per-bus priorities
Duckinglower a sidechain bus (music→sfx) on event
Voice limitingcap max polyphony (drop/steal voices)
Loudness targetsper-bus RMS targets (streaming combat music to 60% when sfx burst)

A classic duck: dialogue events duck music −12 dB (attack 50 ms, release 400 ms). Voice-stealing: a new urgent sound steals the oldest lowest-priority voice (never the player's own voice).

6. Effects (Reverb, Delay, EQ)

EffectTypical
Reverb (convolution/FDN)per-room bus, or send
Delay/echoone-shots, taunts
EQ (high/low-pass)occlusion filters, "radio"
Compressor/limitermaster (anti-clip)
Chorus/flangerincidental

Reverb = send (one FDN per room, many voices route in) — never one reverb per voice per frame. Convolution reverb = author-time bake (impulse responses) not run-time.

7. Performance & Voice Budgets

MetricBudget
voices / frame≤ 32–256 (by platform)
DSP CPU~2–6% total (often 5%)
decode threads1–2
latency (start→sound)< 30–50 ms
streaming bytes/s10–20 kB/s per stream

For a crowd (hundreds of NPCs): voice-allocate by proximity/prioritization — the "best 24 voices" trick (spatialize the near, composite the far with a single room ambience).

8. Determinism (Replay & QA)

  • The DSP must be deterministic: same input → same output (fixed sample rates, fixed filter constants, no nondeterministic effects (random=seeded)).
  • QA wants byte-identical audio in replay runs to confirm "the gun sound is in" — this keeps sound testable.

9. The Event→DSP Boundary (API Design)

game → AudioEvent(audio: "sfx/hit_impact", world, volume, pitch)
engine → maps to a Voice + routing decisions (bus, duck context).

The game never touches buses/ducks; the audio designer owns the bus/duck graph (a .audiograph asset).

10. References

  • references/dsp-graph.md — DSP nodes, buses, voice lifecycle, insert/send routing
  • references/spatial-audio.md — pan, distance, HRTF, occlusion, ambisonics, velocity pitch
  • references/streaming-and-decode.md — chunked streams, decode workers, ring buffers, latency budget
  • references/mixing-and-ducking.md — bus levels, ducking curves, voice stealing, loudness targets
  • references/effects-and-reverb.md — reverb (convolution/FDN), delay, EQ, master limiter
  • references/performance-and-voice.md — voice budgets, polyphony allocation, crowd compositing, profiling
Skills enregistrées