docs(M04): prioritize renderer fidelity milestone

Work-Package: M04-RND-FIDELITY-ROADMAP-001
Agent: sindo-main-codex-renderer-roadmap
Tests: coordination, documentation, target sequence, old-link and diff gates pass
Fidelity: original build-12340 captures are authoritative; Noggit is secondary reference
This commit is contained in:
2026-08-02 17:41:18 +04:00
parent 4369dd3c91
commit f77f50c0f9
28 changed files with 279 additions and 76 deletions
+12
View File
@@ -9,6 +9,12 @@ OpenWC состоит из двух продуктов на общей плат
Оба продукта используют общие канонические модели, импорт данных и renderer preview, но не разделяют UI, lifecycle и права на изменение данных.
Планируемый racing fork является третьим потребителем graphics foundation. Он
может использовать world streaming, materials, lighting, shadows, liquids,
characters, animation и effects contracts, но не зависит от WoW network,
gameplay state или proprietary asset repository. Его улучшения выбираются
отдельным `Racing` graphics profile и не меняют `Blizzlike335`.
## Архитектурные принципы
1. Сервер авторитетен для боя, ресурсов, инвентаря, квестового прогресса и общего мира.
@@ -57,6 +63,11 @@ TrinityCore/AzerothCore ◄── Network Adapter ◄── Runtime Client
Renderer получает `StreamingFocus`, `WorldVisualSnapshot` и presentation-команды. Он НЕ ДОЛЖЕН читать packets, SQL или gameplay input.
`GraphicsProfile` выбирается на composition boundary и задаёт material,
lighting, shadow, liquid, effects, distance и post-processing capabilities.
Внутренние shader/services не смешивают Blizzlike/Enhanced/Racing policy через
неявные глобальные switches.
### UI
Владеет login/realm/character screens, HUD и FrameXML/Lua-compatible presentation. UI читает immutable view models и отправляет intents. Lua API получает capability-based facade; прямой доступ к network, filesystem и editor API запрещён.
@@ -157,6 +168,7 @@ addons/
- `ServerSchemaAdapter` — inspect, import, diff, generate, validate.
- `ContentTypeDescriptor` — schema, inspector, validator, compiler.
- `WorldRenderer` — streaming focus и entity presentation.
- `GraphicsProfile` — explicit Blizzlike/Enhanced/Racing visual capabilities.
- `GameplaySystem` — commands/events без scene dependency.
- `EditorTool` — selection, command creation и gizmo, без прямой записи.
- `TestFixtureProvider` — обезличенные packets, DB snapshots и content fixtures.
+1 -1
View File
@@ -197,7 +197,7 @@ func request_streaming_tile_load(request: StreamingTileLoadRequest) -> void:
- Предпочитать именованные predicates длинным boolean expressions.
- Branch по capability/profile должен быть локальным и типизированным.
- Не распространять `if core == "azerothcore"` по проекту; использовать adapter/capability.
- Не смешивать Blizzlike и Enhanced branches в каждом shader/service: выбирать profile/strategy на boundary.
- Не смешивать Blizzlike, Enhanced и Racing branches в каждом shader/service: выбирать profile/strategy на boundary.
- Pattern/table-driven mapping предпочтительнее сотен одинаковых `if`, если таблица остаётся читаемой и валидируемой.
## Comments
+1 -1
View File
@@ -181,7 +181,7 @@ stateDiagram-v2
- Uniform/global parameter: coordinate/color space, range, units и producer.
- Material profile: supported WoW shader/blend modes и approximations.
- Expensive branch/texture dependency имеет cost/fallback note.
- Blizzlike и Enhanced behavior документируются отдельно.
- Blizzlike, Enhanced и Racing behavior документируются отдельно.
### Network codecs
+1 -1
View File
@@ -61,7 +61,7 @@ Gameplay state, network session, renderer world, editor session, caches конк
- Visibility ranges/HLOD, occlusion и automatic mesh LOD использовать совместно по профилю.
- Unique materials/textures минимизировать; descriptor/resource counts являются budget metric.
- RenderingServer RIDs имеют явного владельца и освобождаются в deterministic shutdown test.
- Shader/material profiles разделяют Blizzlike и Enhanced; runtime не компилирует тяжёлые варианты при пересечении ADT boundary.
- Shader/material profiles разделяют Blizzlike, Enhanced и Racing; runtime не компилирует тяжёлые варианты при пересечении ADT boundary.
## EditorPlugin lifecycle
+27 -14
View File
@@ -18,7 +18,20 @@
Готово, когда render sandbox сохраняет текущее качество, а domain тестируется без scene tree.
## M1 — Content Project и Editor shell
## M1 — Renderer fidelity и graphics foundation
- Original-client build-12340 corpus: две базовые позиции выбранной локации,
settings/time/weather/camera metadata, static и temporal evidence.
- Точные color, terrain, M2/WMO material, sky/fog/weather и shadow rules.
- MH2O/MCLQ/MLIQ liquids, GPU animation, characters, particles и ribbons.
- Раздельные `Blizzlike335` и opt-in `Enhanced/Racing` graphics profiles.
- Paired semantic-region comparison, human approval и traversal/GPU budgets.
Готово, когда утверждённая capture matrix не содержит неклассифицированных
визуально различимых gaps, а общие graphics contracts пригодны клиенту, Editor
preview и racing fork.
## M2 — Content Project и Editor shell
- `addons/openwc_editor` с workspace и docks.
- Content Project schema, stable IDs, save/load/migration.
@@ -28,7 +41,7 @@
Готово, когда небольшой synthetic project можно создать, изменить, undo, перезапустить Editor и получить идентичное состояние.
## M2 — Server inspector и adapters
## M3 — Server inspector и adapters
- TrinityCore/AzerothCore connection profiles.
- Schema detection и capabilities.
@@ -38,7 +51,7 @@
Готово, когда одна сущность round-trip проходит оба поддерживаемых adapter profile без молчаливой потери данных.
## M3 — World Editor MVP
## M4 — World Editor MVP
- Map viewport и coordinate overlays.
- Server spawn visualization.
@@ -48,7 +61,7 @@
Готово, когда NPC размещается в Editor и появляется на тестовом core в ожидаемой позиции.
## M4 — Quest vertical slice
## M5 — Quest vertical slice
- Quest form и chain graph.
- Kill/collect/explore objectives, giver/ender, rewards и localization.
@@ -57,7 +70,7 @@
Готово, когда созданный в Editor квест полностью проходится клиентом.
## M5 — Playable network client
## M6 — Playable network client
- Auth, realm, character selection и world session.
- Entity/update fields и world spawn.
@@ -66,7 +79,7 @@
Готово, когда клиент стабильно входит в мир, перемещается и видит синхронизированные entities.
## M6 — Core gameplay
## M7 — Core gameplay
- Combat/spells/auras/death.
- Inventory/equipment/loot/vendors.
@@ -76,7 +89,7 @@
Готово, когда базовый leveling loop проходит без внешнего клиента.
## M7 — Dungeon authoring
## M8 — Dungeon authoring
- DungeonPackage, encounters, triggers, doors и spawn groups.
- SmartAI/script skeleton generation.
@@ -85,7 +98,7 @@
Готово, когда custom dungeon собирается, разворачивается и проходится группой на test core.
## M8 — Compatibility и completeness
## M9 — Compatibility и completeness
- Feature matrix WoW 3.3.5a.
- Addon compatibility tiers.
@@ -98,17 +111,17 @@
При равной ценности порядок такой:
1. безопасность данных и воспроизводимость;
2. корректность протокола и authoritative state;
3. пользовательский vertical slice;
4. diagnostics и testability;
5. frame pacing;
6. визуальная точность и polish.
2. original-client renderer fidelity и frame pacing текущего M04;
3. корректность протокола и authoritative state;
4. пользовательский vertical slice;
5. diagnostics и testability;
6. opt-in визуальные улучшения после Blizzlike evidence.
## Не делать раньше времени
- прямую запись в production DB;
- универсальный visual scripting для любой C++ механики;
- массовую реализацию Lua API без работающего UI slice;
- большой rewrite существующего renderer;
- полный custom renderer до bounded shader/backend spike и profiler evidence;
- multi-expansion abstraction до устойчивого профиля 3.3.5a;
- proprietary asset packaging в репозитории.
+3 -3
View File
@@ -44,8 +44,8 @@ ID записывается в claim, ветке, PR/MR и handoff. Нельзя
```text
M01-FND-COORDS-001
M03-RND-SCHEDULER-001
M08-NET-SRP-001
M12-UIA-LUA-SPIKE-001
M09-NET-SRP-001
M13-UIA-LUA-SPIKE-001
```
Program codes определены в [`../targets/DEVELOPMENT_ROADMAP.md`](../targets/DEVELOPMENT_ROADMAP.md).
@@ -214,7 +214,7 @@ Merge order:
```text
fnd(M01): add canonical coordinate mapper
net(M08): decode auth challenge safely
net(M09): decode auth challenge safely
rnd(M03): extract streaming target planner
test(M00): add paired checkpoint manifest
```
+19
View File
@@ -71,6 +71,25 @@ tools/verify_render_performance_stability.ps1 -RepeatedSampleComparison <repeate
только на повторяемой регрессии. Полный контракт и схема evidence описаны в
[`modules/renderer-closeout-verification.md`](modules/renderer-closeout-verification.md).
M04 renderer fidelity использует оригинальный клиент build 12340 как
authoritative visual oracle. Noggit допускается как дополнительный reference
композиции/placements и Editor UX, но не подтверждает lighting, shadows, liquids,
materials, animation или effects.
Reference corpus импортируется через versioned CSV manifest. Для каждой
выбранной локации базово снимаются `wide` и `ground` viewpoints; отдельные
specialized captures добавляются для уникальных interior, liquid, shadow,
character и effect policies. Capture metadata фиксирует WoW/server coordinates,
доступные camera fields, time, weather, graphics profile, viewport, artifact
name и provenance. Отсутствующее значение хранится как `Unknown`, а не
восстанавливается предположением.
Proprietary screenshots/video остаются вне Git. Repository evidence включает
schema, SHA-256, static/temporal metrics, semantic region classification и human
approval. Static parity требует согласованных geometry/framing и material/light/
shadow/liquid regions; temporal parity отдельно проверяет phase, duration,
trajectory, UV motion и emitter lifetime.
### Navigation compatibility
- Golden synthetic meshes проверяют slope, climb, radius erosion, holes, tiled seams и off-mesh connections.
+2 -1
View File
@@ -41,7 +41,8 @@ Decision/ADR:
| StormLib | ADOPTED | MPQ | Чтение архивов через native extension | Version/license/update audit |
| WowUnreal | REFERENCE | Полный клиент | Coverage, acceptance criteria, networking/UI research | Unreal-specific design |
| WoWee | REFERENCE | Клиент/editor/formats | Architecture, editor workflows, tests, open formats | Заявления требуют независимой проверки |
| Noggit Red | REFERENCE | World editor | Terrain/placement UX, UID workflows | Не Godot architecture |
| Original WoW 3.3.5a build 12340 client | ADOPTED | Visual/behavior oracle | Private static/temporal capture corpus, settings and paired comparison | Proprietary artifacts remain outside Git; camera/settings provenance must be explicit |
| Noggit Red | REFERENCE | World editor | Terrain/placement UX, UID workflows и secondary render-composition reference | Не Godot architecture; не authoritative lighting/material/shadow/liquid oracle |
| open-realm | REFERENCE | Formats/runtime | Независимая проверка parsers/render behavior | Другая архитектура и coverage |
| whoa | REFERENCE | Client behavior | 3.3.5a runtime semantics и fixtures | Лицензия и переносимость отдельных решений |
| wow.export | REFERENCE | Asset conversion | M2/WMO/material/export edge cases | Web-specific pipeline |
+1 -1
View File
@@ -241,7 +241,7 @@ runtime data migration.
| Current starter outfit | Partial | Existing resolver reused unchanged | Needs extracted DBC fixture and client comparison |
| Current skin/geoset composition | Partial | Existing components reused | Full equipment/customization fidelity incomplete |
| Build-12340 animation semantics | Planned | No original-client fixture | Capture animation IDs/transitions/timing |
| Runtime equipment/network updates | Planned | No snapshot contract | M08/M09/M12 work |
| Runtime equipment/network updates | Planned | No snapshot contract | M09/M10/M13 work |
## Known gaps and risks
+3 -3
View File
@@ -237,7 +237,7 @@ separate versioned movement snapshot contract.
- Terrain/collision policy can consume displacement without changing input or velocity ownership.
- A future server-aware predictor may replace this controller behind the scene composition boundary.
- A typed movement snapshot may expose deterministic replay state when M08/M09 require it.
- A typed movement snapshot may expose deterministic replay state when M09/M10 require it.
- A future application profile can map to this narrow capability value without
coupling the movement controller to the application shell.
@@ -252,8 +252,8 @@ separate versioned movement snapshot contract.
| Typed sprint/free-flight exclusion | Implemented | Pure and real-scene profile regressions | Application shell must select profile explicitly later |
| Terrain height query | Implemented | Typed `TerrainQuery` and injected player regression | Ground-snap policy remains scene-owned |
| Terrain collision movement policy | Planned | Height-only query does not model collision | Add slopes/holes/collision later |
| Jump/fall/swim | Planned | M02/M09 roadmap | Requires terrain/liquid and server contracts |
| Prediction/reconciliation | Planned | M08/M09 roadmap | Requires movement snapshot/network contract |
| Jump/fall/swim | Planned | M02/M10 roadmap | Requires terrain/liquid and server contracts |
| Prediction/reconciliation | Planned | M09/M10 roadmap | Requires movement snapshot/network contract |
## Known gaps and risks
+1 -1
View File
@@ -227,7 +227,7 @@ Existing ADT/native/cache format versions remain unchanged.
| Renderer loaded-mesh diagnostic backend | Implemented | M03 facade typed sample and detached snapshot contract | Not composed into gameplay; triangle Mesh ray is diagnostic only |
| Authoritative renderer/physics backend | Planned | Boundary permits replacement | Define holes/slopes/collision/readiness semantics before gameplay composition |
| Holes/slopes/collision | Planned | Outside height-only contract | Later movement/physics package |
| Liquid/swim query | Planned | Outside contract | M09/M12 world gameplay |
| Liquid/swim query | Planned | Outside contract | M10/M13 world gameplay |
## Known gaps and risks
+1 -1
View File
@@ -69,6 +69,6 @@
- Remaining risks: direct build-12340 timing evidence for movement/camera,
jump/fall/swim/fly, autorun, left-button camera/select behavior, active camera
collision, terrain slopes/holes/liquids, persisted keybindings, server authority,
prediction and reconciliation remain for M09/M10/M12. Runtime renderer scenes
prediction and reconciliation remain for M10/M11/M13. Runtime renderer scenes
continue to default to explicit `RenderSandbox` until an application shell
selects `Blizzlike335`. M02 makes no complete `1:1` compatibility claim.
+108
View File
@@ -0,0 +1,108 @@
# M04 — Renderer Fidelity and Graphics Foundation
<!-- OPENWC_TARGET:ACTIVE -->
## Outcome
Довести графическую основу OpenWC до evidence-backed визуальной совместимости с
оригинальным клиентом WoW 3.3.5a build 12340 и создать общий graphics contract
для дальнейшего клиента, Editor preview и отдельного racing-профиля.
Noggit используется как дополнительный ориентир композиции и authoring preview,
но не заменяет оригинальный клиент как fidelity oracle.
## Reference corpus
- [ ] Принять versioned CSV manifest и валидатор оригинальных captures.
- [ ] Импортировать минимум две позиции каждой выбранной локации: `wide` для
неба/тумана/дальности/композиции и `ground` для terrain/material/M2/WMO.
- [ ] Сохранять map/zone/subzone, WoW/server coordinates, orientation, доступные
camera parameters, time, weather, graphics profile, viewport и имя артефакта.
- [ ] Не угадывать отсутствующие camera значения: хранить `Unknown`, landmark и
ограничение сравнения.
- [ ] Хранить proprietary screenshots/video вне Git; в репозитории сохранять
manifest, SHA-256, provenance, metrics, classifications и human approval.
- [ ] Добавить выбранную матрицу dawn/day/dusk/night, weather, shadow и liquid
quality без полного комбинаторного умножения всех локаций.
- [ ] Добавить temporal clips/кадры для water, animation, billboards, particles,
ribbons, weather и spell effect lifecycle.
## Graphics foundation
- [ ] Ввести явный graphics profile contract: `Blizzlike335` и opt-in
`Enhanced/Racing`; улучшения не меняют Blizzlike-путь и не маскируют gaps.
- [ ] Зафиксировать color pipeline: source color space, sampling, gamma,
tonemapping, fog, alpha coverage и deterministic capture output.
- [ ] Заменять approximate constants только после paired original-client
evidence; каждое осознанное расхождение регистрировать по подсистеме.
- [ ] Сохранить `WorldRenderFacade`, streaming budgets, cache versioning и
main-thread GPU finalization boundaries M03.
- [ ] Не начинать полный custom `RenderingDevice` renderer без bounded spike,
profiler evidence и ADR; сначала использовать точные Godot shader passes.
## Required implementation order
- [ ] Environment: точная DBC interpolation, sky/skybox, ambient/directional
light, zone transitions, fog, day/night и weather presentation.
- [ ] Terrain: MCNK topology/normals/holes, MCAL variants/layer animation,
filtering/mips, MCSH/baked shadow data, seams и WDL distant terrain.
- [ ] M2/WMO materials: build-12340 blend/depth/cull flags, alpha test,
multi-texture combiners, vertex colors, emissive/unlit, UV animation,
billboards, WMO indoor/outdoor, portals, local lights и fog semantics.
- [ ] Shadows: воспроизвести оригинальную policy для выбранных graphics settings;
terrain/baked, character/object и dynamic shadows проверять раздельно.
- [ ] Liquids: MH2O/MCLQ/MLIQ geometry, masks/heights/depth, original animated
textures и water/ocean/magma/slime/underwater behavior. Enhanced reflections,
normals и shore blending остаются opt-in.
- [ ] Animation/characters: GPU skinning path, sequences/blending/global
sequences, attachments, geosets, customization, equipment, mounts и vehicles;
CPU deformation оставить только измеренным fallback/diagnostic path.
- [ ] Effects: M2 particles/ribbons, texture animation, weather emitters,
SpellVisual/SpellVisualKit cast/projectile/impact/aura presentation, pooling,
deterministic lifetime и visibility budgets.
- [ ] Racing readiness: renderer/world/character/effects APIs не зависят от WoW
gameplay/network; racing profile меняет только явные graphics capabilities.
## Verification
- Original-client/OpenWC paired captures используют одинаковые viewport, camera
contract, position, time, weather и graphics profile либо явно классифицируют
неизвестное поле.
- Static comparison включает full-frame и semantic regions; geometry/framing,
material, lighting, shadow, liquid, animation/effect gaps не смешиваются.
- Temporal comparison проверяет phase, duration, trajectory, UV motion и emitter
lifetime, а не только один случайный кадр.
- GPU test matrix покрывает Godot Forward+/D3D12/Vulkan, cold/warm load, rapid
traversal, teleport, weather/time transitions и profile switching.
- Обязательны p50/p95/p99, max hitch, draw calls, visible objects, CPU/GPU memory,
shader/cache stability и Node/Resource/RID leak checks.
## Exit criteria
- Reference corpus покрывает обязательные static и temporal классы и проходит
schema/provenance/hash validation.
- Все пункты renderer coverage map имеют evidence-backed статус; `Verified`
допускается только с original-client fixture и human approval.
- Для утверждённой build-12340 capture matrix не остаётся неклассифицированных
визуально различимых gaps; принятые engine/GPU отклонения имеют измеренный
tolerance, rationale и artifact evidence.
- `Blizzlike335` сохраняет оригинальную policy, `Enhanced/Racing` выключаем и не
изменяет default behavior.
- Long traversal не создаёт recurring hitches, cache churn или renderer leaks;
M03 performance budgets остаются зелёными либо изменены только отдельным
evidence-backed решением.
- Character, animation, liquid, shadow и effects contracts пригодны для runtime,
Editor preview и будущего racing fork без зависимости от network/gameplay.
## Evidence
- Date:
- Revision/worktree:
- Original-client build/settings/corpus:
- Commands:
- Static/temporal comparison results:
- Performance and lifetime results:
- Human approval:
- API/module docs and diagrams:
- Changed files:
- Remaining risks:
@@ -1,6 +1,6 @@
# M04 — Godot Editor Shell
# M05 — Godot Editor Shell
<!-- OPENWC_TARGET:ACTIVE -->
<!-- OPENWC_TARGET:OPEN -->
## Outcome
@@ -1,4 +1,4 @@
# M05 — Content Project
# M06 — Content Project
<!-- OPENWC_TARGET:OPEN -->
@@ -1,4 +1,4 @@
# M06 — TrinityCore/AzerothCore Server Adapters
# M07 — TrinityCore/AzerothCore Server Adapters
<!-- OPENWC_TARGET:OPEN -->
@@ -1,4 +1,4 @@
# M07 — World Editor Vertical Slice
# M08 — World Editor Vertical Slice
<!-- OPENWC_TARGET:OPEN -->
@@ -1,4 +1,4 @@
# M08 — WoW 3.3.5a Network Foundation
# M09 — WoW 3.3.5a Network Foundation
<!-- OPENWC_TARGET:OPEN -->
@@ -1,4 +1,4 @@
# M09 — Gameplay Domain
# M10 — Gameplay Domain
<!-- OPENWC_TARGET:OPEN -->
@@ -1,4 +1,4 @@
# M10 — First Playable Client Slice
# M11 — First Playable Client Slice
<!-- OPENWC_TARGET:OPEN -->
@@ -1,4 +1,4 @@
# M11 — Quest End-to-End
# M12 — Quest End-to-End
<!-- OPENWC_TARGET:OPEN -->
@@ -1,4 +1,4 @@
# M12 — WoW 3.3.5a Client Completeness
# M13 — WoW 3.3.5a Client Completeness
<!-- OPENWC_TARGET:OPEN -->
@@ -1,4 +1,4 @@
# M13 — Dungeon and Encounter Authoring
# M14 — Dungeon and Encounter Authoring
<!-- OPENWC_TARGET:OPEN -->
+25 -18
View File
@@ -8,12 +8,15 @@ Godot-specific implementation rules обязательны из [`../docs/GODOT_
## Итоговый продукт
OpenWC должен предоставить четыре согласованных режима:
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.
5. `Racing` — downstream fork/profile, использующий общие world, character,
animation, effects и graphics contracts без зависимости от WoW gameplay и
network lifecycle.
Один кодовый путь должен обслуживать runtime и editor preview через публичные contracts. Generated preview nodes, DB records и caches не являются источником истины.
@@ -21,7 +24,7 @@ OpenWC должен предоставить четыре согласованн
- 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.
- 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 и извлечёнными services. Текущий M04 доводит графическую основу до evidence-backed build-12340 fidelity до начала Editor/network milestones.
- Gameplay domain, network protocol, production UI/Lua, audio orchestration и server adapters в основном предстоит реализовать.
- Editor plugin пока решает extraction/preview задачи, но не является полноценной authoring platform.
@@ -45,14 +48,15 @@ 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
─ M04 renderer fidelity/graphics foundation
├─ M05 editor shell → M06 content → M07 server adapters → M08 world editor
└─ M09 network → M10 gameplay domain → M11 playable client
M08 + M11 → M12 quest end-to-end
└─ M13 completeness waves
└─ M14 dungeon authoring
```
M12 не является одним большим этапом. Он выполняется последовательными completeness waves:
M13 не является одним большим этапом. Он выполняется последовательными completeness waves:
1. `C1 Core loop` — combat, spells, auras, death, loot, inventory, quests.
2. `C2 Character` — creation/customization, equipment, animation, pets, mounts.
@@ -73,16 +77,17 @@ M12 не является одним большим этапом. Он выпо
| 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 |
| M04 | RND/QAR reference corpus, materials, environment, shadows, liquids, characters/effects | Original-client-paired graphics foundation и отделённый Enhanced/Racing profile |
| M05 | EDT plugin shell, QAR editor tests | Reload-safe workspace, commands, undo/recovery |
| M06 | FND content schemas/cache, EDT project | Deterministic Content Project build/migration |
| M07 | SRV environments/snapshots/adapters | Two-core read/diff/dry-run round-trip |
| M08 | EDT world editing/navigation/deploy | NPC placement на dev-core без ручного SQL |
| M09 | NET transport/auth/protocol/entities | Headless auth → world и deterministic replay |
| M10 | GMP world state/movement/targeting | Packet replay → deterministic gameplay snapshot |
| M11 | FND app lifecycle, RND/UIA presentation | Игрок входит, видит entities и перемещается |
| M12 | GMP quests, EDT quest tools, SRV deploy, UIA quest UI | Author → deploy → complete quest своим клиентом |
| M13 C1C8 | NET/GMP/RND/UIA completeness + QAR | Feature matrix `Compatible/Verified` по waves |
| M14 | EDT dungeon/encounter, SRV modules, GMP instances | Custom dungeon group playtest end-to-end |
## Recommended implementation rhythm
@@ -101,6 +106,8 @@ M12 не является одним большим этапом. Он выпо
## Cross-cutting contracts
- `BuildProfile``Blizzlike335`, `Enhanced`, authoring и test capabilities.
- `GraphicsProfile` — explicit Blizzlike/Enhanced/Racing material, lighting,
shadow, liquid, effects, distance и post-processing capabilities.
- `CoordinateMapper` — единственное преобразование WoW/Godot/ADT/server coordinates.
- `AssetRepository` — original assets, overlays, caches и provenance.
- `ProtocolProfile` — build, opcodes, update fields, codecs и server capabilities.
+18 -17
View File
@@ -4,13 +4,13 @@
Этот каталог задаёт обязательную последовательность реализации. Архитектура описана в `docs/`, фактическое состояние renderer — в `RENDER.md`, а здесь находятся исполняемые milestones.
Полная инженерная декомпозиция всех подсистем находится в [`DEVELOPMENT_ROADMAP.md`](DEVELOPMENT_ROADMAP.md). Перед работой над milestone агент читает соответствующий subsystem plan из `targets/roadmap/`, но статус меняет только в исполняемом target-файле M00M13.
Полная инженерная декомпозиция всех подсистем находится в [`DEVELOPMENT_ROADMAP.md`](DEVELOPMENT_ROADMAP.md). Перед работой над milestone агент читает соответствующий subsystem plan из `targets/roadmap/`, но статус меняет только в исполняемом target-файле M00M14.
Параллельная командная работа выполняется по [`../docs/TEAM_WORKFLOW.md`](../docs/TEAM_WORKFLOW.md): отдельные worktrees, claims, exclusive paths, contract-first и интегратор milestone.
## Current target
`M04` — [04-editor-shell.md](04-editor-shell.md)
`M04` — [04-renderer-fidelity.md](04-renderer-fidelity.md)
Одновременно `ACTIVE` может быть только одна цель. Следующая цель становится `ACTIVE` после появления валидной `OPENWC_TARGET_DONE` метки у предыдущей.
@@ -37,26 +37,27 @@
| M01 | [Coordinates and architecture seams](01-coordinates-and-seams.md) | M00 | DONE |
| M02 | [Player decomposition](02-player-decomposition.md) | M01 | DONE |
| M03 | [Renderer facade and extraction](03-renderer-facade.md) | M02 | DONE |
| M04 | [Godot Editor shell](04-editor-shell.md) | M03 | ACTIVE |
| M05 | [Content Project](05-content-project.md) | M04 | OPEN |
| M06 | [Server database adapters](06-server-adapters.md) | M05 | OPEN |
| M07 | [World Editor vertical slice](07-world-editor-slice.md) | M06 | OPEN |
| M08 | [Network foundation](08-network-foundation.md) | M03 | OPEN |
| M09 | [Gameplay domain](09-gameplay-domain.md) | M08 | OPEN |
| M10 | [Playable client slice](10-playable-client.md) | M09, M03 | OPEN |
| M11 | [Quest end-to-end](11-quest-end-to-end.md) | M07, M10 | OPEN |
| M12 | [WoW 3.3.5a completeness](12-client-completeness.md) | M11 | OPEN |
| M13 | [Dungeon authoring](13-dungeon-authoring.md) | M12 foundation | OPEN |
| M04 | [Renderer fidelity and graphics foundation](04-renderer-fidelity.md) | M03 | ACTIVE |
| M05 | [Godot Editor shell](05-editor-shell.md) | M04 | OPEN |
| M06 | [Content Project](06-content-project.md) | M05 | OPEN |
| M07 | [Server database adapters](07-server-adapters.md) | M06 | OPEN |
| M08 | [World Editor vertical slice](08-world-editor-slice.md) | M07 | OPEN |
| M09 | [Network foundation](09-network-foundation.md) | M04 | OPEN |
| M10 | [Gameplay domain](10-gameplay-domain.md) | M09 | OPEN |
| M11 | [Playable client slice](11-playable-client.md) | M10, M04 | OPEN |
| M12 | [Quest end-to-end](12-quest-end-to-end.md) | M08, M11 | OPEN |
| M13 | [WoW 3.3.5a completeness](13-client-completeness.md) | M12 | OPEN |
| M14 | [Dungeon authoring](14-dungeon-authoring.md) | M13 foundation | OPEN |
M12 выполняется восемью completeness waves, определёнными в [`DEVELOPMENT_ROADMAP.md`](DEVELOPMENT_ROADMAP.md), а не одной массовой реализацией.
M13 выполняется восемью completeness waves, определёнными в [`DEVELOPMENT_ROADMAP.md`](DEVELOPMENT_ROADMAP.md), а не одной массовой реализацией.
M07 и M08 могут выполняться параллельными командами только после M06/M03 соответственно и только если пользователь явно разрешил параллельную работу. Их результаты сходятся в M11.
M08 и M09 могут выполняться параллельными командами только после M07/M04 соответственно и только если пользователь явно разрешил параллельную работу. Их результаты сходятся в M12.
`recast-rs` запланирован как optional navigation backend в M05, исследовательский CLI spike и world validation в M07, затем полноценная dungeon navigation validation в M13. Он не блокирует M00–M04 и не считается автоматически совместимым с server `mmaps`.
`recast-rs` запланирован как optional navigation backend в M06, исследовательский CLI spike и world validation в M08, затем полноценная dungeon navigation validation в M14. Он не блокирует M00–M05 и не считается автоматически совместимым с server `mmaps`.
`rilua` зарегистрирован как Lua 5.1.1 runtime/test-oracle candidate для M12. До compatibility spike он не добавляется как dependency; UI строится через заменяемый `LuaRuntime`, поскольку WoW API, FrameXML, secure actions и taint не входят в готовый VM.
`rilua` зарегистрирован как Lua 5.1.1 runtime/test-oracle candidate для M13. До compatibility spike он не добавляется как dependency; UI строится через заменяемый `LuaRuntime`, поскольку WoW API, FrameXML, secure actions и taint не входят в готовый VM.
Wowser зарегистрирован как независимый MIT reference для M08 и M12: auth → world protocol lifecycle, binary/data handling, asset pipeline и общий client coverage. Его старый browser stack не является кандидатом на интеграцию; полезные решения принимаются только после проверки против build 12340 и server cores.
Wowser зарегистрирован как независимый MIT reference для M09 и M13: auth → world protocol lifecycle, binary/data handling, asset pipeline и общий client coverage. Его старый browser stack не является кандидатом на интеграцию; полезные решения принимаются только после проверки против build 12340 и server cores.
## Общий quality gate
+1 -1
View File
@@ -10,7 +10,7 @@
- Отделить user settings, developer settings, server connection profiles и content project settings.
- Secrets хранить вне Git/Resource; поддержать environment/OS credential provider.
- Настройки иметь schema version, defaults, validation, migration и reset-by-section.
- `Blizzlike335` сделать неизменяемым базовым профилем; enhanced settings наследуют его явно.
- `Blizzlike335` сделать неизменяемым базовым профилем; Enhanced/Racing settings наследуют его явно и не меняют default behavior.
## FND-2. Application lifecycle
+43 -1
View File
@@ -4,6 +4,43 @@
Воспроизвести визуальные правила WoW 3.3.5a и дать opt-in улучшения, сохранив frame pacing на больших мирах Godot.
## M04 execution policy
M04 выполняет renderer fidelity до Editor, network и gameplay milestones. M03
facade, ownership, streaming budgets и cache rules сохраняются: fidelity работа
расширяет services и shaders, но не возвращает прямой cross-layer доступ к
streamer internals.
Authoritative oracle — оригинальный клиент build 12340. Noggit полезен для
обзорной композиции, placements и будущего Editor viewport, но не подтверждает
точные lighting, shadow, liquid, material или effect semantics.
Reference corpus принимает versioned CSV и приватные captures. Для каждой
выбранной локации базовый набор содержит две позиции: `wide` для sky/fog/WDL и
общей композиции, `ground` для terrain/material/M2/WMO. Специализированные
water, interior, shadow, character и effect viewpoints добавляются только когда
две базовые позиции не покрывают уникальную визуальную policy.
Repository хранит schema, coordinates/camera/settings metadata, SHA-256,
comparison metrics, gap classification и human approval. Proprietary image/video
bytes остаются вне Git. Неизвестные camera/time/weather/settings поля отмечаются
как `Unknown`; их запрещено угадывать или автоматически считать parity evidence.
Обязательный порядок реализации:
1. reference manifest, validator, paired capture и semantic region diff;
2. deterministic color/gamma/sampling/alpha/fog pipeline;
3. environment/sky/weather и terrain/WDL/MCSH;
4. M2/WMO material passes и indoor/outdoor lighting;
5. graphics-setting-aware shadows и liquids;
6. GPU animation, characters, attachments, equipment и mounts;
7. particles, ribbons, weather и spell visual lifecycle;
8. Enhanced/Racing profile separation, traversal/performance/lifetime closeout.
Полный custom `RenderingDevice` backend допускается только после bounded spike,
доказавшего, что точный critical pass нельзя реализовать Godot spatial/sky/
particle/compositor механизмами в установленном performance budget.
## RND-1. Renderer architecture
- `WorldRenderFacade` принимает focus, environment snapshot и entity presentation commands.
@@ -99,4 +136,9 @@
## Gate
Видимый мир не деградирует при декомпозиции; under-foot/near-field quality готова до появления в кадре; long traversal не создаёт recurring hitches/leaks; Enhanced всегда отключаем.
Для утверждённой original-client capture matrix отсутствуют неклассифицированные
визуально различимые gaps; каждый `Verified` class имеет fixture, metrics и human
approval. Under-foot/near-field quality готова до появления в кадре; temporal
effects совпадают по phase/duration/trajectory; long traversal не создаёт
recurring hitches/leaks; Enhanced/Racing всегда отключаем и не меняет
`Blizzlike335` default behavior.
@@ -66,7 +66,7 @@
## EDT-8. Graphics extension tools
- Material/shader profile editor с Blizzlike/Enhanced comparison.
- Material/shader profile editor с Blizzlike/Enhanced/Racing comparison.
- Texture replacement/upscale overlays и mip/alpha/color-space validation.
- Water/sky/weather/light preview with fixed time and reference capture.
- Character/equipment/animation/attachment preview.