fix #417: world ambience kept playing at character select after the in-world logoff
The character-session reset manifest had no audio step: retail's logoff destroys the world's sound sources with the world, but our OpenAL world pool and ambient scheduler are process-lifetime — the continuous ambient beds played on at character select and the scheduler kept RE-FIRING deadlines against the stale listener (Suspend/StopAll had zero callers; WorldGenerationQuiescence only cycles around teleport-style generation replaces). New WorldAudioSessionGate: the reset manifest's 'world audio' step stops all sixteen world-pool voices (SuspendWorldAudio) and drops every ambient deadline (StopAll); the pool reopens at the entered-world edge through the new default-null LiveSessionEnteredWorldBindings.ResumeWorldAudio binding, invoked first in ApplyEnteredWorld. The ambient soundscape needs no explicit resume — the next objcell observation rebuilds it exactly as a cell change always did. Covers logout, reconnect, and full stop uniformly. UI-pool sounds (interface bank, portal cues) untouched by design. App tests 5568/3 skips, Runtime 1756/0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
91c1962b0d
commit
0bb47f2711
8 changed files with 104 additions and 2 deletions
|
|
@ -24,6 +24,32 @@ What does NOT go here:
|
|||
- Every session: scan OPEN issues at start; promote/close anything we touched during the session before ending.
|
||||
- Promoting to a Phase: mark as `DONE (promoted to Phase X)` + commit SHA where the Phase entry landed.
|
||||
|
||||
## #417 — World ambience keeps playing (and re-firing) on the character-select screen after the in-world logoff
|
||||
|
||||
**Status:** ✅ FIXED 2026-08-17 (logout-audio round; fix + tests in the same
|
||||
commit as this entry). **Symptom:** log out to character select — the old
|
||||
world's ambient noise continues. **Root cause:** the character-session
|
||||
reset manifest had NO audio step at all. Retail's logoff destroys the
|
||||
world's sound sources WITH the world, so character select is silent; our
|
||||
OpenAL world pool and the ambient scheduler are process-lifetime, so after
|
||||
the reset the playing voices (including the continuous ambient beds) ran
|
||||
on, and `AmbientSoundController.Tick` kept RE-FIRING deadlines against the
|
||||
stale listener (the region stays installed and nothing suspends the
|
||||
controller — `Suspend`/`StopAll` had zero callers outside the class; the
|
||||
existing `WorldGenerationQuiescence` suspend only cycles around generation
|
||||
REPLACES, i.e. teleports, never the logout reset). **Fix:** a new
|
||||
`WorldAudioSessionGate` (engine `SuspendWorldAudio` — stops all sixteen
|
||||
world-pool voices and gates new plays — plus ambient `StopAll` — drops
|
||||
every deadline; the soundscape rebuilds on the next objcell observation
|
||||
exactly as a cell change always did) wired as the reset manifest's new
|
||||
"world audio" step, with the pool reopened at the entered-world edge via
|
||||
the new `LiveSessionEnteredWorldBindings.ResumeWorldAudio` binding
|
||||
(default-null, headless-safe), invoked FIRST in `ApplyEnteredWorld` so no
|
||||
entered-world callback can emit into a closed pool. Covers logout,
|
||||
reconnect, and full-stop uniformly (all run the same manifest). UI-pool
|
||||
sounds (interface bank, portal cues) are untouched by design — retail's
|
||||
logoff plays its cue through the same interface path.
|
||||
|
||||
## #416 — Character-select roster hover highlight never clears (sweeping the roster leaves every row highlighted)
|
||||
|
||||
**Status:** ✅ FIXED 2026-08-17 (same round as #414; fix + tests in the same
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue