docs(phys L.2g): design spec for dynamic PhysicsState toggling (doors)
L.2d slice 1.5 ship identified the Holtburg doorway blocker as a closed
Door entity (Setup 0x020019FF) whose PhysicsState.Ethereal bit flips
when the player Uses the door. The L.2d shape-fidelity work doesn't
cover this — the door's collision shape is correct; what's missing is
honoring the *runtime* state change.
L.2g is the new sub-phase that handles it. Scope is narrow:
* Parse inbound GameMessageSetState (0xF74B).
* Plumb the new PhysicsState value into ShadowObjectRegistry's
cached per-entity state so the existing CollisionExemption.IsExempt
already-in-place short-circuit sees up-to-date bits.
* Verify the Holtburg inn-door scenario: walk in blocked, Use door,
walk through, auto-close blocks again after 30s.
* Confirm UpdateMotion (NonCombat, On/Off) drives non-creature
entities (door swing animation).
Why a new L.2 sub-letter (and not B.4 or Door-special-case): the wire
mechanism (SetState flipping Ethereal) is also how ACE handles activated
traps, opened chests, spell projectiles becoming ethereal. Generic
infrastructure with doors as the verification scenario; lane is the
informal sixth "dynamic state."
Roadmap state:
* L.2 plan-of-record adds the L.2g section after L.2f.
* Milestones doc M1 phase list extended `a-f` -> `a-g`.
* CLAUDE.md status pointer + "next phase candidates" list updated to
name L.2g slice 1 implementation as the natural next step.
Risk: low. Wire-byte width has a hex-dump fallback path in slice 1
(holtburger says 12 bytes, ACE writes 16, capture settles it). ETHEREAL
plumbing already exists; we feed it new data. No resolver changes.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
9206d1d4e0
commit
2c10dd4d67
4 changed files with 353 additions and 14 deletions
33
CLAUDE.md
33
CLAUDE.md
|
|
@ -618,10 +618,16 @@ acdream's plan lives in two files committed to the repo:
|
|||
approval.
|
||||
|
||||
**Currently in Phase L.2 (Movement & Collision Conformance).** L.2a slices
|
||||
1+2+3 shipped 2026-05-12 (this evening); the natural next step is the
|
||||
L.2d slice 1 brainstorm / design spec. Cold-start prompt for the next
|
||||
session: [`docs/research/2026-05-12-l2d-next-session-prompt.md`](docs/research/2026-05-12-l2d-next-session-prompt.md).
|
||||
Full handoff: [`docs/research/2026-05-12-l2a-shipped-l2d-handoff.md`](docs/research/2026-05-12-l2a-shipped-l2d-handoff.md).
|
||||
1+2+3 + L.2d slice 1+1.5 shipped 2026-05-12. L.2d closed at the Holtburg
|
||||
site ("watch-and-wait" — no more slices until a new shape-fidelity bug
|
||||
shows up elsewhere); doorway blocker identified as a Door entity, not
|
||||
building BSP. L.2g (dynamic PhysicsState toggling — doors) brainstormed
|
||||
and design-spec'd 2026-05-12 evening; **the natural next step is the
|
||||
L.2g slice 1 implementation** (parse `SetState` 0xF74B, plumb new
|
||||
PhysicsState into ShadowObjectRegistry, verify Holtburg inn doorway).
|
||||
Design spec: [`docs/superpowers/specs/2026-05-12-l2g-dynamic-physicsstate-design.md`](docs/superpowers/specs/2026-05-12-l2g-dynamic-physicsstate-design.md).
|
||||
L.2d ship handoff: [`docs/research/2026-05-13-l2d-slice1-shipped-handoff.md`](docs/research/2026-05-13-l2d-slice1-shipped-handoff.md).
|
||||
L.2a→L.2d handoff (now superseded by the L.2d ship): [`docs/research/2026-05-12-l2a-shipped-l2d-handoff.md`](docs/research/2026-05-12-l2a-shipped-l2d-handoff.md).
|
||||
|
||||
**Phase L.2a (Truth & Diagnostics) slices 1-3 shipped 2026-05-12.**
|
||||
Three commits land the L.2 "make every bad movement outcome explainable"
|
||||
|
|
@ -699,13 +705,18 @@ together comprise the streaming + rendering perf foundation for the
|
|||
project.
|
||||
|
||||
**Next phase candidates (in rough preference order):**
|
||||
- **L.2d slice 1 brainstorm + spec** (`docs/research/2026-05-12-l2d-next-session-prompt.md`).
|
||||
Direct continuation of tonight's L.2a evidence: port `CBuildingObj` collision
|
||||
+ per-cell walkability so doorway gaps are walkable. Unblocks "walk into a
|
||||
building" + sets up G.3 dungeon streaming. **Note:** triage the 8 pre-existing
|
||||
test failures first (none introduced by L.2a slices — verified by stash + rerun
|
||||
— but most touch movement/physics code L.2d will evolve). See the handoff doc's
|
||||
"Open concerns" section.
|
||||
- **L.2g slice 1 implementation — dynamic PhysicsState toggling for doors.**
|
||||
Direct continuation of tonight's L.2d slice 1.5 evidence: parse inbound
|
||||
`SetState (0xF74B)` wire message, plumb the new `PhysicsState` value into
|
||||
`ShadowObjectRegistry`'s cached entity state so the existing
|
||||
`CollisionExemption.IsExempt(...)` check sees up-to-date bits, and verify
|
||||
the Holtburg inn-door scenario walks through cleanly when the server flips
|
||||
Ethereal. Unblocks the M1 demo's *"open the inn door"* line. Spec:
|
||||
[`docs/superpowers/specs/2026-05-12-l2g-dynamic-physicsstate-design.md`](docs/superpowers/specs/2026-05-12-l2g-dynamic-physicsstate-design.md).
|
||||
**Note:** triage the 8 pre-existing test failures still hanging over the
|
||||
physics modules first (none introduced by L.2a/L.2d slices — verified by
|
||||
stash + rerun — but most touch code adjacent to where L.2g will plumb the
|
||||
new state mutator).
|
||||
- **Triage the chronic open-issue list** in `docs/ISSUES.md` — #2 (lightning),
|
||||
#4 (sky horizon-glow), #28 (aurora), #29 (cloud thinness), #37 (humanoid
|
||||
coat), #50 (stray tree), #41 (remote-motion blips) have been open since
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue