docs(architecture): reconcile GameWindow extraction program
Close the completed M3 and portal observer gates, make the behavior-preserving GameWindow ownership campaign the explicit M4 prerequisite, and replace the stale extraction sketch with an implementation-audited sequence. Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
parent
f4cf802330
commit
cf50ee3d50
8 changed files with 354 additions and 220 deletions
|
|
@ -1,11 +1,32 @@
|
|||
# acdream — strategic roadmap
|
||||
|
||||
**Status:** Living document. Updated 2026-07-20. **M3 active; automated implementation and connected single-client magic/portal gates complete.** M2's connected demo loop is complete. M3 now has the retail cast-intent/component/target lifecycle, exact live enchantment wire state, scoped Magic input, retained spell bar, spellbook, component book, positive/negative effects panels with authored rows and selected-spell details, the complete seven-control gameplay indicator strip and its Character Information/Link/Vitae detail pages, and shared `gmPanelUI` geometry/switching over the Step 9 projectile/PhysicsScript/particle/portal foundation. Fresh-login and portal world reveal are additionally protected by a deterministic capped/uncapped connected lifecycle gate with screenshots, resource snapshots, exact graceful disconnect, and fresh-process reconnect. The next gate is a local visual rebaseline of the new R6 object-frame path; the final M3 requirement is the two-client portal-out/materialization observer gate. Issue #225's lifestone/particle alpha comparison is a separate rendering visual gate.
|
||||
**Status:** Living document. Updated 2026-07-21. **M3 landed; M4 is next after the active `GameWindow` structural prerequisite.** M3's retail casting/UI, R6 locomotion/collision/projectile/teleport/radar rebaseline, deterministic fresh-login/portal world lifecycle, and final two-client portal observer flow are user-gated. The current program is the behavior-preserving ownership campaign in [`docs/architecture/code-structure.md`](../architecture/code-structure.md); new M4 quest/emote/character-creation feature bodies wait until that campaign is complete. Issue #225's lifestone/particle alpha comparison remains a separate rendering visual gate.
|
||||
**Purpose:** One source of truth for where the project is and where it's going. Every observed defect or missing feature has a named phase that owns it; when something looks wrong in-game, look here to find the phase that'll address it. Implementation details live in per-phase specs under `docs/superpowers/specs/`, not in this file.
|
||||
|
||||
---
|
||||
|
||||
## Current program: M3 — Cast a spell
|
||||
## Current program: `GameWindow` structural stabilization (M4 prerequisite)
|
||||
|
||||
**Outcome:** `GameWindow` becomes a thin Silk.NET composition/lifecycle shell
|
||||
without changing accepted gameplay or rendering behavior. Focused App owners
|
||||
take responsibility for selection, animation presentation, live-session and
|
||||
live-entity integration, landblock presentation, and update/render frame
|
||||
orchestration.
|
||||
|
||||
**Current sequence:** The implementation audit, exact ownership ledger, slice
|
||||
boundaries, tests, connected gates, and exit criteria live in
|
||||
[`docs/architecture/code-structure.md`](../architecture/code-structure.md) §4.
|
||||
The next slice is selection/interaction: extract the read-only world query,
|
||||
move stateful Use/PickUp/auto-walk intent into one controller, then cut the
|
||||
related input cases over and delete the old `GameWindow` bodies.
|
||||
|
||||
This is a behavior-preserving structural program. Severe regressions still get
|
||||
root-cause fixes in separate commits; ordinary feature work resumes with M4
|
||||
after the campaign exit criteria pass.
|
||||
|
||||
---
|
||||
|
||||
## Completed program: M3 — Cast a spell (landed 2026-07-21)
|
||||
|
||||
**Outcome:** Cast a projectile spell at a hostile target, see the complete
|
||||
turn/windup/release/projectile/impact lifecycle, self-cast a buff and see its
|
||||
|
|
@ -39,14 +60,14 @@ active enchantment, then recall through the DAT-driven portal presentation.
|
|||
same-location revisit, graceful logout, and uncapped fresh-process
|
||||
reconnect. The gate records structured readiness/resource checkpoints and
|
||||
full-frame PNGs, and rejects early world visibility or stranded owners.
|
||||
5. **Pending local visual gate:** locomotion, collision, projectile, and
|
||||
teleport comparison after the R6 complete-root-Frame/object-workset cutover.
|
||||
6. **Pending two-client visual gate:** portal-out/materialization observer
|
||||
presentation before M3 closes, including #218's finished Hidden silhouette,
|
||||
fully rendered destination reveal, and no indoor stop-time position snap.
|
||||
5. **Done (connected user gate):** locomotion, collision, projectile, teleport,
|
||||
and radar comparison after the R6 complete-root-Frame/object-workset cutover.
|
||||
6. **Done (two-client user gate):** portal-out/materialization observer
|
||||
presentation, including #218's finished Hidden silhouette, fully rendered
|
||||
destination reveal, and no indoor stop-time position snap.
|
||||
|
||||
Opportunistic UI/physics fixes are no longer the work-order driver. They enter
|
||||
the active slice only when they block this demo or represent a severe regression.
|
||||
M3 is closed. Its detailed ledger remains here as the landing record; the
|
||||
structural program above is the only current work-order driver before M4.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -937,8 +958,7 @@ diagnostic scaffolding, not yet the final collision system.
|
|||
and 0.2 -> 0.3 ms at Sawato. ACE generator population changes are reported
|
||||
rather than treated as client leaks. Absolute FPS/GPU timing remains
|
||||
session/display-path evidence, not an RDP-stable gate. The connected visual
|
||||
locomotion/collision/projectile/teleport comparison remains for the next
|
||||
local viewing session.
|
||||
locomotion/collision/projectile/teleport/radar comparison passed 2026-07-21.
|
||||
- **L.2g — Inbound motion interpretation (remote-entity CMotionInterp funnel).**
|
||||
ACTIVE 2026-07-02. Port retail's inbound motion pipeline verbatim for ALL
|
||||
remote entities (players, NPCs, monsters — one funnel, user-approved):
|
||||
|
|
@ -1453,7 +1473,7 @@ OpenGL ceiling; revisit macOS only if a supported graphics backend is chosen.
|
|||
|
||||
## Cross-cutting work tracked in parallel
|
||||
|
||||
- **Test coverage.** Each phase lands with layer-matched unit and integration tests in `tests/`. Current Release baseline: 6,480 passed / 5 intentional skips (2026-07-20).
|
||||
- **Test coverage.** Each phase lands with layer-matched unit and integration tests in `tests/`. Current Release baseline: 6,481 passed / 5 intentional skips (2026-07-21).
|
||||
- **Memory files.** Live subsystem state and digests are indexed by `claude-memory/MEMORY.md`; stable engineering references remain under `memory/`. Canonical program status stays in milestones/roadmap/issues.
|
||||
- **`CLAUDE.md` discipline.** Check all four references (ACE, ACViewer, WorldBuilder, Chorizite) before committing to an approach. WorldBuilder is the closest stack match and should be checked first.
|
||||
|
||||
|
|
|
|||
|
|
@ -2,28 +2,28 @@
|
|||
|
||||
**Status:** Living document. Created 2026-05-12.
|
||||
**Sits above:** [`docs/plans/2026-04-11-roadmap.md`](2026-04-11-roadmap.md) (the strategic phase index).
|
||||
**Currently working toward:** **M3 — "Cast a spell." M2 — "Kill a drudge"
|
||||
LANDED 2026-07-15.** The complete connected melee/missile, death/loot,
|
||||
inventory, and item-giving demo is user-gated. The shared projectile/effect
|
||||
foundation is hardened through Step 9. Spellbook/component-book filtering,
|
||||
favorite spell bar, connected casting/enchantment effects, and portal-space
|
||||
presentation have passed their single-client visual gates. The corrective bounded
|
||||
render/resource-lifetime integration passed its seven-destination connected
|
||||
stress gate without a crash or cumulative collapse. A second deterministic
|
||||
world-lifecycle gate now protects fresh login, outdoor/world-edge/dungeon
|
||||
travel, same-location revisit, exact graceful disconnect, and an uncapped
|
||||
fresh-process reconnect with canonical readiness snapshots and saved PNG/JSON
|
||||
artifacts. The remaining M3 visual requirement is the final two-client
|
||||
portal-out/materialize observer gate. The new R6 object-update cutover has
|
||||
passed its unattended connected input/portal/performance rebaseline; its
|
||||
locomotion/collision/projectile/teleport visual gate remains for the next local
|
||||
viewing session before that observer gate.
|
||||
**Currently working toward:** **M4 — "Live in the world." M3 — "Cast a
|
||||
spell" LANDED 2026-07-21.** Projectile/self-buff casting, protection effects,
|
||||
spellbook/component-book filtering and deletion, favorite spell bars, active
|
||||
effects, recall, portal-space presentation, and the complete two-client
|
||||
portal-out/materialization observer flow are user-gated. The R6 locomotion,
|
||||
collision, projectile, teleport, and radar rebaseline also passes. Deterministic
|
||||
world-lifecycle automation protects fresh login, outdoor/world-edge/dungeon
|
||||
travel, same-location revisit, exact graceful disconnect, and uncapped
|
||||
fresh-process reconnect with canonical JSON/PNG evidence.
|
||||
|
||||
Before new M4 quest/emote/character-creation subsystem bodies enter the App
|
||||
layer, the active structural prerequisite is the behavior-preserving
|
||||
`GameWindow` decomposition in
|
||||
[`docs/architecture/code-structure.md`](../architecture/code-structure.md).
|
||||
The 2026-07-21 audit found 15,723 lines, 258 fields, and about 259 methods;
|
||||
the next slice finishes selection/interaction ownership.
|
||||
|
||||
Carried:
|
||||
#153 far-teleport residual, #116 slide-response, the remaining R6 ownership cleanup plus
|
||||
registered TS-50/TS-51 timing residuals (the complete-root-Frame/object-workset
|
||||
cutover is automated-test complete 2026-07-20; three independent re-reviews are
|
||||
clean, Release builds with 17 known test-project warnings tracked by #228, and
|
||||
6,480 tests pass / 5 skip after the world-reveal gate), and
|
||||
cutover is automated- and visual-gate complete; Release builds with 17 known
|
||||
test-project warnings tracked by #228, and 6,481 tests pass / 5 skip), and
|
||||
the deferred Modern Pipeline track (MP1b+). The separate #225 shared-alpha
|
||||
implementation has passed connected lifetime/performance gates and awaits only
|
||||
its lifestone/particle visual comparison.
|
||||
|
|
@ -662,8 +662,8 @@ include dungeons.
|
|||
publishes outdoor landcells independently of surviving object meshes.
|
||||
Terrain/entity streaming distance is
|
||||
unchanged; the user-requested default Extended setting doubles only particle
|
||||
range, while Retail remains available as the exact cutoff. The
|
||||
final two-client visual gate is still pending.
|
||||
range, while Retail remains available as the exact cutoff. The final
|
||||
two-client visual gate passed 2026-07-21.
|
||||
- **L.1c local attack receive path (implemented and live-gated 2026-07-15)** —
|
||||
local non-autonomous mt-0 UpdateMotion now uses retail's wholesale interpreted
|
||||
funnel and action-stamp gate, so ACE's server-selected melee/missile action
|
||||
|
|
@ -713,7 +713,17 @@ a game.
|
|||
|
||||
---
|
||||
|
||||
### M3 — "Cast a spell" — 🔵 ACTIVE (started 2026-07-15)
|
||||
### M3 — "Cast a spell" — ✅ LANDED 2026-07-21
|
||||
|
||||
**Landing writeup:** Mages now work end to end. A connected player can manage
|
||||
the retail spellbook/component book and favorite bars, cast projectile and
|
||||
self-targeted spells with the correct components/target gates, see traveling
|
||||
missiles and DAT-driven protection/impact effects, inspect live enchantments,
|
||||
and recall or portal through the retail tunnel/reveal lifecycle. The final
|
||||
two-client observer gate confirms departure disappearance, destination
|
||||
materialization, finished pose, rendered destination, and indoor movement
|
||||
without snap-back. The R6 local locomotion/collision/projectile/teleport and
|
||||
radar checks pass on the same Release baseline.
|
||||
|
||||
**Demo scenario:** Cast Flame Bolt at a drudge. Watch the cast animation,
|
||||
the projectile, the impact. Self-cast a buff (Strength Self). See the
|
||||
|
|
@ -740,9 +750,9 @@ The strip now uses retail DAT states for link quality, Helpful/Harmful effects,
|
|||
Vitae, burden, mini-game availability, and end-character-session; live link
|
||||
age, player load, and enchantment registries drive their retail thresholds and
|
||||
the burden/effect/logout actions use the shared panel/dialog owners. Main-panel
|
||||
visibility now flows through retail's one-active `gmPanelUI` owner. M3 remains
|
||||
active only for the connected single-client magic
|
||||
UI/casting visual gate and the final two-client portal observer gate.
|
||||
visibility now flows through retail's one-active `gmPanelUI` owner. The
|
||||
connected single-client magic UI/casting gates and final two-client portal
|
||||
observer gate passed before landing.
|
||||
The 2026-07-17 indicator follow-up also mounts authored Character Information,
|
||||
Link Status, Vitae, and Mini Game detail roots as children of that same
|
||||
main-panel owner. Helpful, Harmful, Character Information, Link, and Vitae
|
||||
|
|
@ -795,7 +805,12 @@ from M3 = retail-equivalent gameplay loop for melee and casters.
|
|||
|
||||
---
|
||||
|
||||
### M4 — "Live in the world" — 🔵 (~6–10 weeks)
|
||||
### M4 — "Live in the world" — 🟡 NEXT (~6–10 weeks)
|
||||
|
||||
**Entry condition:** complete the behavior-preserving `GameWindow`
|
||||
decomposition campaign before adding H.3/H.4/L.1e feature bodies. This protects
|
||||
M4 from deepening the App-layer composition debt; it does not change M4's demo
|
||||
scope.
|
||||
|
||||
**Demo scenario:** Create a fresh character from scratch (no ACE admin).
|
||||
Spawn. Talk to an NPC. Accept a quest. Walk to a dungeon entrance. Portal
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue