milestone: M1.5 LANDED (building/cellar demo); dungeon demo -> #133/G.3; start M2
M1.5 "Indoor world feels right" lands on its primary building/cellar demo, user-gated across the 2026-06 sessions: multi-floor inn navigation without sling-out/wall-clip, cottage cellar descend+ascend without falling through, walls block everywhere, smooth cell transitions. The holistic Option-A render port (one DrawInside(viewer_cell), BR-2..BR-7 / T1..T6) and the A6.P4 per-cell shadow physics shipped and were gated; the doorway-flap family is closed (#119/#128, #112, #113, #124, #129/#130/#131/#132, #108-residual, #127) and the #90/synthesis workarounds removed. The dungeon half is the one piece NOT landed: attempting the dungeon demo (meeting-hall portal) surfaced issue #133 - teleport-into-a-dungeon snaps the player BEFORE the dungeon landblock streams in (GameWindow.cs:4928 Resolve falls back to the resident Holtburg landblocks -> snaps to an outdoor cell over ocean). That is Phase G.3 (dungeon streaming + PlayerTeleport handling, M4), not a render bug (#95 died with the Option A rewrite). Per the milestones doc's pre-flagged choice, the dungeon demo is promoted to G.3 and M1.5 lands on the building/cellar demo (user decision 2026-06-13). Start M2 "Kill a drudge" - first port target CombatMath.ComputeDamage (port-ready per the combat-math research memo; ACE oracle). Drudges spawn outdoors for the demo, so M2 does not depend on #133/G.3. Files: milestones doc (M1.5 -> LANDED, M2 -> ACTIVE, currently-working- toward flipped), CLAUDE.md current-state -> M2, ISSUES.md #133 filed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
8682a8db70
commit
1bf037a1c9
3 changed files with 116 additions and 13 deletions
|
|
@ -46,6 +46,64 @@ Copy this block when adding a new issue:
|
|||
|
||||
---
|
||||
|
||||
## #133 — Teleport into a dungeon snaps the player BEFORE the dungeon landblock streams in → lands at the old landblock's frame (ocean), not the dungeon
|
||||
|
||||
**Status:** OPEN — promote to **Phase G.3** (Dungeon streaming + portal
|
||||
space + `PlayerTeleport` handling; M4 per the milestones doc, line 360).
|
||||
This is the M1.5 dungeon-demo blocker; the demo is deferred to G.3 (user
|
||||
decision 2026-06-13). Does NOT block M2 combat (drudges can spawn
|
||||
outdoors).
|
||||
**Severity:** HIGH (any far/dungeon teleport is unusable)
|
||||
**Filed:** 2026-06-13 (M1.5 dungeon-demo gate attempt — meeting-hall portal)
|
||||
**Component:** physics/streaming — teleport-arrival snap vs async landblock hydration
|
||||
|
||||
**Symptom (user):** used the meeting-hall portal to a dungeon; "no
|
||||
dungeon, just ocean (where the dungeon is placed)." ACE spams `failed
|
||||
transition for +Acdream from 0x01250126 [30 -60 6.0] to 0xA9B0000E
|
||||
[-32227 -26748 5.9]` … marching south through `0xA993/0xA97F/…/0xA969`
|
||||
at Z≈−0.9 (underwater) — the server keeps rejecting the client's bogus
|
||||
outdoor movement.
|
||||
|
||||
**Root cause (confirmed against code + the diagnostic log
|
||||
`launch-dungeon-diag.log`):** ACE correctly placed the player in the
|
||||
meeting-hall dungeon cell `0x01250126` (landblock `0x0125` = (1,37)). The
|
||||
acdream teleport-arrival handler (`GameWindow.cs:4877-4960`) DOES recenter
|
||||
the streaming origin to (1,37) (`_liveCenterX/Y`, :4910-4912), but then
|
||||
**immediately** calls `_physicsEngine.Resolve(pos=(30,-60,6.005),
|
||||
cell=0x01250126)` to snap the player (:4928-4931) — BEFORE the dungeon
|
||||
landblock has streamed in. The physics engine still has only the OLD
|
||||
Holtburg landblocks resident (A9B4 + neighbours), so `Resolve` can't find
|
||||
the dungeon cell and falls back to an OUTDOOR scan against the resident
|
||||
landblocks: local (30,−60) maps into A9B3 (the loaded block south of the
|
||||
A9B4 spawn) → snaps to `0xA9B3000E`, terrainZ=94, indoor=False (the
|
||||
`[snap]` line). The player is now at Holtburg's south edge; streaming then
|
||||
shifts the frame out from under them and they slide south into ocean
|
||||
(the `[cell-transit] A9B3→A9B2→…` chain mirrors ACE's failed-transition
|
||||
sequence exactly).
|
||||
|
||||
**Fix shape (G.3):** on a far/different-landblock teleport, recenter +
|
||||
HOLD the snap until the destination dungeon landblock/cell hydrates (reuse
|
||||
the #107 `IsSpawnCellReady` spawn-ready gate, applied to the teleport-
|
||||
arrival path instead of only login), then place into the indoor cell via
|
||||
the validated-claim path (#107/#111 `SetPositionInternal` shape). Also
|
||||
audit the streaming controller actually LOADS the far dungeon landblock on
|
||||
recenter (the 5×5 Chebyshev window around the new center), and that the
|
||||
old landblocks unload without stranding the player mid-frame-shift.
|
||||
|
||||
**Files:** `GameWindow.cs:4877-4960` (teleport arrival),
|
||||
`PhysicsEngine.Resolve` (the outdoor fallback), the #107 `IsSpawnCellReady`
|
||||
gate, `StreamingController` recenter.
|
||||
|
||||
**Acceptance:** teleport into the meeting-hall dungeon → the player stands
|
||||
in the dungeon cell, the dungeon renders (3-5 rooms), walls block, no
|
||||
ocean / no ACE `failed transition` spam.
|
||||
|
||||
**Apparatus:** `ACDREAM_PROBE_CELL=1` ([cell-transit]) + `ACDREAM_PROBE_VIEWER=1`
|
||||
([viewer]) + `ACDREAM_WB_DIAG=1` + the always-on `[snap]`/`live: teleport`
|
||||
lines capture the whole chain (`launch-dungeon-diag.log`, this session).
|
||||
|
||||
---
|
||||
|
||||
## #104 — Scene VFX particles not clipped to the PView visible cell set
|
||||
|
||||
**Status:** OPEN
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue