-
Notifications
You must be signed in to change notification settings - Fork 0
Audio
Home · Graphics · Configuration
Sound effects are generated in-browser with the Web Audio API after the first permitted user interaction. The SoundManager creates buffers for effects and routes them through a master gain bus and low-pass filter. This avoids dependence on a large external SFX library.
The master bus can apply low-health / slow-motion muffling: it reduces the filter cutoff toward roughly 600 Hz and ducks volume, then restores clarity as the effect ends.
The mixer supports true 3D placement. A PannerNode stage sits between each positional voice and the master bus, and a listener driven from the camera is updated once per frame after all camera motion (look, recoil, crouch height, weapon inertia) has resolved.
| Property | Value |
|---|---|
| Panning model |
equalpower — HRTF costs roughly an order of magnitude more CPU, and a busy fight runs dozens of concurrent voices |
| Distance model |
inverse, reference distance 8 units, maximum 120 units |
| Routing | Through the master bus, so slow-motion muffling, master volume, and stop-all all still apply |
Positional playback is applied deliberately, not wholesale. Enemy ranged bolts, Sentinel fire, melee wind-ups, enemy deaths, explosions, and world bullet impacts are placed in the world — a sniper bolt from off-screen is the single most useful directional cue in the game. The player's own weapon, reload, and footsteps, plus all interface cues, stay non-positional on purpose: panning your own gun is immediately noticeable and wrong.
Looping positional emitters are also supported and return a movable handle, so a caller can reposition, fade, and stop a sustained source.
- The repository includes one music asset:
public/audio/Beyond_The_Overgrowth.mp3. - Menu music has a separate persisted mute control.
- In-game ambience is the procedural adaptive score, whose always-on bed layer exists specifically so silence never reads as dead air. There is deliberately no separate filtered-noise ambient loop — one was generated but never played, and layering it under the score would only have added a constant hiss.
- Map-specific ambient audio files were not found; weather and map atmosphere are primarily visual/particle systems.
| Category | Confirmed sounds |
|---|---|
| Weapons | Distinct generated reports for Pistol, Rifle, Shotgun, SMG, Sniper, Minigun, and Launcher; dry fire, reload, weapon switch, and brass casing. |
| Subverter | Digital chip deploy, failed-target buzz, overclock burnout, and chip-cartridge reload. |
| Explosions | Three weights — barrel, rocket/grenade, and nuke — so blast size is distinguishable by ear. |
| Bullet impacts | Material-matched wood, metal, stone, and dirt hits, selected from the surface the decal system has already classified. |
| Enemy vocals | Alert chirp, melee wind-up growl, death cry, and a low boss roar. |
| Combat | Body hit, headshot ping, player hurt, dash whoosh, and footstep/crouch feedback. |
| Progression | Distinct cues for perk pickup, achievement unlock, and objective completion, plus the wave-complete fanfare and streak/ability feedback. |
| Interface | Menu music mute and UI interaction feedback through existing effect cues. |
Weapon fire applies a small random playback-rate shift so automatic fire does not sound like an identical loop. The Shotgun, Sniper, and Launcher use heavier synthesized body/punch profiles than the Pistol or SMG.
Three families were previously missing outright and are now synthesized:
- Explosions model a real blast in order — an instantaneous crack, a wide-band noise body whose lowpass closes over time so the sound audibly darkens as it expands, a swept sub-bass thump, and a long diffuse rumble. A single scale parameter grows all four together. Rockets, barrels, and the nuke previously produced no explosion sound at all; the launcher's 150-damage round landed silently.
- Bullet impacts on the world share one model at four settings: a contact transient, a short pitched body representing what was struck, and a debris tail. Metal rings inharmonically, stone cracks, wood thocks, dirt thuds. Rounds that missed an enemy previously landed in silence.
- Enemy vocals are a two-formant buzz over a pitch contour with servo whine and gearbox grit, so they read as a machine shouting rather than an animal. Pitch tracks chassis mass and the contour direction distinguishes an alert (rising) from a death (collapsing).
The boss roar is deliberately non-positional: it announces an arrival the player cannot yet locate.
Settings exposes master, sound-effect, and music volume controls, along with a sound test. Haptics are not audio; they are independent mobile vibration patterns and can be disabled.
There is a generated footstep effect used for movement/crouch feedback, attenuated by heavy rain. No recorded per-surface footstep library, spoken dialogue, character voice acting, proximity voice, or voice chat implementation was found — enemy vocalizations are synthesized machine noise, not recorded speech.
Implementation references: src/utils/SoundManager.ts, src/App.tsx, public/audio/Beyond_The_Overgrowth.mp3, src/components/SettingsMenu.tsx.