From 754b299f7a0afd8fced9a87ee291b9c884e01aa0 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 9 Jul 2026 12:44:13 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20close=20#189=20(fountain=20water=20spra?= =?UTF-8?q?y)=20=E2=80=94=20user=20visual=20gate=20passed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "Fountain is back! We can close it." Root cause was #190 (entity-id overflow), not the light-carrier hydration fix directly. Moved to Recently closed with the mechanism summary; the candle-flame identification sub-thread is noted as an unraised residual rather than a new open issue, since the user didn't re-flag it. Co-Authored-By: Claude Sonnet 5 --- docs/ISSUES.md | 73 ++++++++++++-------------------------------------- 1 file changed, 17 insertions(+), 56 deletions(-) diff --git a/docs/ISSUES.md b/docs/ISSUES.md index aeefe4a7..4e663e08 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -46,62 +46,6 @@ Copy this block when adding a new issue: --- -## #189 — Ambient particle scripts (fountain water, possibly candle flames) don't render indoors - -**Status:** 🟡 LIKELY FIXED (`e651cb6d`, #190) — pending final user visual re-confirmation -**Severity:** MEDIUM -**Filed:** 2026-07-09 -**Component:** rendering — particles / PhysicsScript - -**Description:** In the Town Network fountain room (`0x00070144`), the fountain -has no visible water-spray particle effect. User also reported missing candle -flames in the same area (unconfirmed which object(s) those are — see Root -cause below). - -**Root cause / status:** NOT the A7.L1 mesh-empty hydration gate itself -(`EntityHydrationRules.ShouldKeepEntity`) — directly refuted via dat-truth -(`Issue93TownNetworkFountainRoomLightInspectionTests. -FountainAndCandleSetup_DefaultScriptAndMeshSurvivorCount_Dump`): the fountain's -Setup (`0x02000AA3`) has a surviving mesh part (not dropped) AND a real -`DefaultScript.DataId = 0x33000B21` (almost certainly the water-spray -PhysicsScript) — hydration itself was fine. - -**Found instead (via revert-test, per user request): #190, an entity-id -overflow the light fix triggered as a SIDE EFFECT.** The mesh-carrier fix -kept ~394 more entities alive per landblock, pushing the Town Network's -interior-entity counter from 248 to 277 — past the id scheme's 8-bit budget -(`ACDREAM_DUMP_ENTITY=0x02000AA3` showed the fountain's `entity.Id` shift from -`0x400007F8` to `0x40000815`, misdecoding as landblock Y=0x08 instead of the -true Y=0x07). `EntityScriptActivator` keys script/particle tracking on -`entity.Id` directly, so the aliased id broke the fountain's script tracking. -Fixed by `#190` (widened the id counter 8→12 bits). Post-fix, -`ACDREAM_DUMP_ENTITY` confirmed the fountain's id (`0x40007115`) decodes -correctly again — **not yet re-confirmed visually by the user** (session moved -on to an FPS question, then a movement bug, before the fountain was re-checked). - -The guessed "candle" objects (`0x02001967`, 16 arranged around the fountain) -turned out to have real mesh and `DefaultScript == 0` — they are NOT candles -and carry no script at all, so the actual candle-flame source objects are -still unidentified; that part of this issue stays open regardless of #190. - -**Next steps:** -1. Get the user's visual confirmation that the fountain water spray is back. -2. Identify the real candle-flame source objects in this room (not - `0x02001967`) before assuming they share a root cause with the fountain. - -**Files:** -- `src/AcDream.App/Rendering/Vfx/EntityScriptActivator.cs` -- `src/AcDream.Core/World/InteriorEntityIdAllocator.cs` (the #190 fix) -- `src/AcDream.App/Streaming/GpuWorldState.cs` (DefaultScript fire/stop sites) -- `src/AcDream.Core/Vfx/ParticleHookSink.cs` -- `tests/AcDream.Core.Tests/Rendering/Issue93TownNetworkFountainRoomLightInspectionTests.cs` (dat-truth apparatus, reusable) - -**Acceptance:** The Town Network fountain shows a water-spray particle effect -matching retail; candle/torch flame sources in the same room are identified -and render correctly. - ---- - ## #191 — Tapping W (brief forward press) glides forward without playing the step animation **Status:** OPEN @@ -7401,6 +7345,23 @@ outdoors at the angle that previously erased it. # Recently closed +## #189 — Ambient particle scripts (fountain water, possibly candle flames) don't render indoors + +**Status:** DONE (2026-07-09, user visual gate passed — "Fountain is back! We +can close it"). Root cause was NOT the A7.L1 mesh-carrier hydration fix itself +(the fountain's Setup `0x02000AA3` always had a surviving mesh part + a real +`DefaultScript.DataId`) — it was `#190`, an entity-id overflow that fix +triggered as a side effect (see `#190` below for the full mechanism). Fixed by +`e651cb6d`; `ACDREAM_DUMP_ENTITY` confirmed the fountain's id decodes +correctly post-fix, and the user confirmed the water spray visually. **Residual +note, not re-raised by the user, kept for a future session:** the guessed +"candle" objects (`0x02001967`, 16 arranged around the fountain) turned out to +have real mesh and `DefaultScript == 0` — not candles, no script at all — so +if candle-flame absence resurfaces, the actual source objects in this room are +still unidentified. + +--- + ## #190 — Interior entity id counter overflowed past its 8-bit budget, aliasing into the next landblock **Status:** DONE (2026-07-09, `e651cb6d`). Found while investigating #189