FMOD Banks Missing in Unity Player Build After Addressables Strip Step - How to Fix
Problem: FMOD sounds perfect in the Unity Editor, but your fest player build has no music and no SFX—no crash, often no obvious error in the player log. Last week you stripped Addressables groups to shrink the demo under a June 2026 size cap, and audio died the same build.
Who is affected now: Teams tightening Next Fest and playtest depots after build validation checklist added loudness_receipt rows but skipped audio_bank_receipt. This is deployment exclusion, not FMOD Studio authoring—and it is not the same fix path as Addressables init order / ERR_FILE_NOTFOUND when banks exist but load too early.
Fastest safe fix: Open Build Report → confirm .bank files ship in player data → move banks to StreamingAssets/Audio (or FMOD default folder) with Always Included / non-stripped Addressables group → add boot LoadBank probe with assert → run installed player smoke (not Editor) → file audio_bank_receipt_v1.json with bank manifest hash → attach to BUILD_RECEIPT audio row before Steam upload.
Direct answer
Addressables strip removes labeled content from the player payload. If FMOD banks were tagged like Addressables assets—or lived only inside a group you marked strip / remote-only—the player never receives the files RuntimeManager expects on disk. Editor still finds banks in your project folder, so the failure is invisible until a real build.
Why this issue spikes in June 2026
- Fest demo size caps — Producers cut Addressables groups before October uploads.
- Silent failure mode — No
ERR_FILE_NOTFOUNDwhen code never callsLoadBankor swallows errors. - Middleware + Addressables coexistence — Audio teams use FMOD; gameplay uses Addressables; nobody owns the strip diff.
- LUFS gates without bank gates — Trailer loudness chain passed on WAV masters while in-game banks were empty.
- Wednesday smoke — Demo smoke ritual now expects receipt-backed audio columns beside
menu_fps_cap.
Symptoms and search phrases
- Editor Play Mode: full mix; Development Build or Release Build: silence.
- First scene menu UI clicks missing; combat SFX absent.
- Build Report: zero
.bankentries (or only.strings.bankmissing). StreamingAssetsfolder in build output empty or missingAudio/subtree.- Recent PR: “removed unused Addressables labels” or “strip local groups for fest.”
- FMOD Profiler connects but shows no loaded banks in player.
- WebGL sibling: see FMOD WebGL silent first scene—different autoplay gate.
Root causes (check in order)
- Banks inside stripped Addressables group —
.banktreated like remote gameplay content. StreamingAssets/Audionot in Always Included — Unity omits folder from player data.- Wrong platform bank in build — desktop banks stripped; only mobile bank referenced.
LoadBankbefore files copied — rare here; see init order help.- Addressables label on bank importer — accidental drag into labeled group.
- Custom strip script — post-build step deletes
StreamingAssets“duplicates.” - Fest vs playtest depot — playtest build had banks; fest promotion reused stripped artifact.
Beginner path (first 45 minutes)
Prerequisites: Unity project with FMOD Unity Integration, one Windows or Deck fest target, installed Steam or local player build.
- File → Build Settings → enable Development Build + Script Debugging (temporary).
- Build player → open Build Report (Unity 6+ Window → Analysis → Build Report or log artifact).
- Search report for
.bank— note count and paths. - If zero banks → deployment issue (this article); if banks present but silent → init/order or WebGL help.
- Install build → launch → stand in first scene 10 seconds with known SFX trigger.
- If silent → continue Fastest safe fix path.
Common mistake: Hearing audio in Editor only—fest reviewers use installed builds.
Fastest safe fix path
Step 1 — Enumerate banks in Build Report
| Check | Pass |
|---|---|
Master.bank (or project master name) listed |
Yes |
Master.strings.bank listed |
Yes |
Platform suffix matches build target (e.g. .bank desktop) |
Yes |
Paths under StreamingAssets/ (or your FMOD subfolder) |
Yes |
| Bank total size > 0 bytes | Yes |
Screenshot the report into release-evidence/01-build/audio/build-report-banks.png.
Step 2 — Separate “strip” groups from audio payload
Rule: FMOD disk-loaded banks should not share Addressables labels used for fest content stripping.
| Asset type | Recommended home |
|---|---|
| FMOD banks (disk load) | Assets/StreamingAssets/... + copy in build |
| FMOD banks (memory via Addressables) | Dedicated AudioBanks group, never stripped, explicit load code |
| Gameplay Addressables | FestDemo_StripSafe groups you can cut |
In Addressables Groups:
- Create
AudioBanks_Local(or similar)—Build Path: Local, Include in Build: Yes. - Move only banks here if you must Addressables-package them; otherwise keep out of Addressables entirely.
- Remove bank assets from groups tied to strip / remote fest experiments.
Step 3 — FMOD Studio + Unity import hygiene
- FMOD Studio → Build banks for target platform.
- Confirm Unity FMOD Settings source bank folder matches import path.
- Reimport banks; verify
.bankfiles appear underStreamingAssetsin Project window. - Avoid marking bank TextAsset wrappers with gameplay Addressables labels.
Step 4 — Boot LoadBank probe (fail loud)
Add a one-shot smoke on first scene load (adapt to your API version):
// BootAudioProbe.cs — attach to first scene bootstrap
void Start() {
#if !UNITY_EDITOR
var result = FMODUnity.RuntimeManager.LoadBank("Master", true);
if (result != FMOD.RESULT.OK)
UnityEngine.Debug.LogError($"FMOD Master bank load failed: {result}");
#endif
}
Pass: Log shows OK on installed player; first UI click plays click SFX.
If you load from Addressables memory, probe LoadBank memory overload after Addressables.InitializeAsync() per Addressables bank path help.
Step 5 — audio_bank_receipt_v1.json
{
"schema": "audio_bank_receipt_v1",
"checked_at_utc": "2026-05-24T21:00:00Z",
"build_label": "fest-demo-2026-06-rc1",
"platform": "Windows64",
"banks_expected": ["Master.bank", "Master.strings.bank", "Music.bank"],
"banks_in_build_report": ["Master.bank", "Master.strings.bank", "Music.bank"],
"bank_manifest_sha256": "sha256:abc123...",
"boot_loadbank_ok": true,
"first_scene_audible": true,
"addressables_strip_group": "FestDemo_StripSafe",
"audio_banks_group": "AudioBanks_Local",
"pass": true
}
Compute bank_manifest_sha256 over sorted bank file hashes in the built StreamingAssets folder—store script in release-evidence/01-build/audio/.
Step 6 — BUILD_RECEIPT + Wednesday smoke
Add row to BUILD_RECEIPT:
| Column | Example |
|---|---|
audio_bank_receipt |
pass |
bank_manifest_sha256 |
sha256:abc123... |
loudness_receipt |
separate trailer row |
Run installed fest smoke from Wednesday ritual with audio column checked.
Working dev path — post-strip diff audit
When a PR touches Addressables:
# List .bank paths referenced by Addressables (example — adapt labels)
rg -l "\.bank" .\Assets\AddressableAssetsData\
# Compare to StreamingAssets on disk after build
Get-ChildItem -Recurse .\Build\*\StreamingAssets\*.bank
| Diff signal | Action |
|---|---|
| Banks only in stripped group | Move to AudioBanks_Local or StreamingAssets |
| Banks in build, silent runtime | Init order / WebGL help |
| Smaller build, zero banks | Revert strip on audio group |
| Playtest has banks, fest does not | Separate CI lanes per build_label help |
Verification checklist
- [ ] Build Report lists all required
.bankfiles - [ ] Installed player: boot LoadBank OK in log
- [ ] First scene: music + UI SFX audible within 30s
- [ ]
audio_bank_receipt_v1.jsonpass: true - [ ] BUILD_RECEIPT audio row populated
- [ ] Addressables strip PR does not touch
AudioBanks_*group - [ ] Deck / Steam installed smoke (if fest target includes Deck)
Prevention
- Never strip groups containing
.bankwithout audio QA sign-off. - Add bank enumeration CI step on fest upload workflow.
- Pair with Wwise/FMOD alternatives resource for middleware checklist rows.
- Trailer LUFS passes on WAV do not prove in-game banks shipped—keep receipts separate.
- Document fest vs playtest bank groups in
playtest_scope_map_v1.jsonnotes field.
Troubleshooting
| Symptom | Fix |
|---|---|
| Banks in report, still silent | Addressables init order |
| WebGL only silent | WebGL first-scene audio |
| Version mismatch error | FMOD bank version CI help |
| Trailer loud, game silent | Banks stripped—this article; re-run Step 1 |
| Only music missing | Platform-specific bank not built—rebuild FMOD for target |
FAQ
Should FMOD banks live in Addressables at all?
Disk-loaded fest demos are simplest in StreamingAssets outside strip groups. Memory loads are valid but need explicit init order—see the companion Addressables help.
Is silence always a strip bug?
No—verify banks exist in Build Report first. Zero files = strip/deployment; files present = load order, platform bank, or WebGL gesture.
Does loudnorm CI cover this?
No. ffmpeg loudnorm help and LUFS listicle cover trailers; audio_bank_receipt covers in-game banks.
Related links
- FMOD Banks Not Loading in Unity Addressables Build (init order)
- FMOD WebGL Silent First Scene Fix
- FMOD Studio Bank Version Mismatch in CI
- 20 Free Wwise and FMOD Alternatives (2026 resource)
- 14 Free Audio LUFS Tools for Fest Trailers (blog)
- 14 Free Trailer Loudness Measurement Chain (resource)
- 20 Free Build Validation Checklist (resource)
- Wednesday Demo Build Smoke Ritual
- Official: FMOD Unity Integration — Banks, Unity Addressables — Build layout
Prove banks in the Build Report before you prove LUFS on the trailer—fest players hear the player build, not the project folder.