- #137: dungeon collision wrong at doors / wall openings (EnvCell collision; needs repro). - #138: teleport OUT of a dungeon loads the outdoor world incompletely (missing trees/ scenery, broken collision) + a position desync (avatar moves but player position doesn't) — hypothesised as the dungeon-streaming collapse→EXPAND gap (same machinery as #135). - #135 marked DONE (user-verified FPS-steady dungeon login); #136 closed (editor-marker hide). - CLAUDE.md current-state refreshed: #135/#136 shipped, A7 lighting + #137/#138 remaining. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
fd0ecfcf2e
commit
d2b8a51426
2 changed files with 79 additions and 16 deletions
27
CLAUDE.md
27
CLAUDE.md
|
|
@ -108,21 +108,18 @@ movement queries.
|
|||
|
||||
## Current state
|
||||
|
||||
**Currently working toward: M1.5 — Indoor world feels right.** Building/cellar
|
||||
demo DONE; **dungeons now RENDER** (2026-06-13, autonomous /loop): G.3a teleport
|
||||
hold+place + **Bug A** (validated-claim keeps the dungeon landblock prefix, `2ce5e5c`)
|
||||
+ **login-into-dungeon recenter** (`47ae237`) → live `0x0007` dungeon renders, navigable,
|
||||
correct membership, WB-DIAG instances **9.1M→39K**. **#95 was a Bug-A symptom, NOT an
|
||||
unbounded flood — DO NOT port `grab_visible_cells` stab_list bounding** (the flood is
|
||||
already bounded; the "terrain-less landblock" framing was refuted — dungeons are
|
||||
flat-terrain + EnvCells). REMAINING for M1.5: **A7 dungeon torch/point-lighting** (dungeon
|
||||
gets retail's flat 0.2 indoor ambient but `Setup.Lights` torches aren't registered → dim,
|
||||
"lighting off"); needs visual iteration. M2 (CombatMath) deferred. Detail in **#133/#95**
|
||||
(ISSUES) + the render digest's top banner.
|
||||
Recent closes (2026-06-12/13): #119/#128, #112, #113, #124,
|
||||
#129/#130/#131/#132, UN-2, #108-residual, #127, #125; #116 partial (Ghidra
|
||||
threshold fix). Keep this paragraph ≤5 lines + pointers — detail in the
|
||||
docs below, NOT here.
|
||||
**Currently working toward: M1.5 — Indoor world feels right.** Dungeons RENDER +
|
||||
are navigable; **login into a dungeon** now loads + places the player and is
|
||||
**FPS-steady from the start** (#135 pre-collapse + indoor cell-floor spawn gate,
|
||||
`712f17f`+`2c92375`). The dungeon **"red cone"** was an editor-only placement marker
|
||||
acdream inherited from WB (retail hides it via distance degrade) — FIXED (#136 `6f81e2c`).
|
||||
REMAINING for M1.5: **A7 dungeon lighting** (LightBake Core landed `3b93f91`; per-vertex
|
||||
bake integration + the per-pixel torch OVER-blow still open — #79/#93); **#137 dungeon
|
||||
collision** (doors / wall openings); **#138 teleport-OUT of a dungeon** loads the outdoor
|
||||
world incompletely + position desync (the collapse→EXPAND gap — same machinery as #135).
|
||||
M2 (CombatMath) deferred. Detail in ISSUES (#135–#138) + the render/physics digests.
|
||||
Recent closes (2026-06-14): #135, #136. Keep this paragraph ≤6 lines + pointers — detail
|
||||
in the docs below, NOT here.
|
||||
|
||||
For canonical state, read in this order:
|
||||
- [`docs/plans/2026-05-12-milestones.md`](docs/plans/2026-05-12-milestones.md) — milestone targets + freeze list per milestone
|
||||
|
|
|
|||
|
|
@ -46,6 +46,72 @@ Copy this block when adding a new issue:
|
|||
|
||||
---
|
||||
|
||||
## #138 — Teleport OUT of a dungeon loads the outdoor world incompletely + position desync
|
||||
|
||||
**Status:** OPEN
|
||||
**Severity:** MEDIUM (breaks the dungeon→outdoor transition; collision + visuals wrong after exit)
|
||||
**Filed:** 2026-06-14
|
||||
**Component:** streaming — dungeon collapse↔expand (the #133/#135 collapse) + teleport-arrival
|
||||
|
||||
**Description (user):** taking a portal OUT of a dungeon to the outdoor world often loads
|
||||
the world incompletely — **fewer objects than expected (e.g. missing trees/scenery)**, and
|
||||
**collision doesn't work properly**. There's also a **position desync**: "it's like I'm not
|
||||
moving while my character is moving" (the avatar animates/advances but the player's
|
||||
actual position / camera doesn't track, or vice-versa).
|
||||
|
||||
**Root cause / status (hypothesis — needs investigation):** very likely a gap in the
|
||||
dungeon-streaming **collapse→expand** introduced for #133/#135. Inside a dungeon, streaming
|
||||
is COLLAPSED to the single dungeon landblock (radius-0). On teleport OUT,
|
||||
`StreamingController.ExitDungeonExpand` must rebuild the full 25×25 outdoor window at the new
|
||||
center. Suspects: (a) the expand doesn't fully re-enqueue / re-hydrate the outdoor landblocks
|
||||
(→ missing trees/scenery + no collision because shadow-object registration never ran for the
|
||||
un-hydrated blocks); (b) the teleport-arrival recenter (`OnLivePositionUpdated`) +
|
||||
`PreCollapseToDungeon`/observer interaction leaves the streaming observer pinned wrong after
|
||||
exit; (c) the position desync = the player controller / streaming observer disagree on the
|
||||
post-exit world position (the avatar moves in one frame, the streaming/camera in another).
|
||||
Pairs with #135 (`712f17f`/`2c92375`) — same collapse machinery; the EXIT path is the gap.
|
||||
|
||||
**Files:** `src/AcDream.App/Streaming/StreamingController.cs` (`ExitDungeonExpand`, the
|
||||
collapse/expand hysteresis), `src/AcDream.App/Rendering/GameWindow.cs` (`OnLivePositionUpdated`
|
||||
teleport recenter ~4912, the streaming Tick gate ~6890, the PortalSpace observer branch),
|
||||
`TeleportArrivalController`. Cross-check the post-exit shadow-object/collision registration.
|
||||
|
||||
**Acceptance:** portal out of the 0x0007 dungeon → full outdoor world streams (trees/scenery
|
||||
present), collision works, and the player position tracks correctly (no avatar-vs-camera desync).
|
||||
|
||||
---
|
||||
|
||||
## #137 — Dungeon collision incorrect at doors and wall openings
|
||||
|
||||
**Status:** OPEN
|
||||
**Severity:** MEDIUM (movement/collision correctness in dungeons)
|
||||
**Filed:** 2026-06-14
|
||||
**Component:** physics — EnvCell collision (doors, portal openings, cell geometry)
|
||||
|
||||
**Description (user):** collision is still wrong in dungeons — **doors** and **openings in
|
||||
walls** in particular. (Symptoms not fully characterized yet: likely walking through
|
||||
openings that should block / blocking at openings that should pass, and door collision not
|
||||
matching the door's open/closed state.)
|
||||
|
||||
**Root cause / status (to investigate):** dungeon collision is EnvCell-based — the cell's
|
||||
collision BSP + portal openings + per-cell static objects (doors). Candidates: door
|
||||
apparatus collision in EnvCells (open/closed BSP swap) not fully ported; portal-opening
|
||||
(wall gap) collision geometry handled differently from buildings; the per-cell
|
||||
shadow-object registration (A6.P4, see the physics digest) for dungeon EnvCell statics.
|
||||
Related families: #32 (edge-slide), #116 (slide-response), the door-collision saga
|
||||
(see `feedback_dedup_keys_after_cardinality_change`, `feedback_retail_per_cell_shadow_list`).
|
||||
Needs a targeted repro (which door / which opening, expected vs actual) before fixing —
|
||||
oracle-first per the physics digest.
|
||||
|
||||
**Files:** `src/AcDream.Core/Physics/` (EnvCell collision, CellTransit, the door apparatus),
|
||||
`src/AcDream.Core/Physics/ShadowObjectRegistry.cs` (per-cell registration). See
|
||||
`claude-memory/project_physics_collision_digest.md` (the collision SSOT + DO-NOT-RETRY table).
|
||||
|
||||
**Acceptance:** doors block/pass per their open/closed state; wall openings pass; solid walls
|
||||
block — matching retail, in the 0x0007 dungeon.
|
||||
|
||||
---
|
||||
|
||||
## #136 — DONE — "red cone" in the 0x0007 dungeon was an editor-only placement marker acdream drew (retail hides it)
|
||||
|
||||
**Status:** FIXED `6f81e2c` (2026-06-14) — verified live via frame dump: the red cone +
|
||||
|
|
@ -92,7 +158,7 @@ under the #79/#93 A7 lighting umbrella.
|
|||
|
||||
## #135 — ~30 s low-FPS ramp at login (≈10 fps → high) before streaming settles
|
||||
|
||||
**Status:** FIX LANDED — pending visual gate (login into the 0x0007 dungeon → FPS steady in ~1–2 s, no neighbour load/unload churn)
|
||||
**Status:** DONE `712f17f`+`2c92375` (2026-06-14) — user-verified: login into the 0x0007 dungeon is FPS-steady from the start; dungeon loads + places the player. (NOTE: the teleport-OUT path has a separate streaming gap — see #138.)
|
||||
**Severity:** LOW (startup-only; self-corrects)
|
||||
**Filed:** 2026-06-14
|
||||
**Component:** streaming — first-frame bootstrap vs the dungeon collapse
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue