Captures the full retail-faithful remote-entity motion port that shipped
today (commit 340dabb). Documents the wire-format discoveries (correct
MovementStateFlag bits, ACE stop signals, absent-HasVelocity semantics),
the architecture (per-remote PhysicsBody + MotionInterpreter), and the
5+ failed approaches we worked through before landing on the right one.
Key pickup for next session: investigate retail observer view of ACdream
player — user reported "not perfect" right before calling it.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Updates memory/project_session_2026_04_18.md with the final session
counts after the extra B.4 / H.2 / AppraiseInfoParser / character-
actions / appraise-wiring commits that landed after the mid-session
docs update.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds the three evening client-debugging commits + the five new
architectural findings they produced:
- NPC clothing by-camera-angle flicker → instance-batching dedup fix
(`(GfxObjId, PaletteHash ^ SurfaceOverridesHash)` as group key)
- Run animation broadcast fix → wire WalkForward+HoldKey.Run +
separate LocalAnimationCommand for local RunForward cycle
- Jump animation via MotionCommand.Falling SubState swap (not Action,
not Modifier — just a plain SubState cycle)
Also captures the lessons learned from the jump saga: trust empirical
motion-table dumps over assumptions, the retail animation taxonomy
(Style/SubState/Modifier/Action masks), and the wire/local-animation
separation pattern.
Updates the pickup table with the small remaining polish items
(backward-walk jitter, stop-running twitch, remote-char Z offset).
Two memory files landed:
1. Updated memory/project_session_2026_04_17.md — covers all three
commits today:
- ff325ab debug overlay + mouse controls
- 7230c15 retail UI research + C# scaffold
- 3f913f1 13-slice deep-dive marathon + scaffolds + roadmap
Includes the "what to build tomorrow" lookup table, the architectural
headline findings, and session lessons (Opus-4.7 parallel swarms are
worth the cost; keystone.dll landmine; GameEvent dispatcher is the
biggest network gap).
2. New memory/project_retail_research_index.md — permanent index for
the 20 research docs (6 UI slices + 13 subsystem slices). Quick-
lookup table "use this slice when you're doing X". Also captures the
critical cross-cutting findings (architecture, wire, dat ranges) and
already-extracted retail-faithful formulas for instant reference.
This file is the standing invariant: before writing any retail-AC-
specific code, open it first to find the matching slice.
Adds the first on-screen HUD for the dev client plus today's mouse-control
refinements. Also lands yesterday's scenery-alignment changes that were
left uncommitted in the working tree.
Overlay:
- BitmapFont rasterizes a system TTF via StbTrueTypeSharp into a 512x512
R8 atlas at startup (Consolas on Windows, DejaVu/Menlo fallbacks)
- TextRenderer batches 2D quads in screen-space with ortho projection;
one shader + two draw calls (rect then text) for panel backgrounds
under glyphs
- DebugOverlay composes info / stats / compass / help panels on top of
the 3D scene; toggles via F1/F4/F5/F6; transient toasts for key events
- DebugLineRenderer and its shaders (carried over from the scenery work)
are properly committed in this commit
Controls:
- Per-mode mouse sensitivity (Chase 0.15, Fly 1.0, Orbit 1.0); F8/F9 to
adjust the active mode multiplicatively (x1.2)
- Hold RMB to free-orbit the chase camera around the player; release
stays at the new angle (no snap-back)
- Mouse-wheel zooms chase distance between 2m and 40m
- Chase pitch widened to [-0.7, 1.4] so mouse-Y tilts both ways from
the default neutral angle
Scenery alignment (carried from yesterday's session):
- ShadowObjectRegistry AllEntriesForDebug + Scale field
- SceneryGenerator uses ACViewer's OnRoad polygon test + baseLoc +
set_heading rotation
- BSPQuery dispatchers accept localToWorld so normals/offsets transform
correctly per part
- TransitionTypes.CylinderCollision rewritten with wall-slide + push-out
- PhysicsDataCache caches visual-mesh AABB for scenery that lacks
physics Setup bounds
Session 2026-04-14 summary: rendering rebuild complete, movement
speed+jump+facing working, collision partially working but needs
full retail port.
Memory updated with explicit user feedback: no more patching
collision, must port from decompiled code faithfully per CLAUDE.md.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Document current state (patchwork ~60-70%) and plan for clean port
from ACE's complete C# implementation. Lists all 12 files to port,
what to keep vs replace, and the correct approach.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>