Asset & Resource Problems May 24, 2026

FMOD Banks Missing in Unity Player Build After Addressables Strip Step - How to Fix

Fix silent Unity player builds when FMOD banks disappear after Addressables strip for fest demo size. Always Included banks, build report enumeration, LoadBank boot probe, and audio_bank_receipt_v1.json gates.

By GamineAI Team

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

  1. Fest demo size caps — Producers cut Addressables groups before October uploads.
  2. Silent failure mode — No ERR_FILE_NOTFOUND when code never calls LoadBank or swallows errors.
  3. Middleware + Addressables coexistence — Audio teams use FMOD; gameplay uses Addressables; nobody owns the strip diff.
  4. LUFS gates without bank gatesTrailer loudness chain passed on WAV masters while in-game banks were empty.
  5. Wednesday smokeDemo 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 .bank entries (or only .strings.bank missing).
  • StreamingAssets folder in build output empty or missing Audio/ 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)

  1. Banks inside stripped Addressables group.bank treated like remote gameplay content.
  2. StreamingAssets/Audio not in Always Included — Unity omits folder from player data.
  3. Wrong platform bank in build — desktop banks stripped; only mobile bank referenced.
  4. LoadBank before files copied — rare here; see init order help.
  5. Addressables label on bank importer — accidental drag into labeled group.
  6. Custom strip script — post-build step deletes StreamingAssets “duplicates.”
  7. 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.

  1. File → Build Settings → enable Development Build + Script Debugging (temporary).
  2. Build player → open Build Report (Unity 6+ Window → Analysis → Build Report or log artifact).
  3. Search report for .bank — note count and paths.
  4. If zero banks → deployment issue (this article); if banks present but silent → init/order or WebGL help.
  5. Install build → launch → stand in first scene 10 seconds with known SFX trigger.
  6. 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:

  1. Create AudioBanks_Local (or similar)—Build Path: Local, Include in Build: Yes.
  2. Move only banks here if you must Addressables-package them; otherwise keep out of Addressables entirely.
  3. Remove bank assets from groups tied to strip / remote fest experiments.

Step 3 — FMOD Studio + Unity import hygiene

  1. FMOD Studio → Build banks for target platform.
  2. Confirm Unity FMOD Settings source bank folder matches import path.
  3. Reimport banks; verify .bank files appear under StreamingAssets in Project window.
  4. 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 .bank files
  • [ ] Installed player: boot LoadBank OK in log
  • [ ] First scene: music + UI SFX audible within 30s
  • [ ] audio_bank_receipt_v1.json pass: true
  • [ ] BUILD_RECEIPT audio row populated
  • [ ] Addressables strip PR does not touch AudioBanks_* group
  • [ ] Deck / Steam installed smoke (if fest target includes Deck)

Prevention

  1. Never strip groups containing .bank without audio QA sign-off.
  2. Add bank enumeration CI step on fest upload workflow.
  3. Pair with Wwise/FMOD alternatives resource for middleware checklist rows.
  4. Trailer LUFS passes on WAV do not prove in-game banks shipped—keep receipts separate.
  5. Document fest vs playtest bank groups in playtest_scope_map_v1.json notes 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

Prove banks in the Build Report before you prove LUFS on the trailer—fest players hear the player build, not the project folder.