8.1 KiB
Локальные reference-проекты
Reference-код используется для исследования форматов, поведения и архитектурных вариантов. Он не определяет API OpenWC и не копируется без проверки лицензии, корректности и соответствия Godot.
Основные источники
OpenWC renderer
../RENDER.md— фактическое состояние streaming, terrain, M2/WMO, liquids, sky, caches и performance rules.
WowUnreal
reference/WowUnreal/specs/overview.md— системная декомпозиция полного клиента.networking.md,movement.md,character.md,ui-framexml.md,lua-api.md,dbc-wrappers.md,audio.md,water.md— полезные coverage checklists и acceptance criteria.
Используем: полноту feature map и привычку задавать критерии проверки. Не переносим Unreal-specific классы и renderer assumptions.
WoWee
reference/WoWee/docs/architecture.md— разделение renderer/network/game/UI/pipeline.reference/WoWee/tools/editor/FORMAT_SPEC.md— open formats, coordinates, collision, packaging и SQL export.reference/WoWee/TESTING.md— единая точка запуска тестов, fixtures, sanitizers и CI discipline.reference/WoWee/EXPANSION_GUIDE.md— protocol/data profile separation.
Используем: детерминированные authoring formats, headless parity, adapter profiles и validation-first pipeline. Не принимаем автоматически конкретные форматы или заявленную полноту реализации.
Noggit Red
reference/noggit-red— UX и domain concepts специализированного world editor: terrain editing, placements, UIDs и map workflows.
Используем: понимание authoring interaction и рисков unique IDs. Целевой UI реализуется только через Godot EditorPlugin API.
open-realm и whoa
reference/open-realm/games/world-of-warcraft— format/render pipeline и архитектурные исследования.reference/whoa— поведение клиента 3.3.5a и test fixtures.
Используем как независимую проверку binary semantics и runtime behavior.
wow.export и Blender WoW Studio
Используем для сверки conversion pipeline, материалов, моделей и authoring/export edge cases. Runtime web/Blender architecture не переносится в OpenWC.
Wowser
wowserhq/wowser— MIT proof-of-concept браузерного клиента WoW 3.3.5a.wowserhq/client— выделенный web client.wowserhq/pipeline— asset delivery pipeline.
Используем как независимый reference для auth → realm → character → world lifecycle, SRP/cryptography, binary packet handling, asset delivery и частичного terrain/model renderer. Особенно полезен для поиска уже разобранных 3.3.5a packet/data edge cases и идей test fixtures.
Не переносим напрямую старый browser stack, WebSocket proxy, React/Three.js abstractions или pipeline server. Заявленное поведение проверяем по TrinityCore/AzerothCore и оригинальному клиенту; proof-of-concept не является спецификацией полноты.
recast-rs
wowemulation-dev/recast-rs— Rust-порт Recast/Detour: navmesh generation, tiled pathfinding, spatial queries, crowd simulation и dynamic obstacles.
Планируем использовать как optional offline navigation backend для Godot Editor: визуализация walkability, проверка достижимости quest/encounter targets, patrol paths и dungeon topology. Начальная интеграция выполняется через CLI/build job, а не через renderer или gameplay runtime.
Важно: принадлежность к WoW emulation ecosystem не доказывает совместимость с форматами TrinityCore/AzerothCore .mmap/.mmtile. Генерация server mmaps разрешается только после отдельного compatibility spike с exact parameter, coordinate, tile и binary/behavior comparison. До этого OpenWC navigation cache и server mmaps считаются разными артефактами.
rilua
wowemulation-dev/rilua— написанная на Rust реализация Lua 5.1.1 с embedding API, bytecode, официальным Lua test corpus, fuzzing и oracle comparison с PUC-Rio.
Рассматриваем одновременно как кандидата на addon Lua runtime и как headless test oracle. TOC loader, FrameXML, WoW API, events, SavedVariables и secure execution остаются слоями OpenWC. Критический gap — отсутствие готовой WoW taint system; C ABI также намеренно не совместим с PUC-Rio. Production-решение принимается только после сравнения rilua, PUC-Rio 5.1.1 и оригинального клиента на WoW-specific corpus.
Подробные статусы и evaluation cards ведутся в TOOLING_CATALOG.md.
Правила исследования
- Для protocol semantics приоритет имеют wire fixtures и соответствующая версия server core.
- Для бинарных форматов вывод подтверждается минимум двумя независимыми источниками либо fixture-тестом.
- Reference implementation не считается спецификацией без проверки edge cases.
- Любое заимствование проверяется по лицензии и документируется.
- Proprietary data не переносится в fixtures или репозиторий.
- Вывод, влияющий на публичный контракт, оформляется ADR или обновлением соответствующей спецификации.
- Перед собственной реализацией сложной подсистемы проверить
TOOLING_CATALOG.mdи добавить найденные решения, даже если они останутся только reference.
Замеченные полезные уроки
- Полный клиент требует coverage map; иначе хорошо видимые renderer-функции вытесняют gameplay, UI и recovery paths.
- Editor нуждается в CLI/headless parity для CI, даже если вся интерактивная работа находится в Godot.
- Coordinate conversion и ID allocation должны быть централизованы раньше world editing.
- DB export без canonical model быстро связывает UI с одной версией ядра.
- Screenshot smoke полезен, но должен дополняться deterministic state, performance и protocol tests.
- Navmesh-библиотека полезна для authoring validation, но не должна становиться источником authoritative NPC movement на клиенте.
- Готовая Lua VM сокращает объём работы только на уровне языка; WoW API, FrameXML, addon lifecycle, secure actions и taint всё равно требуют отдельной fidelity-программы.