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:
parent
fc96f1b7e3
commit
3997839d1a
1 changed files with 37 additions and 26 deletions
63
docs/bugs.md
63
docs/bugs.md
|
|
@ -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).
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue