We Recovered a Silent Fest Demo After Proton Experimental Vulkan Loader Regression - 2026 Case Study
This is a synthesized case study—a field pattern from July–October 2026 Steam Deck fest demos where the Windows depot passed Wednesday smoke and menu FPS cap receipts, but installed Deck builds launched to a black or frozen frame with zero audio after players (and facilitators) moved to Proton Experimental on a newer Steam client image. Discord threads said “audio driver bug.” Engineering could not reproduce on the Windows QA PC.
There are no invented crash rates, no fake refund percentages, and no named studio personas. Recovery means pinning Proton, proving Vulkan/audio init on Deck with logs—not assuming Windows green gates transfer to Proton.
Pair with 16 ProtonDB and Deck log export tools, MangoHud GPU idle case study (heat ≠ silence), Deck Verified autumn refresh, menu FPS opinion, crash symbolicate tutorial (Windows .dmp lane), and planned help MangoHud GPU 99% despite receipt. Forward Help #12 when logs show GPU peg with audio present.
Non-repetition note: FMOD WebGL silent snapshots is browser audio. MangoHud case study is GPU % at idle. This URL is Deck Proton Vulkan/audio output failure after Experimental bump—game runs, no sound, or hung present.
Why this matters now (October 2026)
- Proton Experimental velocity — Steam client updates move faster than fest branch promotion cadence.
- Windows-first QA — Teams smoke on desktop; Deck failures arrive from players first.
- Silent ≠ crashed — No minidump; crash symbolicate receipt never triggers.
- Refund language — “No sound on Deck” tags pollute refund dashboards beside real crashes.
- Receipt false greens —
menu_fps_capanddemo_smokepass on Windows whileproton_audio_okcolumn missing on BUILD_RECEIPT.
Direct answer: Record proton_pin on BUILD_RECEIPT; reproduce on installed Deck with Experimental on; capture deck log bundle; rollback or pin Proton; file proton_audio_recovery_receipt_v1.json with audio_smoke_pass: true before re-promotion.
Beginner quick start — what “recovered” means
Recovered in this pattern means:
- Reproduced silence on Deck with documented Proton version—not only Windows.
- Identified Experimental regression vs game regression (pin swap test).
- Restored audible menu + gameplay on same
build_labelafter pin/launch fix. - Logged receipt JSON and updated BUILD_RECEIPT
proton_pin. - Reduced new “silent on Deck” facilitator rows for seven days on that label (qualitative).
Not recovered: Claiming “works on my PC” without Deck log bundle.
Symptom checklist (beginner)
| Player report | Often actually |
|---|---|
| “No sound on Deck” | Vulkan init fail, not FMOD bank |
| “Black screen then nothing” | Swapchain + silent audio combo |
| “Works on desktop Steam” | Native Windows path OK; Proton path broken |
| “Worked yesterday” | Client updated Proton overnight |
| “Menu music gone only” | Partial init—still block promotion |
If the game hard crashes to desktop, switch to crash symbolicate lane first.
Two lanes beginners confuse
| Lane | Evidence | Tooling |
|---|---|---|
| Windows native | .dmp, Event Viewer |
Desktop QA |
| Deck / Proton | Player.log, Proton log, MangoHud |
Deck log listicle |
| WebGL / HTML5 | Browser console | itch MIME helps |
| FMOD bus snapshot | WebGL only | FMOD WebGL blog |
Fest Windows depot teams still owe Deck lane proof when marketing mentions Deck Verified.
Starting state (typical wrong assumptions)
| Layer | Belief | Reality |
|---|---|---|
| QA | “Smoke passed” | Windows smoke only |
| Audio | “Must be FMOD” | Proton Vulkan before banks load |
| ProtonDB | “Gold tier” | Community tier ≠ your Experimental pin |
| BUILD_RECEIPT | No proton_pin row |
Cannot diff client updates |
| Support | Screenshot enough | Need log zip + build_label |
Root cause pattern (synthesized)
| Mechanic | Deck symptom | Windows |
|---|---|---|
| Experimental Vulkan loader bump | Silent or hang at boot | Unaffected |
| Game forces Vulkan without fallback | Fails on new loader | Older driver OK |
Launch option -force-vulkan stale |
Breaks after Proton update | N/A |
| PipeWire / pulse init race | Rare silent until focus | N/A |
| Shipped without Deck audio smoke | Found at fest | Never tested |
Often triggered 48 hours after facilitator updated Steam OS beta.
Beginner mistake: Hearing audio on a developer PC Steam install (Windows native) and closing the ticket—always ask “which hardware and which Proton channel?”
Working dev mistake: Shipping AUDIO_FMOD_FIX commit without T2 pin swap proof—proves middleware guilt, not Proton innocence.
Timeline (five working days — pattern timing)
| Day | Focus | Output |
|---|---|---|
| D1 | Repro on Deck + log bundle | deck-logs/<build_label>/ |
| D2 | Pin swap (Experimental on/off) | proton_pin_test.md |
| D3 | Launch options / engine flags | Patch or launch_options.txt |
| D4 | Audio smoke golden path | audio_smoke_pass evidence |
| D5 | Receipt + BUILD_RECEIPT | proton_audio_recovery_receipt_v1.json |
Gates A1–A6 (Proton audio recovery)
| Gate | Name | Pass criterion |
|---|---|---|
| A1 | Deck installed repro | Not remote play guess |
| A2 | build_label matches receipt |
No stray depot |
| A3 | Proton version recorded | Experimental vs stable noted |
| A4 | Pin swap differentiates | Game vs Proton fault isolated |
| A5 | Menu + gameplay audio audible | Facilitator sign-off |
| A6 | Receipt archived | promotion_allowed: true |
Day 1 — Reproduce with log bundle (A1–A2)
Facilitator steps
- Install fest/playtest build on Deck; note on-screen
build_label. - Confirm Steam client channel (stable vs beta) in
REPRO_STEPS.txt. - Launch game; wait 60 seconds on title (audio often fails before gameplay).
- Run MangoHud 5 minutes (deck log listicle Tool 3).
- Copy Proton +
Player.log(Tool 6). - Zip; file
deck_log_bundle_receipt_v1.json.
Fail A1 if: only Windows repro attached.
Log lines engineers grep
err:vulkan
VK_ERROR
wine: failed
AL lib: (EE)
FMOD failed to init
Presence of Vulkan errors with absent FMOD lines → suspect Proton loader first.
Day 2 — Pin swap matrix (A3–A4)
| Test | Proton setting | Expected if Proton fault |
|---|---|---|
| T1 | Experimental on | Silent |
| T2 | Experimental off (stable) | Audio returns |
| T3 | Prior Experimental build (if possible) | Audio returns |
| T4 | Windows desktop same build | Audio OK |
Document in proton_pin_test.md:
# Proton pin test — fest-demo-2026-10-rc5
T1 Experimental 2026-05-xx: SILENT (logs: vulkan init)
T2 Stable Proton 9.x: AUDIO OK
T4 Windows 11 desktop: AUDIO OK
Conclusion: Proton Experimental regression; pin stable for promotion week
Pass A4: T2 restores audio without game byte change.
Day 3 — Launch and engine mitigations
Unity / IL2CPP common mitigations
- Remove stale
-force-vulkanfrom Steam launch options. - Try
-force-d3d11on Proton per Deck Verified refresh guidance—document in receipt, not blind cargo-cult. - Verify FMOD/Wwise init after first frame presented (not in
Awakebefore graphics).
Godot / custom engines
- Check Vulkan vs OpenGL export template on Deck.
AudioServeroutput device logs inPlayer.log.
Scope rule: If pin rollback fixes audio, ship pin policy before engine refactors—fest week is not rewrite week.
Day 4 — Audio smoke golden path (A5)
Read aloud on installed Deck after fix:
- Cold boot game from Steam library.
- Hear menu music or UI click within 30 seconds.
- Start new game / continue.
- Trigger one gameplay SFX.
- Open pause; confirm UI sound.
- Alt-tab out and back (PipeWire focus test).
- Quit; relaunch once.
Record short phone video or facilitator attestation in receipt—video optional if logs strong.
Pair: GIF carousel audio opinion—store marketing silent ≠ in-game silent.
Day 5 — proton_audio_recovery_receipt_v1.json
{
"schema": "proton_audio_recovery_receipt_v1",
"build_label": "fest-demo-2026-10-rc5",
"surface": "fest_public",
"platform": "steam_deck",
"proton_pin": "stable-9.x-2026-05",
"proton_pin_test_summary": "Experimental silent; stable audio OK",
"gates": {
"A1_deck_installed_repro": true,
"A2_build_label_match": true,
"A3_proton_version_logged": true,
"A4_pin_swap_isolated": true,
"A5_audio_smoke_pass": true,
"A6_receipt_archived": true
},
"deck_log_bundle_path": "release-evidence/deck-logs/fest-demo-2026-10-rc5.zip",
"promotion_allowed": true,
"human_signoff": { "role": "engineer", "utc": "2026-05-31T17:00:00Z" }
}
BUILD_RECEIPT columns
"proton_pin": "stable-9.x-2026-05",
"proton_audio_ok": true,
"proton_audio_recovery_receipt_path": "release-evidence/deck-logs/proton_audio_recovery_receipt_v1.json",
"deck_log_bundle_ok": true
Thursday row review diffs proton_pin when client updates mid-fest.
Cousin failures (do not mis-route)
| Symptom | Read instead |
|---|---|
| GPU 99% idle, audio OK | MangoHud case study |
| WebGL FMOD snapshot silent | FMOD WebGL blog |
| InvalidKey / UI keys | Addressables challenge |
| Windows minidump | Crash symbolicate tutorial |
Evidence folder layout
release-evidence/deck-logs/fest-demo-2026-10-rc5/
REPRO_STEPS.txt
proton_pin_test.md
mangohud-idle.csv
mangohud-combat.csv
player.log
proton-*.log
protondb-permalink.txt
deck_log_bundle_receipt_v1.json
proton_audio_recovery_receipt_v1.json
optional_menu_audio_clip.mp4
Zip once per build_label per incident—partners grep folders, not Discord threads.
Engine notes (working dev)
| Engine | Deck audio risk | Quick check |
|---|---|---|
| Unity + FMOD | Bank load before graphics device | Delay RuntimeManager.Init until first scene |
| Unity + Wwise | Wrong plugin path on Linux | Linux bank path in BUILD_RECEIPT |
| Godot 4.x | Vulkan default export | Test OpenGL template on Deck once |
| Unreal | Vulkan RHI on Proton | -d3d11 launch option trial in A4 matrix |
| GameMaker | Less common | Still require Deck smoke |
Audio middleware logs matter after Vulkan presents first frame—order bugs mimic Proton silence.
Facilitator script (Discord pin)
Deck blocker template: export
deck-logs-<build_label>-<date>.zipwith Proton logs + MangoHud CSV +REPRO_STEPS.txt. Note Steam → Settings → Proton Experimental on/off. Without logs we cannot tell Proton regression from game regression.
Link multi-channel facilitator contract.
Incident response (first 90 minutes)
| Minute | Owner | Action |
|---|---|---|
| 0–15 | Support | Confirm build_label, Experimental on/off |
| 15–35 | Facilitator | Repro + zip logs |
| 35–50 | Engineer | Pin swap T1/T2 |
| 50–70 | Engineer | Decide pin policy or hotfix |
| 70–90 | Producer | Hold promotion; update BUILD_RECEIPT |
Do not publish “audio fix incoming” without A5 proof—store reviews accumulate faster than patches.
Worked vignette (composite, no invented metrics)
Setup: Co-op fest demo fest-demo-2026-10-rc5, Windows QA green, October playtest wave.
Tuesday: Facilitators upgrade Steam OS; Experimental enabled globally.
Wednesday: #playtest reports “silent menu” on Deck; Windows stream from same build has audio.
Thursday: Pin swap shows Experimental fault; team pins stable Proton for fest week; launch options unchanged.
Friday: proton_audio_recovery_receipt_v1.json true; proton_pin on BUILD_RECEIPT; new Deck reports shift to balance issues—not silence.
Pattern timing varies; pin swap is the diagnostic hinge.
BUILD_RECEIPT diff example (conceptual)
| Field | rc4 (broken week) | rc5 (recovery) |
|---|---|---|
proton_pin |
experimental-2026-05 |
stable-9.x-2026-05 |
proton_audio_ok |
false |
true |
deck_log_bundle_ok |
true (logs existed) |
true |
menu_fps_cap_ok |
true |
true |
Shows FPS cap ≠ audio OK—two columns required.
Steam client update mid-fest playbook
When Valve ships client update during fest:
- Freeze promotions 2 hours.
- Re-run T1/T2 pin swap on one facilitator Deck.
- If T2 fails, escalate to engine—if T2 passes, update
proton_pinonly. - Post changelog line: “Deck users on Experimental: switch to stable or wait rc6.”
- Do not re-run full seven-day Addressables challenge unless content PR merged.
Partner diligence sentence
“Deck installs include
proton_audio_recovery_receipt_v1.json,deck_log_bundle_receipt_v1.json, and documentedproton_pinfor the promotion build—Windows smoke logs do not substitute for Deck audio smoke.”
Attach beside top-20 receipts hub.
jq CI sketch (receipt gate)
#!/usr/bin/env bash
set -euo pipefail
jq -e '
.schema == "proton_audio_recovery_receipt_v1"
and .promotion_allowed == true
and .gates.A5_audio_smoke_pass == true
' "$1"
Run on promotion branches targeting fest_public.
Prevention (post-recovery policy)
- Deck audio smoke on every promotion—15 minutes, installed build.
proton_pinrow mandatory on BUILD_RECEIPT.- Facilitator README — Experimental allowed only with daily log bundle.
- ProtonDB permalink saved when reports mention Experimental (Tool 1).
- Freeze Experimental during fest week unless receipt re-run.
Promotion gate integration
[ ] proton_audio_ok true on BUILD_RECEIPT
[ ] deck_log_bundle_receipt promotion_allowed true
[ ] A5 audio smoke documented
[ ] proton_pin matches Steam client screenshot in evidence
[ ] Wednesday smoke same build_label (Windows leg)
Windows smoke does not satisfy Deck audio rows.
Refund and support crosswalk
Tag dashboard rows:
| Tag | When |
|---|---|
perf-deck |
Heat/GPU (MangoHud case study) |
audio-deck |
Silence / missing SFX (this pattern) |
crash |
Minidump present |
store-copy |
Trailer/store mismatch |
Do not merge audio-deck into crash—engineering queues differ.
Common mistakes
- Testing audio in Editor on Windows only
- Assuming FMOD fix without pin swap
- Promoting on ProtonDB “Gold”
- Skipping
proton_pinon BUILD_RECEIPT - Confusing with GPU idle receipt pass
- Sending screenshots without logs
- Forcing Experimental for “latest compat” during fest freeze week
- Merging Deck audio into Windows-only smoke without a second receipt column
Key takeaways
- Silent Deck demos spiked with Proton Experimental velocity in 2026 H2.
- Pin swap isolates Proton vs game faster than week-long audio refactors.
proton_audio_recovery_receipt_v1.jsonwires Deck audio to BUILD_RECEIPT.- Deck log bundle is evidence—Discord photos are not.
- Windows smoke green does not imply Deck audio green.
- MangoHud heat and Vulkan silence are cousin symptoms—route correctly.
- Forward Help #12 when GPU peg with audio present.
- Pair Addressables challenge when UI shows keys and silence.
- Deck Verified refresh documents Proton test expectations.
- Next cluster row #5 — refund↔BUILD_RECEIPT correlation playbook.
ProtonDB research discipline (Day 1 add-on)
When facilitators save Tool 1 permalink from Deck log listicle:
- Filter reports mentioning Experimental in last 30 days.
- Note if reports cite Vulkan or silent keywords.
- Record access date in
protondb-permalink.txt. - Do not treat Gold/Platinum as your build’s pass—community tiers describe other pins.
If ProtonDB quiet but Discord loud, trust installed logs over stars.
Audio middleware triage order
- Graphics device presents (Vulkan/D3D11)
- OS audio sink (PipeWire pulse)
- Middleware init (FMOD/Wwise)
- Bank load paths (Linux vs Windows)
- In-game bus snapshots (gameplay only)
Skipping to step 4 while step 1 fails wastes a sprint.
Marketing and store truth
Store-demo mismatch recovery covers trailer lies. This case study covers Deck runtime silence when store promised sound—FAQ annex for support macros:
“Our Windows build plays audio; if you are on Steam Deck, confirm Proton Experimental is disabled per patch notes, or update to build_label
…which pins stable Proton.”
Comparison to MangoHud recovery timeline
| Dimension | MangoHud case study | This case study |
|---|---|---|
| Primary signal | GPU % pegged | Zero audio / hang |
| Receipt | mangohud_idle_recovery_receipt_v1.json |
proton_audio_recovery_receipt_v1.json |
| Fix lean | Static menu render | Proton pin / Vulkan path |
| False green | menu_fps_cap pass |
demo_smoke Windows pass |
Teams may need both receipts on same build_label during October.
Wednesday smoke alignment
Wednesday smoke S-gates cover boot and 60s golden path on Windows. Add internal note:
Deck audio smoke is not a substitute for S-gates; S-gates are not Deck audio proof.
Extend smoke checklist doc with one row: deck_audio_smoke_scheduled Y/N.
Standing producer questions (30 seconds)
- What is
proton_pinon the candidate BUILD_RECEIPT? - Did facilitators test Experimental on since last promotion?
- Is
proton_audio_oktrue with archived zip path? - Any
audio-deckrefund tags still open? - Did we message players about Experimental toggle?
If (2) is “unknown,” promotion waits.
Receipt pairing: File proton_audio_recovery_receipt_v1.json in the same zip as deck_log_bundle_receipt_v1.json so Thursday row review diffs one evidence folder—not two orphan JSON files on different laptops. Auditors thank you.
FAQ
Is this the same as “game runs but no music” on Windows?
Usually no—this case study is Deck/Proton. Run Windows audio smoke separately.
Should we ban Proton Experimental for fest?
Many teams pin stable for fest week and re-test Experimental after—document policy in facilitator contract.
Can we fix with launch options only?
Sometimes -force-d3d11 helps—prove with A4 pin matrix before relying on it.
What if audio returns but video stutters?
File separate perf-deck receipt; do not mark proton_audio_ok false if audio smoke passed.
Does crash symbolicate replace this?
No—silent failures may produce no minidump. Run both receipts on promotion.
Should we test on Steam Deck LCD and OLED?
Yes—both share Proton stack; record model in REPRO_STEPS.txt. Battery metrics differ; audio path often does not.
Can players fix by opting into Experimental for “compat”?
Discourage during fest week—your receipt documents tested pin, not player-chosen Proton roulette.
Recovery definition for producers
Recovered does not mean “every Deck in the world.” It means: for your promoted build_label, facilitators following your README reproduce audible golden path on installed build with documented proton_pin, and new silence reports stop clustering on that label for one fest week. Scope honesty prevents over-promising in October patch notes.
Closing discipline
Archive one facilitator-attested audio_smoke_pass.txt with UTC timestamp and Deck serial last four digits—video optional when logs and pin matrix are complete.
Half-pinned Proton is worse than honest delay: promoting while Experimental silently breaks audio produces refund language that refund dashboard tags as store-copy when the real fault was compat evidence. File the receipt, pin the client, message facilitators—then promote.
Related reading
- 16 ProtonDB and Deck log export tools
- MangoHud GPU idle case study
- Deck Verified autumn refresh
- Wednesday demo smoke
- BUILD_RECEIPT beginner
- Refund signal dashboard
- Top 20 evidence receipts
- Outbound: ProtonDB, Steam Deck compatibility (Steamworks)
Next in cluster: October refund signal dashboard BUILD_RECEIPT correlation trend playbook (published); blog backlog #6 HDR screenshot bloom art pass.