docs: #111 closed - three-layer fix chain (bestCell clobber, triangle-soup grounding, entity snap parity), user-gated at two buildings
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
2735695a6b
commit
33662b35b6
1 changed files with 35 additions and 42 deletions
|
|
@ -3709,52 +3709,45 @@ stable now; this is a draw-order/depth oscillation localized to the door surface
|
|||
|
||||
---
|
||||
|
||||
## #111 — Indoor login from an ACE-mutated restore starts outdoor-classified (transparent interior until door-press)
|
||||
|
||||
**Status:** OPEN
|
||||
**Severity:** MEDIUM (UX; no wedge — always controllable, heals on door-press)
|
||||
**Filed:** 2026-06-10 (split out of #107's gate runs)
|
||||
**Component:** physics / player snap (grounding) + membership lateral recovery
|
||||
|
||||
**Symptom (user-gated ×3, wedge-107-gate3/4/5 logs):** logging in indoors, the
|
||||
interior renders transparent (walls see-through, own char invisible) until the
|
||||
player presses into the DOORWAY, which promotes membership into the proper room
|
||||
and everything renders. Collision works throughout. "It feels like I'm logging
|
||||
in a step up" — correct: ACE restores the player ~1 m above the floor (or 1.8 m
|
||||
below, in the cellar volume).
|
||||
|
||||
**Mechanism (fully evidenced):** ACE does not persist our reported (cell, pos)
|
||||
pair — `GameActionAutonomousPosition.Handle` → `SetRequestedLocation` feeds
|
||||
ACE's SERVER-SIDE physics player, and the logout save is ACE's physics state:
|
||||
same XY as ours verbatim, but ACE's own Z + cell (observed: claim 0x172 z=95.0;
|
||||
claim 0x147 z=92.226 cellar; claim 0x14F z=94.85 — stacked volumes under/over
|
||||
the room 0x171 the user actually stood in at z=94.0). Our entry snap
|
||||
(PhysicsEngine.Resolve + retail AdjustPosition, #107) validates the claim at
|
||||
the RESTORED point — geometrically valid for the lofted/sunk point — but never
|
||||
GROUNDS and re-validates: the first movement drops the player to the floor
|
||||
where the stacked claim no longer contains them → the pick (correctly
|
||||
portal-local, P1-validated) cannot laterally recover the 2-hop room → demote
|
||||
to outdoor INSIDE the building → render (downstream of membership) draws the
|
||||
outdoor flood → transparent interior until the doorway portal promotes.
|
||||
|
||||
**Fix direction (retail-anchored):** retail `SetPositionInternal` does NOT
|
||||
commit the raw restored position — after AdjustPosition it runs
|
||||
`CheckPositionInternal → CTransition::find_valid_position` (:283426, :280070),
|
||||
settling the sphere onto valid floor BEFORE committing, then stores the
|
||||
SETTLED position. Port shape: at the snap, ground the position (floor under
|
||||
the point within the claim's visible graph), re-run AdjustPosition at the
|
||||
settled foot-center (for the gate-5 case: z 95.0→94.0, then 0x172's stab list
|
||||
corrects to 0x171), commit the corrected pair. ⚠️ Open sub-question: the
|
||||
gate-5 snap committed the lofted pair VERBATIM (z=95.0, cell unchanged) even
|
||||
though Resolve's indoor floor-snap should have grounded to the closest floor —
|
||||
instrument which early-out fired (suspects: `physics is null` landblock-lookup
|
||||
miss at snap time; step-height reject; bestCell null). Logs:
|
||||
wedge-107-gate3/4/5-indoor-login.log; scans in Issue107SpawnDiagnosticTests.
|
||||
|
||||
---
|
||||
|
||||
# Recently closed
|
||||
|
||||
## #111 — ACE-mutated indoor restores: transparent interior / wrong placement at login — [DONE 2026-06-10 · 5f1eb7c + 5706e0e + 2735695]
|
||||
|
||||
**Status:** DONE (user-gated: clean indoor logins at two different buildings —
|
||||
"it worked", "looked great"; further self-testing across houses ongoing)
|
||||
**Closed:** 2026-06-10 (late)
|
||||
**Commits:** `5f1eb7c` (claim-authoritative snap + [snap] apparatus) →
|
||||
`5706e0e` (ground via physics walkable polygons) → `2735695` (entity snap parity)
|
||||
**Component:** physics / player snap
|
||||
|
||||
**The peel (each layer caught live by the [snap] apparatus):**
|
||||
1. **bestCell clobber** (`5f1eb7c`): the legacy Resolve floor-pick scanned every
|
||||
CellSurface in the landblock (123 at Holtburg) and broke same-height ties by
|
||||
iteration order — it clobbered ACE's CLEAN validated claim 0xA9B40171 with
|
||||
0xA9B4013F, seeding the poison loop (our heartbeats reported the clobbered
|
||||
cell; ACE persisted it; the next login inherited it). Fix: a VALIDATED indoor
|
||||
claim is authoritative (retail SetPositionInternal commits the AdjustPosition
|
||||
cell and only settles Z); the snap grounds onto the claim's own floor.
|
||||
2. **Triangle-soup grounding** (`5706e0e`): CellSurface includes ceiling/roof TOP
|
||||
faces — first-hit grounded onto 0x171's 99.475 ceiling (then poisoned ACE's
|
||||
save with the roof height); nearest-to-reference self-confirmed the poison.
|
||||
Fix: ground via the PHYSICS walkable polygons (normal.Z ≥ PhysicsGlobals.FloorZ,
|
||||
retail find_walkable's filter) — `WalkableFloorZNearest`, cell-local plane drop.
|
||||
Verified eating the poisoned restore: claim (0x171, z=99.475) → grounded 94.000.
|
||||
3. **Entity snap asymmetry** (`2735695`): login entry snapped only the CONTROLLER;
|
||||
the renderer kept the entity at the restored height ("spawned 2 m in the air"
|
||||
over a fully-correct interior). Fix: entity.SetPosition + ParentCellId at entry,
|
||||
parity with the teleport-arrival path.
|
||||
|
||||
The ACE-side behavior (server persists ITS physics state, not our reports —
|
||||
`SetRequestedLocation` feeds ACE's server-side player) is by design and now fully
|
||||
survivable: every restore shape observed tonight (clean / adjacent-room /
|
||||
cross-building / cellar-sunk / roof-lofted) lands correctly placed or loudly
|
||||
corrected ([spawn-adjust]/[snap] lines). The [snap] diagnostic stays (one line
|
||||
per login/teleport).
|
||||
|
||||
## #107 — Indoor-login spawn wedge — [DONE 2026-06-10 · 1090189]
|
||||
|
||||
**Status:** DONE (live-verified incl. ACE's own poisoned teleport; final indoor
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue