docs: update bugs.md — close BUG-002/003/004, add BUG-005/006/007

Closed: jump server packet (002), facing direction (003), run speed (004).
New: collision penetration (005), corner stuck (006), missing trees (007).
All collision bugs stem from static-overlap detection instead of
swept-sphere — needs Transition restructure to use FindTimeOfCollision.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-04-14 12:17:31 +02:00
parent fc96f1b7e3
commit 3997839d1a

View file

@ -18,39 +18,50 @@ the "Fixed" section with the commit hash that resolved it.
or the CreaturePalette pipeline in `InstancedMeshRenderer`. or the CreaturePalette pipeline in `InstancedMeshRenderer`.
- **Phase:** Unassigned (investigate after rendering rebuild Step 5). - **Phase:** Unassigned (investigate after rendering rebuild Step 5).
### BUG-002: Jump not visible from retail client ### BUG-005: Collision penetration — body enters objects before blocking
- **Observed:** 2026-04-14 - **Observed:** 2026-04-14
- **Description:** Jump works locally (player rises and falls) but no - **Description:** Player walks partway into boulders, trees, and walls
jump packet is sent to the server. Other clients don't see the jump. before collision is detected. Root cause: static overlap detection
- **Repro:** Jump in acdream, observe from retail client — no jump visible. instead of swept-sphere. Retail uses FindTimeOfCollision to compute
- **Likely area:** GameWindow.cs jump packet sending (currently a TODO the exact contact point BEFORE moving the sphere. Our system moves
Console.WriteLine). Need to research jump packet format from holtburger. first, detects overlap, then tries to push out.
- **Phase:** B.2 (movement completion) - **Repro:** Walk into a boulder at any speed — body clips into it.
- **Fix required:** Restructure Transition loop to compute collision
time before advancing position. Use CollisionPrimitives.FindTimeOfCollision
(already ported from FUN_00539BA0).
- **Phase:** B.3 (collision completion)
### BUG-003: Facing direction mismatch with server ### BUG-006: Getting stuck at object corners and tight spaces
- **Observed:** 2026-04-14 - **Observed:** 2026-04-14
- **Description:** Character facing direction in acdream doesn't match - **Description:** Player gets permanently stuck when walking into
what other clients see. Our quaternion convention for outbound building corners or between objects. The SlideSphere crease projection
MoveToState/AutonomousPosition packets is wrong. degenerates when two collision normals are nearly parallel or the
AC convention: heading 0 = West, 90 = North, 180 = East, 270 = South. sphere is already penetrating.
Our convention: Yaw 0 = +X (East in AC terms). The wireRot quaternion - **Repro:** Run along a building wall and hit a corner.
needs to use holtburger's `from_heading` formula: - **Fix required:** Pre-move collision prevents penetration (fixes
`theta = (450 - degrees).to_radians()`, `w=cos(theta/2)`, `z=sin(theta/2)`. BUG-005), which eliminates the degenerate crease case. Also need
- **Repro:** Walk in acdream, observe from retail client — character faces stuck detection + push-out as a safety valve.
wrong direction. - **Phase:** B.3 (collision completion)
- **Likely area:** GameWindow.cs wireRot computation (line ~1899).
- **Phase:** B.2 (movement completion)
### BUG-004: Run speed not verified working ### BUG-007: Some trees don't have collision
- **Observed:** 2026-04-14 - **Observed:** 2026-04-14
- **Description:** RunRate wiring exists (Task 1) but user reported no - **Description:** Some scenery trees/objects pass through despite
speed change. Either the server's UpdateMotion ForwardSpeed isn't being CylSphere collision being implemented. Likely missing CylSphere
received, or it's not propagating to the velocity computation. Need to data in their Setup, or the Setup isn't cached in PhysicsDataCache.
add diagnostic logging to verify the UpdateMotion path fires. - **Repro:** Walk through certain trees near Holtburg.
- **Phase:** B.2 (movement completion) - **Phase:** B.3 (collision completion)
--- ---
## Fixed ## Fixed
_(none yet)_ ### BUG-002: Jump not visible from retail client
- **Fixed:** 5634e71 — Jump packet (opcode 0xF61B) now sent to server.
### BUG-003: Facing direction mismatch with server
- **Fixed:** 6523c71 — YawToAcQuaternion converts from our yaw convention
to AC heading (0=West, 90=North) using holtburger's from_heading formula.
### BUG-004: Run speed not verified working
- **Fixed:** bb7eced — Server doesn't echo UpdateMotion to sender. Compute
RunRate locally via PlayerWeenie.InqRunRate (Run skill 200 → 9.5 m/s).