docs(roadmap): record Linux headless bot direction

Capture the deferred configurable-LOD, Linux graphical host, true headless runtime, and multi-session automation direction without changing the active M3 sequence. Reconcile the previous blanket cross-platform exclusion while keeping native macOS graphics uncommitted.

Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-19 21:14:11 +02:00
parent b95bb3e21c
commit 0f996db747

View file

@ -1348,6 +1348,42 @@ hitch and follows.
--- ---
### Track LH — Linux and headless automation (future; user-directed 2026-07-19)
> **PARKED / FUTURE — not part of active M3.** Preserve this direction for
> deliberate architectural work after the current gameplay and UI milestones:
> a graphical Linux client, configurable retail-rooted distance LOD, and a true
> Linux headless host capable of running roughly 30 automated clients with
> minimal CPU and memory use.
The governing architectural rule is that a game session must not be a hidden
`GameWindow`. Authentication, networking, world state, movement, inventory,
combat, magic, chat, and gameplay commands/events become an instance-scoped,
presentation-independent runtime. The graphical client and bot host consume
that same runtime through explicit interfaces; they do not maintain separate
gameplay implementations.
| Phase | What | Future completion gate |
|---|---|---|
| LH0 | Extract the instance-scoped session/game runtime from presentation ownership | One session runs with renderer, UI, and audio either attached or absent; no static cross-session gameplay state |
| LH1 | Configurable graphical distance LOD, rooted in retail `GfxObjDegradeInfo` / viewer-distance behavior | Retail/DAT-authored degradation is the fidelity baseline; users may configure detail bias or maximum-detail policy without reducing the streaming/view horizon. Integrate with MP2/MP3 ownership rather than creating a competing LOD system |
| LH2 | Linux graphical host and packaging | Portable frame pacing, paths, native dependencies, input, and audio; startup validates the mandatory modern-OpenGL extensions and supported driver matrix |
| LH3 | True Linux headless host | No window, X11/Wayland display, OpenGL context, textures, meshes, particles, audio, or gameplay UI; retain only protocol/game state and the collision/nearby semantic data required for navigation and decisions |
| LH4 | Multi-session bot host, targeting approximately 30 concurrent clients in one process | Sessions isolate credentials, GUID maps, clocks, queues, plugins/behaviors, and teardown while sharing only immutable/read-only DAT and collision content caches; one-session-per-process remains a diagnostic/isolation option |
| LH5 | Bot automation surface | Actions cover movement, targeting, use, combat, casting, looting, chat, and commands; events cover object/session/portal, inventory, damage, and target lifecycle; deterministic scheduling and server-safe rate limiting are testable |
Track acceptance requires 30 connected Linux headless sessions with no GPU or
display-server dependency, bounded per-session CPU/memory growth, clean
connect/disconnect/reconnect teardown, credential-safe diagnostics, and parity
tests proving that GUI and headless hosts drive the same gameplay runtime. LOD
has no role in headless mode because no scene is rendered.
Native macOS graphical support is not committed by this track. The current
mandatory renderer requires modern OpenGL capabilities beyond Apple's native
OpenGL ceiling; revisit macOS only if a supported graphics backend is chosen.
---
## Cross-cutting work tracked in parallel ## Cross-cutting work tracked in parallel
- **Test coverage.** Each phase lands with unit + integration tests in `tests/`. Current count: 98 Core + 96 Core.Net = 194. Keep the ratio as new phases land. - **Test coverage.** Each phase lands with unit + integration tests in `tests/`. Current count: 98 Core + 96 Core.Net = 194. Keep the ratio as new phases land.
@ -1361,7 +1397,7 @@ hitch and follows.
- **Server emulation** — we use ACE for server, never reimplement. - **Server emulation** — we use ACE for server, never reimplement.
- **Account creation** — direct user to ACE tooling. - **Account creation** — direct user to ACE tooling.
- **Anti-cheat / GM tools / live-ops** — irrelevant for personal use. - **Anti-cheat / GM tools / live-ops** — irrelevant for personal use.
- **Cross-platform support** — Windows-only; the dat path assumptions depend on retail Windows install layout. Silk.NET is cross-platform but we don't promise. - **Native macOS graphical support** — not promised; Track LH covers future Linux graphical and headless hosts, while macOS needs a renderer backend compatible with Apple's platform limits.
- **Custom game content** — this is a client for existing AC data, not a toolchain. - **Custom game content** — this is a client for existing AC data, not a toolchain.
--- ---