docs(milestones): promote indoor work to M1.5 — primary focus
Continued indoor testing through 2026-05-20 surfaced a deep family of physics + lighting bugs that span buildings AND dungeons. Today's session shipped 5 surgical fixes (A4 + #89 + #90 + #91 + #92) that close the user-visible "walls walk through at Holtburg inn" symptom, but #90 specifically is a CLAUDE.md-rules workaround (sphere-overlap stickiness on top of point-only cell containment) added without prior approval. The underlying issue (BSP push-back distance probably diverges from retail) hasn't been measured. Plus the umbrella #83 (indoor multi-Z walking) has been open since 2026-05-19 with multiple aborted fix attempts; plus indoor lighting (#80 + #81 + new #93 + #94) has been deferred as "M7 polish" but is actually part of the same indoor-experience problem. Promoting to a milestone of its own forces the work to be central, retail-anchored, and complete — not another whack-a-mole patch. Milestone M1.5 — "Indoor world feels right": Demo: enter Holtburg Sewer through the in-town portal, navigate through 5-7 rooms with stairs + a multi-Z chamber, exit back to town. Walls block. Stairs work. Items block. Lighting reads correctly. Cell transitions smooth. Phases: A6 — Indoor physics fidelity (cdb-driven) A7 — Indoor lighting fidelity (RenderDoc + retail-decomp driven) Issues in scope: #80, #81, #83, #88, #90 (workaround removal), #93 (new lighting umbrella), #94 (held-item spotlight), + TryFindIndoorWalkablePlane synthesis removal. M2 ("Kill a drudge") deferred until M1.5 lands. This commit updates: - docs/plans/2026-05-12-milestones.md (M1.5 block inserted, M2 moved to deferred status) - docs/plans/2026-04-11-roadmap.md (A6 + A7 sub-pieces detailed) - CLAUDE.md (Currently working toward updated to M1.5, M2 paragraph marked deferred, M1.5 baseline shipped paragraph added) - docs/ISSUES.md (#80, #81, #83, #88, #90 tagged M1.5 scope; new #93 indoor lighting umbrella + #94 held-item spotlight filed) - docs/research/2026-05-21-open-items-pickup-prompt.md (landscape table reorganized around M1.5 phases) A6 + A7 specs to be drafted in the next session(s). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
23ab17362a
commit
6d18d879a2
5 changed files with 272 additions and 26 deletions
|
|
@ -85,6 +85,99 @@ Plus polish that doesn't get its own phase number:
|
|||
|
||||
## Phases ahead — agreed order
|
||||
|
||||
### Milestone M1.5 — "Indoor world feels right" (active, opened 2026-05-20)
|
||||
|
||||
The current top of the work order. Two phases (A6 + A7) inside one
|
||||
milestone. M2 ("kill a drudge") is deferred until M1.5 lands —
|
||||
drudges live in dungeons and the M2 demo target requires solid indoor
|
||||
navigation. Full milestone block in
|
||||
[`docs/plans/2026-05-12-milestones.md`](2026-05-12-milestones.md).
|
||||
|
||||
**Today's pre-M1.5 baseline** (2026-05-20 — committed in this
|
||||
session): A4 multi-cell BSP iteration (`691493e`), #89 sphere-overlap
|
||||
in CheckBuildingTransit (`7ac8f54`), #90 sphere-overlap stickiness in
|
||||
ResolveCellId (`4ca3596` — **WORKAROUND**, scheduled for removal in
|
||||
A6.P4), #91 indoor cell shadows in FindObjCollisions (`c0d8405`),
|
||||
#92 server cell id at player-mode entry (`23ab173`). 1147 + 8 baseline
|
||||
maintained. Holtburg inn + cottage interiors visually verified
|
||||
2026-05-20.
|
||||
|
||||
#### Phase A6 — Indoor physics fidelity (cdb-driven)
|
||||
|
||||
**Hypothesis:** Our `BSPQuery.FindCollisions` 6-path dispatcher (and
|
||||
its callers) produce collision responses that systematically diverge
|
||||
from retail's. Symptoms in different geometry (doorways, stairs,
|
||||
multi-Z, cellars, dungeons) share one underlying mechanism — most
|
||||
likely push-back distance / direction / CP synthesis.
|
||||
|
||||
**Investigation methodology:** cdb-attached comparison. Toolchain
|
||||
documented in CLAUDE.md's "Retail debugger toolchain" section. Used
|
||||
successfully 2026-04-30 for the steep-roof case. Matching binaries
|
||||
(acclient.exe v11.4186) + PDB present.
|
||||
|
||||
**Sub-pieces (slices):**
|
||||
- **A6.P1 — cdb probe spike** (~3 days). Build cdb scripts capturing
|
||||
retail's per-tick state at 9 scenarios:
|
||||
- 4 building sites: Holtburg inn doorway, inn stairs, inn 2nd floor,
|
||||
cottage cellar.
|
||||
- 5 dungeon sites: Holtburg Sewer entry portal, first stair descent,
|
||||
inter-room portal transition, open central area, dark corridor.
|
||||
Breakpoints on `set_collide`, `step_sphere_up`, `step_sphere_down`,
|
||||
`transitional_insert`, `set_contact_plane`, `validate_walkable`.
|
||||
Mirror with our equivalent probes (`[indoor-bsp]`, `[cp-write]`,
|
||||
new `[push-back]`).
|
||||
- **A6.P2 — Analysis report** (~1 day). Quantify the per-call-site
|
||||
gap. Identify which BSP path(s) over- or under-correct. Output:
|
||||
1–3 specific bug findings with retail decomp anchors.
|
||||
- **A6.P3 — Fix the BSP correction paths** (~3–5 days). Surgical
|
||||
fixes informed by A6.P2 data. Likely touches `BSPQuery.AdjustSphereToPlane`,
|
||||
`AdjustOffsetToPlane`, Path 5 / Path 6 branches, sub-step state
|
||||
mutation.
|
||||
- **A6.P4 — Remove workarounds** (~1 day). Revert #90 sphere-overlap
|
||||
stickiness in `PhysicsEngine.ResolveCellId`. Delete
|
||||
`Transition.TryFindIndoorWalkablePlane` + its caller in
|
||||
`FindEnvCollisions`. Verify behavior holds without the workarounds.
|
||||
|
||||
#### Phase A7 — Indoor lighting fidelity (RenderDoc + retail-decomp driven)
|
||||
|
||||
**Hypothesis layers (less mapped than physics):**
|
||||
- Per-cell environment-light tag association — indoor cells should
|
||||
inherit only their own env lights, not outdoor day-cycle.
|
||||
- Light visibility culling — what lights actually contribute to each
|
||||
cell's render.
|
||||
- Per-entity light direction transform — held-item-spotlight bug
|
||||
(#L-spotlight) is per-entity attribution gone wrong.
|
||||
- Static-stab atmospheric inheritance (#81).
|
||||
|
||||
**Investigation methodology:** less existing infrastructure than
|
||||
physics. Requires:
|
||||
- New `[indoor-light]` probe (per-frame dump of active lights for the
|
||||
player's cell + each visible entity: position, color, attenuation,
|
||||
direction).
|
||||
- RenderDoc frame capture at the same 9 scenarios as A6.
|
||||
- Grep retail's `Render::lighting_*` family in
|
||||
`acclient_2013_pseudo_c.txt` to map per-cell light selection logic.
|
||||
|
||||
**Sub-pieces (slices):**
|
||||
- **A7.L1 — Lighting probe spike** (~3–5 days). Build `[indoor-light]`
|
||||
probe. Capture baselines at all 9 scenarios. RenderDoc captures
|
||||
paired with each. Decomp study of retail's lighting selection.
|
||||
- **A7.L2 — Analysis report** (~1–2 days). Likely surfaces 2–4
|
||||
distinct bugs across the lighting issues.
|
||||
- **A7.L3 — Fix lighting paths** (~3–7 days). Wide variance because
|
||||
the surface area is unknown. Could touch indoor env-light parsing,
|
||||
`LightingHookSink`, WB rendering pipeline, shader uniforms.
|
||||
|
||||
**M1.5 acceptance criterion (shared by A6 + A7):** Walk Holtburg Sewer
|
||||
end-to-end. Walls block (physics). Stairs work (physics). Items
|
||||
block (physics). Lighting reads correctly throughout (lighting).
|
||||
Cell transitions are smooth (physics). No regressions in M1 outdoor
|
||||
behavior. Estimated 17–26 days focused work, 3–5 weeks calendar.
|
||||
|
||||
**Specs:** to be written 2026-05-20 (after milestone commit lands).
|
||||
|
||||
---
|
||||
|
||||
### Phase A — Foundation (in progress)
|
||||
|
||||
**Goal:** walk across 10+ landblocks without crashes, without hitches at landblock boundaries, and without framerate cratering.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue