docs(ui): plan the staged UI-backend strategy
Two-stage rollout, one stable abstraction layer:
1. Short-term: Hexa.NET.ImGui as the backend. Wire up in days, iterate
game logic (chat, inventory, vitals) in weeks. Looks like a debugger,
acceptable while we prove the interaction logic end-to-end.
2. `AcDream.UI.Abstractions` — ViewModels + Commands + `IPanel` /
`IPanelRenderer` interfaces. Backend-agnostic. Plugin API targets
this layer; plugins never see ImGui.
3. Long-term: custom retail-look backend using dat assets. Swap panel
by panel. ImGui stays forever as the `ACDREAM_DEVTOOLS=1` overlay.
The new doc (`2026-04-24-ui-framework.md`) captures:
- Full design of the three-layer split
- Why Hexa.NET.ImGui over ImGui.NET + Silk.NET.OpenGL.Extensions.ImGui
(AOT readiness, tracks upstream ImGui faster, cleaner native-lib
bundling)
- Alternatives considered and ruled out (Myra, Avalonia, NoesisGUI,
RmlUi, pure custom from day one)
- Implementation order (Sprint 1 vitals HUD → Sprint 2 interaction
panels → Sprint 3 plugin API → Sprint 4+ more panels → later
custom retail-look)
- Risks + mitigations and open questions deferred to implementation
Roadmap Phase D updated with a pointer to the new plan so future
sessions start from the latest strategy, not the original
all-custom-from-day-one Phase D description.
No code changes yet. Ready to start Sprint 1 when approved.
This commit is contained in:
parent
593b76fda1
commit
99ce541fd7
2 changed files with 277 additions and 0 deletions
|
|
@ -120,6 +120,26 @@ Plus polish that doesn't get its own phase number:
|
|||
|
||||
**Goal:** chat window, nameplates, inventory, and audio. Can run concurrently with Phase B or C because it doesn't touch gameplay/net/rendering surfaces.
|
||||
|
||||
> **Updated 2026-04-24 — staged backend strategy.** We split Phase D into
|
||||
> two stages so game logic can be validated quickly without waiting for
|
||||
> the full retail-look custom toolkit. See
|
||||
> [`docs/plans/2026-04-24-ui-framework.md`](2026-04-24-ui-framework.md)
|
||||
> for the full design. Short version:
|
||||
>
|
||||
> 1. **D.2a — Hexa.NET.ImGui as the short-term backend.** Wire up in days,
|
||||
> iterate game logic (chat-send, inventory actions, vitals HUD reading
|
||||
> real state) in weeks. Looks like a debugger; that's fine.
|
||||
> 2. **Stable `AcDream.UI.Abstractions` layer** — ViewModels + Commands +
|
||||
> `IPanel` / `IPanelRenderer` interfaces. Backend-agnostic. Plugin API
|
||||
> publishes against this layer and never sees ImGui.
|
||||
> 3. **D.2b onward — custom retail-look backend** using dat assets (icons,
|
||||
> panels, fonts). Swap one panel at a time; ImGui stays forever as the
|
||||
> `ACDREAM_DEVTOOLS=1` overlay for packet trace / state dump / dat browser.
|
||||
>
|
||||
> Every sub-piece below (D.3 AcFont, D.4 dat sprites, D.5 core panels,
|
||||
> D.6 HUD, D.7 cursors) ships against the abstraction layer, so it
|
||||
> doesn't matter which backend is drawing when the port lands.
|
||||
|
||||
**Sub-pieces:**
|
||||
- **D.1 — 2D ortho overlay + font rendering.** ✅ SHIPPED 2026-04-17 as the dev-facing debug overlay (StbTrueTypeSharp system-font atlas + `TextRenderer` + `DebugOverlay`).
|
||||
- **D.2 — Retail UI framework + first panels.** Research + scaffold landed 2026-04-17 (see `docs/research/retail-ui/`). Ships:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue