Audio
.sound events by hand, looping, 3D positional resolution.
A custom sound-mixer slot with no baked pick and no fallback event resolves to null and plays nothing, with zero log lines anywhere. A fully wired audio call stack can be completely mute behind a clean console. When sound is missing and the console is silent, check whether the mix was actually baked for that slot before blaming the caller.
MP3 + JSON .sound beside it: no wav/ffmpeg; Distance is in inches; copy schema from addons/menu box_open.sound.
Play full path WITH .sound or bare filename only: partial paths like impact/boing never resolve; compiled assets can still be invisible mid-session.
The Sandbox.Voice component defaults PushToTalkInput to 'voice', but not every project ships a matching 'Voice' InputAction. PTT is a dead key with zero errors until you add it to Input.config.
Engine 26.07.22 ships no .mixer resource type, so a project cannot author mixer buses as assets. Only Master, Default, and Voice exist, and the Mixer constructor is assembly-internal. Route category volume in code at play time through Sound.Play(string, Mixer) and SoundHandle.TargetMixer. Call Mixer.FindMixerByName first so the project picks up real buses if the engine ever ships authoring.
Sound playback is a static call, not a component. Use Sound.Play() for 2D and Sound.Play(pos) for 3D, and handle missing events gracefully.
SoundEvent has no Looping property: loop via compiled vsnd import options, or re-trigger from code when SoundHandle finishes.