Files
open-wc/targets/DEVELOPMENT_ROADMAP.md
sindoring 1bf5b526be qar(M02): close player decomposition milestone
Work-Package: M02-QAR-INTEGRATOR-CLOSEOUT-001
Agent: sindo-main-codex
Tests: all M02 contracts, renderer dry-run, documentation and coordination gates passed
Fidelity: direct binding evidence and reference-only timing/routing are separated; remaining locomotion/camera gaps stay explicit
2026-07-15 23:35:00 +04:00

151 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OpenWC Full Development Roadmap
## Назначение
Этот документ — полная инженерная карта разработки OpenWC. Статусы и последовательность исполняемых milestones остаются в [`README.md`](README.md); детальные subsystem plans находятся в [`roadmap/`](roadmap/). При расхождении текущий target определяет, что делать сейчас, а этот roadmap — как решение должно развиваться целиком.
Godot-specific implementation rules обязательны из [`../docs/GODOT_BEST_PRACTICES.md`](../docs/GODOT_BEST_PRACTICES.md).
## Итоговый продукт
OpenWC должен предоставить четыре согласованных режима:
1. `Blizzlike335` — клиент WoW 3.3.5a build 12340 с максимально точным наблюдаемым поведением.
2. `Enhanced` — opt-in графические, UX и accessibility улучшения, не меняющие wire protocol и server authority без отдельного profile.
3. `AuthoringStudio` — инструменты мира, контента, БД и playtest внутри Godot Editor.
4. `HeadlessTools` — import, validation, bake, packet replay, content build и CI без GUI.
Один кодовый путь должен обслуживать runtime и editor preview через публичные contracts. Generated preview nodes, DB records и caches не являются источником истины.
## Текущее положение
- MPQ/BLP/ADT/WDT/M2/WMO native parsing и renderer vertical slice уже существуют.
- Runtime streaming, terrain quality, MultiMesh M2, WMO caches, liquids, sky и character experiments находятся в рабочем состоянии, но сосредоточены в крупных orchestration scripts.
- Renderer baseline M00 завершён: paired comparison с оригинальным клиентом записывает измеренные gaps без заявления parity, а обязательные diagnostic gaps закрыты или явно классифицированы. M01 завершил coordinate, identity и streaming-focus seams; M02 декомпозировал player input, movement, terrain query, camera и presentation без observable regression. Текущая работа M03 закрывает renderer стабильным facade и извлекает planner/scheduler без rewrite.
- Gameplay domain, network protocol, production UI/Lua, audio orchestration и server adapters в основном предстоит реализовать.
- Editor plugin пока решает extraction/preview задачи, но не является полноценной authoring platform.
## Инженерные программы
| Код | Программа | Детальный план |
|---|---|---|
| FND | Foundation, application и data | [01-foundation-and-data.md](roadmap/01-foundation-and-data.md) |
| RND | Renderer и graphics | [02-rendering-and-graphics.md](roadmap/02-rendering-and-graphics.md) |
| NET | Protocol, session и synchronization | [03-network-and-session.md](roadmap/03-network-and-session.md) |
| GMP | Gameplay systems | [04-gameplay-systems.md](roadmap/04-gameplay-systems.md) |
| UIA | UI, Lua, addons, audio | [05-ui-lua-audio.md](roadmap/05-ui-lua-audio.md) |
| EDT | Godot Editor и content authoring | [06-editor-and-content-tools.md](roadmap/06-editor-and-content-tools.md) |
| SRV | TrinityCore/AzerothCore integration | [07-server-emulator-integration.md](roadmap/07-server-emulator-integration.md) |
| QAR | Fidelity, tests, CI и releases | [08-quality-and-release.md](roadmap/08-quality-and-release.md) |
## Dependency graph
```text
M00 renderer baseline
└─ M01 coordinates/contracts
└─ M02 input/movement/camera/presentation split
└─ M03 renderer facade
├─ M04 editor shell → M05 content → M06 server adapters → M07 world editor
└─ M08 network → M09 gameplay domain → M10 playable client
M07 + M10 → M11 quest end-to-end
└─ M12 completeness waves
└─ M13 dungeon authoring
```
M12 не является одним большим этапом. Он выполняется последовательными completeness waves:
1. `C1 Core loop` — combat, spells, auras, death, loot, inventory, quests.
2. `C2 Character` — creation/customization, equipment, animation, pets, mounts.
3. `C3 World` — map/minimap, exploration, taxi, transports, weather, audio.
4. `C4 Services` — gossip, vendors, trainers, bank, mail, auction, professions.
5. `C5 Social` — chat, friends, ignore, party, raid, guild, calendar.
6. `C6 Instances/PvP` — lockouts, LFG, vehicles, battlegrounds, arenas, outdoor PvP.
7. `C7 UI/addons` — FrameXML, Lua 5.1.1, secure execution, default UI, compatibility tiers.
8. `C8 Fidelity/polish` — complete render/material/audio coverage, recovery, accessibility, localization и performance.
Каждая wave должна завершаться работающим gameplay scenario, а не количеством реализованных opcodes или таблиц.
## Milestone delivery matrix
| Milestone | Основные work packages | Обязательный результат |
|---|---|---|
| M00 | RND baseline, QAR metrics/fidelity lab | Воспроизводимые checkpoints и gaps |
| M01 | FND typed coordinates/IDs/contracts | Server/ADT/Godot round-trip и StreamingFocus |
| M02 | FND composition, GMP movement, RND presenters | Player split без visual/control regression |
| M03 | RND facade/planner/scheduler, FND jobs | Renderer доступен через API и сохраняет budgets |
| M04 | EDT plugin shell, QAR editor tests | Reload-safe workspace, commands, undo/recovery |
| M05 | FND content schemas/cache, EDT project | Deterministic Content Project build/migration |
| M06 | SRV environments/snapshots/adapters | Two-core read/diff/dry-run round-trip |
| M07 | EDT world editing/navigation/deploy | NPC placement на dev-core без ручного SQL |
| M08 | NET transport/auth/protocol/entities | Headless auth → world и deterministic replay |
| M09 | GMP world state/movement/targeting | Packet replay → deterministic gameplay snapshot |
| M10 | FND app lifecycle, RND/UIA presentation | Игрок входит, видит entities и перемещается |
| M11 | GMP quests, EDT quest tools, SRV deploy, UIA quest UI | Author → deploy → complete quest своим клиентом |
| M12 C1C8 | NET/GMP/RND/UIA completeness + QAR | Feature matrix `Compatible/Verified` по waves |
| M13 | EDT dungeon/encounter, SRV modules, GMP instances | Custom dungeon group playtest end-to-end |
## Recommended implementation rhythm
Каждая feature внутри milestone проходит один и тот же цикл:
1. `Research` — original behavior, core expectations, готовые tools/references.
2. `Contract` — owner, types, commands/events, capabilities и error states.
3. `Fixture` — golden input/output или reproducible live scenario до production code.
4. `Pure implementation` — parser/reducer/validator без Node where possible.
5. `Adapter` — network, renderer, UI, Editor или server boundary.
6. `Vertical integration` — минимальный observable player/author outcome.
7. `Failure/recovery` — malformed, cancel, disconnect, rollback, missing asset.
8. `Fidelity/performance` — comparison evidence и budgets.
9. `Documentation` — coverage status, known gaps, tooling decision и target evidence.
## Cross-cutting contracts
- `BuildProfile``Blizzlike335`, `Enhanced`, authoring и test capabilities.
- `CoordinateMapper` — единственное преобразование WoW/Godot/ADT/server coordinates.
- `AssetRepository` — original assets, overlays, caches и provenance.
- `ProtocolProfile` — build, opcodes, update fields, codecs и server capabilities.
- `WorldState` — authoritative client-side projection без Node dependencies.
- `WorldRenderFacade` — presentation boundary.
- `ViewModel/Intent` — единственная граница UI с gameplay.
- `LuaRuntime` — заменяемый Lua backend.
- `ContentProject` — stable IDs, schemas, dependencies и user-authored source.
- `ServerSchemaAdapter` — canonical content ↔ core schema/change set.
- `JobScheduler` — bounded background work, cancellation, progress и main-thread finalize.
- `Diagnostic` — code, severity, location, context, suggested fix и correlation ID.
## Архитектурные gates
Перед переходом между крупными фазами обязательны:
- `Architecture gate`: запрещённые зависимости отсутствуют.
- `Fidelity gate`: есть comparison evidence, а gaps зарегистрированы.
- `Data gate`: schema/version/migration и deterministic build проверены.
- `Performance gate`: budgets измерены на cold/warm и stress scenarios.
- `Recovery gate`: failure/reconnect/cancel/rollback проверены.
- `Authoring gate`: изменения можно создать, проверить, diff, undo и воспроизвести.
- `Server gate`: обе схемы не предполагаются одинаковыми, capabilities обнаружены явно.
## Правило улучшений
Современное улучшение допускается, если:
1. исходное поведение `Blizzlike335` уже измерено или gap отмечен;
2. улучшение включается отдельным setting/profile;
3. оно не меняет protocol/server authority скрыто;
4. есть before/after visual/performance/accessibility evidence;
5. Content Project указывает required capability и fallback.
Примеры допустимых opt-in улучшений: modern shadows, higher terrain texture resolution, anisotropy, enhanced water, longer draw distance, FSR/upscaling, color-blind palettes, scalable UI, richer editor diagnostics. Новые gameplay rules требуют server module/profile, а не только client toggle.
## Definition of complete client
Клиент считается полным не тогда, когда перечислены все packet handlers, а когда:
- все строки [`../docs/CLIENT_FEATURES.md`](../docs/CLIENT_FEATURES.md) имеют evidence-backed статус;
- основные сценарии оригинального клиента воспроизводятся end-to-end;
- default UI и выбранные addons проходят compatibility tiers;
- supported TrinityCore/AzerothCore profiles проходят contract matrix;
- renderer, audio, input, localization и recovery имеют утверждённые gaps/budgets;
- AuthoringStudio может создать, проверить, развернуть и протестировать новый quest/location/dungeon package;
- release не содержит proprietary assets и требует легально полученную установку клиента.