fix(physics): port retail slope landing stop
This commit is contained in:
parent
1d8371dbe5
commit
5a0f9868a6
13 changed files with 870 additions and 103 deletions
|
|
@ -142,7 +142,7 @@ remain in place (ride ACDREAM_DUMP_MOTION=1) until the user gate passes.
|
|||
|
||||
## #269 — Slope-stop slide runs too far (post-bounce-rework residual)
|
||||
|
||||
**Status:** OPEN (user live gate 2026-07-30 — "almost pass with merits")
|
||||
**Status:** DONE — 2026-07-31 (implementation + user live gate)
|
||||
**Severity:** LOW-MEDIUM (feel residual; bounce family otherwise accepted)
|
||||
**Component:** physics / landing slide decay
|
||||
|
||||
|
|
@ -162,14 +162,24 @@ cos(10°) with base 0.2); the jump chain end-to-end (`GetJumpHeight`
|
|||
Sledding auto-toggle (P2 finding re-confirmed; no `state |= 0x800000`
|
||||
writer exists).
|
||||
|
||||
**Next step (behavior question, not code):** live A/B per the cdb
|
||||
workflow — breakpoints on `calc_friction`/`handle_all_collisions` dumping
|
||||
velocity per tick while the retail client lands + slides on a slope, vs an
|
||||
`ACDREAM_CAPTURE_RESOLVE` capture of the same maneuver on the same slope.
|
||||
Compare the decay curves; the first diverging tick names the mechanism.
|
||||
Candidates the trace discriminates: hop-chain cadence (friction skips
|
||||
airborne micro-hop ticks), gravity-tangential rebuild timing, quantum
|
||||
alignment.
|
||||
**Resolution (2026-07-31):** a 2,184-quantum live capture isolated the
|
||||
first divergence. The landing tick produced retail's correct 5% reflect,
|
||||
but the following quanta repeatedly restored
|
||||
`LastKnownContactPlane` while retaining the reflected velocity. The body
|
||||
therefore remained Contact + OnWalkable with `v·n > 0.25`, where retail
|
||||
`calc_friction` intentionally does no work, and slid at full speed.
|
||||
|
||||
Named-retail `CTransition::validate_transition @ 0x0050AA70` revealed the
|
||||
omission: its non-OK remembered-plane recovery calls
|
||||
`OBJECTINFO::kill_velocity @ 0x0050CFE0` *before* the proximity test and
|
||||
plane restore (`0x0050AAED–0x0050AB42`). It also consumes the remembered
|
||||
plane only in that non-OK branch and overwrites last-known validity from
|
||||
the final contact plane at `0x0050ACFF`. ACDream now follows that exact
|
||||
ordering. Focused collision-recovery and clean-advance pins pass; full
|
||||
Core (4,107/2 skips) and Runtime (439/0) suites pass; the user repeated the
|
||||
slope-jump test and accepted the result (“Perfect! Works great!”).
|
||||
Capture and decode:
|
||||
`docs/research/2026-07-31-269-slope-stop-capture.md`.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue