diff --git a/docs/bugs.md b/docs/bugs.md index e027538..711b388 100644 --- a/docs/bugs.md +++ b/docs/bugs.md @@ -18,39 +18,50 @@ the "Fixed" section with the commit hash that resolved it. or the CreaturePalette pipeline in `InstancedMeshRenderer`. - **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 -- **Description:** Jump works locally (player rises and falls) but no - jump packet is sent to the server. Other clients don't see the jump. -- **Repro:** Jump in acdream, observe from retail client — no jump visible. -- **Likely area:** GameWindow.cs jump packet sending (currently a TODO - Console.WriteLine). Need to research jump packet format from holtburger. -- **Phase:** B.2 (movement completion) +- **Description:** Player walks partway into boulders, trees, and walls + before collision is detected. Root cause: static overlap detection + instead of swept-sphere. Retail uses FindTimeOfCollision to compute + the exact contact point BEFORE moving the sphere. Our system moves + first, detects overlap, then tries to push out. +- **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 -- **Description:** Character facing direction in acdream doesn't match - what other clients see. Our quaternion convention for outbound - MoveToState/AutonomousPosition packets is wrong. - AC convention: heading 0 = West, 90 = North, 180 = East, 270 = South. - Our convention: Yaw 0 = +X (East in AC terms). The wireRot quaternion - needs to use holtburger's `from_heading` formula: - `theta = (450 - degrees).to_radians()`, `w=cos(theta/2)`, `z=sin(theta/2)`. -- **Repro:** Walk in acdream, observe from retail client — character faces - wrong direction. -- **Likely area:** GameWindow.cs wireRot computation (line ~1899). -- **Phase:** B.2 (movement completion) +- **Description:** Player gets permanently stuck when walking into + building corners or between objects. The SlideSphere crease projection + degenerates when two collision normals are nearly parallel or the + sphere is already penetrating. +- **Repro:** Run along a building wall and hit a corner. +- **Fix required:** Pre-move collision prevents penetration (fixes + BUG-005), which eliminates the degenerate crease case. Also need + stuck detection + push-out as a safety valve. +- **Phase:** B.3 (collision completion) -### BUG-004: Run speed not verified working +### BUG-007: Some trees don't have collision - **Observed:** 2026-04-14 -- **Description:** RunRate wiring exists (Task 1) but user reported no - speed change. Either the server's UpdateMotion ForwardSpeed isn't being - received, or it's not propagating to the velocity computation. Need to - add diagnostic logging to verify the UpdateMotion path fires. -- **Phase:** B.2 (movement completion) +- **Description:** Some scenery trees/objects pass through despite + CylSphere collision being implemented. Likely missing CylSphere + data in their Setup, or the Setup isn't cached in PhysicsDataCache. +- **Repro:** Walk through certain trees near Holtburg. +- **Phase:** B.3 (collision completion) --- ## 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).