dd412e6d0d
Work-Package: M01-QAR-INTEGRATOR-CLOSEOUT-001 Agent: sindo-main-codex Tests: all M01 domain gates, unified renderer dry-run, coordination and documentation gates Fidelity: five build-12340 points, raw ADT and mapped AzerothCore spawn evidence; no 1:1 claim
151 lines
11 KiB
Markdown
151 lines
11 KiB
Markdown
# 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.
|
||
- 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 C1–C8 | 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 и требует легально полученную установку клиента.
|