Phase B.5 (ground-item pickup, close-range path) shipped and
visual-verified 2026-05-14 at Holtburg. M1 demo target 4/4 ("pick up
an item") met.
New ship-handoff doc captures the 5-commit history including the
post-visual-test PickupEvent (0xF74A) wire-handler fix that closes
the local-despawn gap.
Roadmap and CLAUDE.md updated to reflect the ship + the new follow-up
issues:
- #63 (MEDIUM) — server-initiated MoveToObject auto-walk not
honored; blocks double-click pickup + out-of-range F. Filed as
candidate Phase B.6. holtburger has the reference implementation.
- #64 (LOW) — local-player pickup animation does not render
(retail observers see it correctly). Likely a self-echo filter
dropping UpdateMotion(Pickup) on the local player.
Carry-overs from B.4c (#61 link-cycle flash, #62 PARTSDIAG null-guard)
unchanged.
This commit is contained in:
parent
f7636a9e78
commit
d132fcccfb
4 changed files with 364 additions and 17 deletions
|
|
@ -46,6 +46,89 @@ Copy this block when adding a new issue:
|
|||
|
||||
# Active issues
|
||||
|
||||
## #64 — Local-player pickup animation does not render
|
||||
|
||||
**Status:** OPEN
|
||||
**Severity:** LOW (visual feedback only — pickup completes correctly)
|
||||
**Filed:** 2026-05-14 (B.5 visual verification)
|
||||
**Component:** motion / animation routing for local player
|
||||
|
||||
**Description:** When `+Acdream` picks up an item (B.5 close-range
|
||||
path), retail observers see the character play the pickup animation
|
||||
correctly, but the local view shows no pickup animation. The item
|
||||
despawns, the inventory updates, but the character's own
|
||||
bend-down-and-grab animation is missing.
|
||||
|
||||
**Root cause / hypothesis:** ACE broadcasts `Motion(MotionCommand.Pickup)`
|
||||
via `Player_Inventory.AddPickupChainToMoveToChain` (line 711–713,
|
||||
`EnqueueBroadcastMotion(motion)`), which arrives as a normal
|
||||
`UpdateMotion (0xF74D)` packet. Retail observers route it through
|
||||
their remote-creature animation pipeline and render the pickup. For
|
||||
the local player, our `OnLiveMotionUpdated` likely filters self-echoes
|
||||
(local player drives its own motion via prediction, not server
|
||||
echoes) and drops the pickup motion. The pickup is a one-shot
|
||||
animation initiated by the server, so the prediction path has no
|
||||
trigger — and the echo path is filtered.
|
||||
|
||||
**Acceptance:** When `+Acdream` picks up an item, the local view shows
|
||||
the same pickup animation retail observers see. Probably resolved by
|
||||
either (a) admitting server-initiated one-shot motions through the
|
||||
local-player motion filter, or (b) generating the pickup animation
|
||||
locally on send (mirroring retail's client behavior).
|
||||
|
||||
**Files:** `src/AcDream.App/Rendering/GameWindow.cs` `OnLiveMotionUpdated`
|
||||
(motion routing); the self-echo filter is somewhere along this path.
|
||||
|
||||
**Estimated scope:** Small-to-medium. Mostly investigation +
|
||||
1–2 commits.
|
||||
|
||||
---
|
||||
|
||||
## #63 — Server-initiated auto-walk (MoveToObject) not honored
|
||||
|
||||
**Status:** OPEN
|
||||
**Severity:** MEDIUM (blocks out-of-range Use + Pickup; close-range
|
||||
works fine)
|
||||
**Filed:** 2026-05-14 (B.5 visual verification)
|
||||
**Component:** motion / inbound MoveToObject handling
|
||||
|
||||
**Description:** When the player triggers a Use or PutItemInContainer
|
||||
on a target outside ACE's `WithinUseRadius` (default 0.6 m), ACE
|
||||
runs server-side auto-walk via `CreateMoveToChain` →
|
||||
`PhysicsObj.MoveToObject` + `EnqueueBroadcastMotion(Motion(MoveToObject, target))`.
|
||||
Our client receives the `UpdateMotion(MoveToObject)` broadcast for
|
||||
the player but doesn't honor it: the character either visually
|
||||
drifts a bit toward the target and snaps back, or just stands still.
|
||||
ACE's MoveToChain then times out, the `success: false` path
|
||||
broadcasts `InventoryServerSaveFailed (ActionCancelled)`, and the
|
||||
pickup/use never completes.
|
||||
|
||||
**User-visible symptom:** Double-click a ground item from any
|
||||
distance, or F-key it from > 0.6 m: character partially walks toward
|
||||
the item, then flips back to original position. No pickup.
|
||||
|
||||
**Reference:** [holtburger simulation.rs:33–41 + 178–191](references/holtburger/crates/holtburger-core/src/client/simulation.rs)
|
||||
already implements client-side `MoveToObject` motion projection +
|
||||
auto-walk handling. That's the shape of the fix.
|
||||
|
||||
**Root cause:** Our `OnLiveMotionUpdated` has no handler for the
|
||||
`MoveToObject` motion type; the broadcast is silently dropped.
|
||||
|
||||
**Acceptance:** Double-click a ground item from 2–5 m away. Character
|
||||
auto-walks to within use radius, ACE's MoveToChain confirms success,
|
||||
pickup completes (including the existing PickupEvent despawn). Same
|
||||
behavior for Use on out-of-range NPCs.
|
||||
|
||||
**Files:** `src/AcDream.App/Rendering/GameWindow.cs` `OnLiveMotionUpdated`
|
||||
(routing); likely a new `MoveToObjectMotion` handler in the motion /
|
||||
prediction layer + a server-acked position-update echo so ACE sees the
|
||||
player has reached the target.
|
||||
|
||||
**Estimated scope:** Medium. Probably its own phase (B.6 or similar);
|
||||
not a one-commit fix. Compose from holtburger's pattern.
|
||||
|
||||
---
|
||||
|
||||
## #62 — PARTSDIAG null-guard for sequencer-driven entities
|
||||
|
||||
**Status:** OPEN
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue