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
11 KiB
OpenWC Full Development Roadmap
Назначение
Этот документ — полная инженерная карта разработки OpenWC. Статусы и последовательность исполняемых milestones остаются в README.md; детальные subsystem plans находятся в roadmap/. При расхождении текущий target определяет, что делать сейчас, а этот roadmap — как решение должно развиваться целиком.
Godot-specific implementation rules обязательны из ../docs/GODOT_BEST_PRACTICES.md.
Итоговый продукт
OpenWC должен предоставить четыре согласованных режима:
Blizzlike335— клиент WoW 3.3.5a build 12340 с максимально точным наблюдаемым поведением.Enhanced— opt-in графические, UX и accessibility улучшения, не меняющие wire protocol и server authority без отдельного profile.AuthoringStudio— инструменты мира, контента, БД и playtest внутри Godot Editor.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 |
| RND | Renderer и graphics | 02-rendering-and-graphics.md |
| NET | Protocol, session и synchronization | 03-network-and-session.md |
| GMP | Gameplay systems | 04-gameplay-systems.md |
| UIA | UI, Lua, addons, audio | 05-ui-lua-audio.md |
| EDT | Godot Editor и content authoring | 06-editor-and-content-tools.md |
| SRV | TrinityCore/AzerothCore integration | 07-server-emulator-integration.md |
| QAR | Fidelity, tests, CI и releases | 08-quality-and-release.md |
Dependency graph
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:
C1 Core loop— combat, spells, auras, death, loot, inventory, quests.C2 Character— creation/customization, equipment, animation, pets, mounts.C3 World— map/minimap, exploration, taxi, transports, weather, audio.C4 Services— gossip, vendors, trainers, bank, mail, auction, professions.C5 Social— chat, friends, ignore, party, raid, guild, calendar.C6 Instances/PvP— lockouts, LFG, vehicles, battlegrounds, arenas, outdoor PvP.C7 UI/addons— FrameXML, Lua 5.1.1, secure execution, default UI, compatibility tiers.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 проходит один и тот же цикл:
Research— original behavior, core expectations, готовые tools/references.Contract— owner, types, commands/events, capabilities и error states.Fixture— golden input/output или reproducible live scenario до production code.Pure implementation— parser/reducer/validator без Node where possible.Adapter— network, renderer, UI, Editor или server boundary.Vertical integration— минимальный observable player/author outcome.Failure/recovery— malformed, cancel, disconnect, rollback, missing asset.Fidelity/performance— comparison evidence и budgets.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 обнаружены явно.
Правило улучшений
Современное улучшение допускается, если:
- исходное поведение
Blizzlike335уже измерено или gap отмечен; - улучшение включается отдельным setting/profile;
- оно не меняет protocol/server authority скрыто;
- есть before/after visual/performance/accessibility evidence;
- 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имеют 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 и требует легально полученную установку клиента.