docs(#171): file the group-melee interpenetration issue + R5-V3 handoff/pickup

User report during the #170 gate: pack-melee monsters partly inside each
other with slightly stale facings vs retail on the same ACE. Investigation
(report-only) pinned two code-grounded causes, both already-tracked R5-V3
scope, fix APPROVED by the user:

1. TS-39 — sticky melee is a no-op: ACE arms melee chases with Sticky
   (Monster_Navigation.cs:416); retail's arrival hands off to
   PositionManager::StickTo -> StickyManager::adjust_offset (0x00555430,
   per-tick 0.3m edge gap + facing tracking); acdream's StickTo/Unstick
   seams are unbound so attackers freeze at stale arrival poses.
2. Arrival radii are zero: getOwnRadius () => 0f (the R5-V3 pin) and
   RouteServerMoveTo never sets MovementStruct.Radius/Height — retail/ACE
   arrive edge-to-edge with setup-derived radii (ACE PhysicsObj.MoveToObject
   reads the TARGET's PartArray radius/height).

Ruled out: the between-snap collision sweep (remotes run full
ResolveWithTransition; CollisionExemption keeps creatures collidable).
Caveat recorded: ACE has no server-side monster avoidance — acceptance is
retail PARITY, not zero overlap.

ISSUES #171 filed; handoff docs/research/2026-07-04-171-sticky-melee-handoff.md
+ pickup docs/research/2026-07-04-171-pickup-prompt.md; memory index updated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-07-04 22:38:58 +02:00
parent 4cad626ff5
commit d413ac2a29
3 changed files with 222 additions and 0 deletions

View file

@ -46,6 +46,50 @@ Copy this block when adding a new issue:
---
## #171 — Group melee: monsters interpenetrate + facing drifts (sticky melee unbound, arrival radii = 0)
**Status:** OPEN — investigated + fix APPROVED 2026-07-04 (user: "Ok I approve").
**Severity:** MEDIUM (visual — group combat feel vs retail)
**Filed:** 2026-07-04 (user report during the #170 visual gate: "some monsters were
partly inside other monsters while hitting me… some orientation of the monsters
are a bit off")
**Component:** remote entity, MoveTo/PositionManager, R5-V3
**Description:** in a pack melee, acdream attackers end up partly inside each
other with slightly stale facings vs retail on the same ACE. Two code-grounded
causes (both already-tracked R5-V3 scope), plus one server-side caveat:
1. **Sticky melee is a no-op (register TS-39).** ACE arms every melee chase with
`Sticky|UseFinalHeading|MoveAway|FailWalk`
(`references/ACE/…/Monster_Navigation.cs:416`). Retail's sticky arrival hands
off to `PositionManager::StickTo``StickyManager::adjust_offset`
(0x00555430): per-tick 0.3 m edge-gap + facing tracking against the moving
target. Our `MoveToManager.BeginNextNode` invokes the `StickTo` seam — unbound
— so attackers complete-and-freeze at stale arrival poses until the next wire
re-arm.
2. **Arrival radii are zero.** ACE/retail arrive edge-to-edge
(`cylinder_distance`, own + target radii from the PartArray/setup —
`ACE PhysicsObj.MoveToObject` reads `GetRadius()/GetHeight()` from the TARGET).
acdream binds `getOwnRadius: () => 0f` (GameWindow `EnsureRemoteMotionBindings`,
the explicit R5-V3 pin) AND `RouteServerMoveTo` never sets
`MovementStruct.Radius/Height` → both radii 0 → every attacker closes ~one
body-radius deeper than retail → dogpile.
3. Caveat: ACE has no server-side monster-vs-monster avoidance — some overlap is
server-authoritative and shows on retail too. Acceptance = retail parity, not
zero overlap.
Ruled out: the between-snap collision sweep (remotes run full
`ResolveWithTransition`; `CollisionExemption` keeps creature cylinders collidable
for non-viewer movers).
**Approved fix (R5-V3):** port `StickyManager` + bind `PositionManager`
`StickTo`/`UnStick` seams + thread setup-derived cylsphere radii through the
MoveTo distance math. **SSOT:** `docs/research/2026-07-04-171-sticky-melee-handoff.md`
+ pickup `docs/research/2026-07-04-171-pickup-prompt.md`.
**Acceptance:** side-by-side vs retail in a scamp pack: attackers hold separation
+ face the player while it strafes; user visual gate.
## #170 — Remote creature chase+attack renders wrong vs retail (glide, over-frequency, uniform attack anims)
**Status:** DONE (2026-07-04) — **user visual gate PASSED** ("looks good, as close