fix #173: remote jump arcs get the retail collision-velocity response
An observed character jumping into a dungeon ceiling hovered at the roof until its ballistic arc decayed, landing visibly late (user report, 0x0007). The remote DR tick sweeps collision (position pinned at the ceiling — no clip-through) but retail's post-transition velocity response, CPhysicsObj::handle_all_collisions (pc:282699-282715: v -= (1+elasticity)*dot(v,n)*n), was only ported for the LOCAL player (L.3a). The remote body kept its +Z launch velocity and re-integrated it into the roof every tick — the position was clamped but the timeline was pure ballistics. Retail runs handle_all_collisions after every SetPositionInternal for every physics object, remotes included. Mirror the local reflection block in the remote sweep's post-resolve path: same formula, same AD-25 airborne-before-AND-after suppression (corridor slides and landings don't reflect; the landing snap's Velocity.Z <= 0 gate stays intact), same Inelastic zero-out for future missiles. AD-25 register row extended to cover both sites. Suites green: Core 2533 / App 713 / UI 425 / Net 385. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
6ab269894a
commit
012d5c7bf7
3 changed files with 90 additions and 1 deletions
|
|
@ -46,6 +46,46 @@ Copy this block when adding a new issue:
|
|||
|
||||
---
|
||||
|
||||
## #173 — Observed character jumping into a ceiling hovers at the roof until the arc decays (no collision-velocity response on remotes)
|
||||
|
||||
**Status:** 🟡 FIX SHIPPED 2026-07-05 (this commit) — pending user visual gate (watch a second client jump into the 0x0007 dungeon roof; it should bounce down immediately like the local player).
|
||||
**Severity:** MEDIUM (remote-motion fidelity indoors; lands visibly late)
|
||||
**Filed:** 2026-07-05
|
||||
**Component:** physics — remote dead-reckoning collision response
|
||||
|
||||
**Description (user, 0x0007 dungeon):** watching another character jump into
|
||||
the dungeon roof, the observed char sticks to the ceiling until the jump arc
|
||||
would naturally have come down — "like we are calculating the entire jump
|
||||
instead of actually checking the collision" — and lands later than retail,
|
||||
with the animation pinned at the roof. The LOCAL player's own jump bounces
|
||||
off the roof immediately.
|
||||
|
||||
**Root cause (code-confirmed):** the remote DR tick integrates the
|
||||
VectorUpdate launch ballistically and DOES sweep collision
|
||||
(`ResolveWithTransition`, GameWindow remote block) — the sweep pins the
|
||||
POSITION at the ceiling — but the retail post-transition velocity response
|
||||
(`CPhysicsObj::handle_all_collisions`, pc:282699-282715: reflect
|
||||
`v −= (1+elasticity)·dot(v,n)·n`) was only ever ported for the LOCAL player
|
||||
(L.3a, `PlayerMovementController` ~:940). The remote body kept its +Z launch
|
||||
velocity, re-integrated it into the roof every tick, and only descended once
|
||||
gravity burned the arc off. Retail runs handle_all_collisions after every
|
||||
SetPositionInternal for every physics object — remotes included.
|
||||
|
||||
**Fix (this commit):** mirror the local L.3a reflection block in the remote
|
||||
sweep's post-resolve path (same formula, same AD-25 airborne-before-AND-after
|
||||
suppression so corridor slides and landings don't reflect, same Inelastic
|
||||
zero-out). Register AD-25 extended to cover both sites.
|
||||
|
||||
**Files:** `src/AcDream.App/Rendering/GameWindow.cs` (remote sweep, #173
|
||||
block after `rm.Body.Position = resolveResult.Position`).
|
||||
|
||||
**Acceptance:** from acdream, watch a second client jump into a dungeon
|
||||
ceiling: the observed char deflects off the roof immediately and lands at
|
||||
retail timing; grounded remote movement (corridor wall slides, NPC chases)
|
||||
unchanged.
|
||||
|
||||
---
|
||||
|
||||
## #172 — Town-network portal platform blocks instead of stepping up (CCylSphere family was never ported)
|
||||
|
||||
**Status:** 🟡 FIX SHIPPED 2026-07-05 (this commit) — pending user visual gate (walk up onto the Holtburg portal platform, then the 0x0007 dungeon run).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue