docs: file #185 - local player jams half-way up outdoor stairs (house on stilts)

This commit is contained in:
Erik 2026-07-08 07:14:06 +02:00
parent bd632f6f6d
commit 29e01c3829

View file

@ -46,6 +46,53 @@ Copy this block when adding a new issue:
--- ---
## #185 — LOCAL player jams half-way up outdoor stairs (house on stilts); a jump clears it
**Status:** OPEN (investigated, root cause characterised — NOT yet fixed; a fix touches the frozen collision internals → brainstorm gate first)
**Severity:** MEDIUM
**Filed:** 2026-07-08
**Component:** physics / collision (building/stair BSP + step-up vs slide classification)
**Description:** Running the LOCAL player up the outside stairs of a house-on-stilts, you hit
an invisible block **half-way up** that you cannot walk through — you shuffle sideways but
never advance. **Jumping clears it** and you continue up normally. Pre-existing (observed
before the #184 work); unrelated to the remote de-overlap thread. Building object
`0xf6822103`, landblock `0xf682`, jam at world ≈ (132, 77.8, 61.4), cell `0xF682002C`.
**Root cause / status (from `ACDREAM_CAPTURE_RESOLVE` at the jam):** The staircase is a
fairly uniform ~0.4 m-rise / **38.7°** flight of tilted tread faces (`n=(0,-0.62,0.78)`),
which is under the ~49° walkable cutoff, so the player *glides* straight up it (long
no-collision stretches; the wireframe shows discrete stacked step faces). At **one junction
(~Z 61.4)** there is an anomalous **~52° face** (`collisionNormal=(0,0.78,0.62)`, constant
across every stuck frame → a real stable face, NOT the #137 synthetic-negated-run-direction
normal). 52° is just past the walkable cutoff, so the sweep treats it as a **wall**: it
**flattens that normal to a pure-horizontal `(0,1,0)` sliding normal** (Z zeroed) and slides
the player sideways in X, pinning Y+Z — instead of recognising it as a normal ~0.4 m **step**
and stepping the player up onto the next tread. The jump clears it because the jump's +Z
velocity is not in the horizontal `(0,1,0)` slide plane. The staircase continues climbable
above the jam (more 38.7° treads → a flat porch at Z 63.6) — so it is ONE localised spot,
not a general stair failure. Classic **#137 / building-collision-mesh junction-anomaly family**
(TS-4 sliding-normal-provenance), stair edition.
**Open question (decides mesh-artifact vs faithful):** is that 52° face **real dat geometry**
of object `0xf6822103` or a **mesh-generation artifact** at a BSP-leaf / sub-object junction
on our side? The capture only records treads the player STOOD on, so it can't show the jam
face's own extent or the tread directly above it. Decisive next read: dump `0xf6822103`'s
collision faces (`ACDREAM_DUMP_GFXOBJS`, or resolve its GfxObj/Setup and decode the BSP) and
check for a spurious ~52° face where a 38.7° continuation should be. If the step to the next
tread is ≤ 0.6 m (the step-up budget; it looks ~0.4 m), step-up SHOULD lift the player → bug
in step-up-vs-wall classification for a just-over-walkable face.
**Files:** `src/AcDream.Core/Physics/TransitionTypes.cs` (step-up / slide classification, the
sliding-normal horizontalisation); building-collision mesh generation (BSP faces for
landblock stabs). Capture apparatus: `ACDREAM_CAPTURE_RESOLVE`.
**Acceptance:** the LOCAL player walks up the full outdoor staircase of the house-on-stilts
without jumping; no sideways-slide pin at the ~Z 61.4 junction; regression pass on other
stairs/ramps (indoor + outdoor) — no new phantom blocks.
---
## #184 — [DONE 2026-07-08 · `37a94e1f`+`f51c1dff`+`e1ac56cc`+`ddb5a967`] Remote monsters overlap (arms interpenetrating) in a crowd; retail barely overlaps ## #184 — [DONE 2026-07-08 · `37a94e1f`+`f51c1dff`+`e1ac56cc`+`ddb5a967`] Remote monsters overlap (arms interpenetrating) in a crowd; retail barely overlaps
**Status:** CLOSED 2026-07-08 — all four slices shipped + both visual gates passed. Slices 1+3 **Status:** CLOSED 2026-07-08 — all four slices shipped + both visual gates passed. Slices 1+3