2026-07-18 17:05:18 +04:00
2026-06-13 11:51:05 +04:00
2026-07-18 16:54:34 +04:00
2026-03-28 13:44:42 +04:00
2026-06-13 11:51:05 +04:00
2026-07-18 17:05:18 +04:00

MoonWell Client Sources

Исходники клиентских изменений MoonWell для World of Warcraft 3.3.5a (build 12340).

Клиент переведён на WarcraftXL: Wow.exe больше не содержит MoonWell-патчей. Неподписанный оригинальный executable загружается как обычно, локальный d3d9.dll proxy подхватывает WarcraftXL.dll, а модуль MoonWell применяет проверенные изменения только к памяти запущенного процесса.

Что перенесено из модифицированного Wow.exe

  • разблокировка пользовательского GlueXML;
  • CreateCharacter(name, modeId) и поле режима в CMSG_CHAR_CREATE;
  • одиннадцатое значение GetCharacterInfocharFlags, включая флаг предателя 0x40000000;
  • загрузка WarcraftXL без import-table patch и без отдельного injector.

Large Address Aware намеренно не включён: Windows читает этот PE-флаг до загрузки DLL, поэтому сохранить его и одновременно оставить файл байт-в-байт оригинальным невозможно. Это означает стандартный 2-ГБ лимит адресного пространства для 32-битного клиента.

Структура

modules/moonwell/        MoonWell runtime-модуль WarcraftXL
vendor/warcraftxl/       закреплённый upstream git submodule
vendor/modules/          закреплённые модули WarcraftXL
src/Data/                исходники MPQ-патчей
tool/                    сборщик MPQ
build-warcraftxl.ps1     сборка Win32 runtime/proxy и x64 asset host
run.ps1                  полная сборка, установка и запуск клиента
Wow_Original.exe         локальный оригинал build 12340 (не хранится в Git)

Подключены модули wxl-modern-assets, wxl-modern-render, wxl-unit-outline и wxl-modern-adt. Их точные ревизии вместе с ревизией ядра закреплены git submodule. Для обновления всех зависимостей WarcraftXL:

git submodule update --remote vendor/warcraftxl vendor/modules/*

После обновления обязательно пересоберите и проверьте вход/создание персонажа: API WarcraftXL пока развивается.

Требования

  • Visual Studio 2022 с C++ toolchain для Win32 и x64;
  • CMake 3.20+;
  • Rust/Cargo для существующего MPQ-сборщика;
  • локальный оригинальный Wow_Original.exe с SHA-256 AA63A5750D60EF16746C686B3D5E26876D98953EAB08B1C026CD0FAF78E88CB8.

После клонирования инициализируйте submodule:

git submodule update --init --recursive

Сборка WarcraftXL

Быстрое полное развёртывание клиента одной командой:

.\deploy.ps1

Скрипт инициализирует зависимости, собирает MPQ-патчи, Win32 runtime, D3D9 proxy и x64 Host, обновляет dist, устанавливает комплект в клиент и формирует manifest.json. Путь берётся из WOW_HOME/.env, а при их отсутствии используется C:\Program Files (x86)\World of Warcraft.

Полезные варианты:

# Явный путь и запуск клиента после установки
.\deploy.ps1 -ClientPath 'D:\Games\World of Warcraft' -StopClient -Launch

# Быстро обновить только WarcraftXL без пересборки MPQ
.\deploy.ps1 -SkipDataBuild

# Аварийный native D3D9 вместо D3D9On12
.\deploy.ps1 -NativeRenderer

Без установки в клиент:

.\build-warcraftxl.ps1 -Configuration Release

С установкой:

.\build-warcraftxl.ps1 -Configuration Release `
  -ClientPath 'C:\Program Files (x86)\World of Warcraft' -Deploy

При -Deploy скрипт:

  1. проверяет хеш Wow_Original.exe;
  2. сохраняет прежний модифицированный клиент как Wow.moonwell-patched.backup.exe;
  3. восстанавливает оригинальный Wow.exe;
  4. устанавливает WarcraftXL.dll, D3D9On12 proxy и Utils\WarcraftXLHost.exe;
  5. монтирует шейдеры modern ADT как loose patch Data\Patch-WXL.MPQ;
  6. при -PackagePath кладёт полный runtime-комплект в dist для launcher/S3.

Основной proxy использует D3D9On12, необходимый wxl-modern-render. Эффекты постобработки в самом модуле по умолчанию выключены. Для диагностики или несовместимой видеосистемы можно собрать и установить native-переходник без modern-render:

.\build-warcraftxl.ps1 -Configuration Release -NativeRenderer `
  -ClientPath 'C:\Program Files (x86)\World of Warcraft' -Deploy

Резервная DLL всегда также сохраняется как Utils\d3d9-native.dll.

Полная сборка MPQ, установка WarcraftXL и запуск:

$env:WOW_HOME = 'C:\Program Files (x86)\World of Warcraft'
.\run.ps1

Диагностика запуска находится в Logs\wxl-core.log, Logs\d3d9proxy.log и Utils\WarcraftXLHost.log внутри клиента.

MPQ-пакеты

Распакованные изменяемые слои уже находятся в src/Data/; полный набор базовых MPQ для сборки WarcraftXL не требуется и в объектное хранилище не загружается.

Основные пакеты:

  • patch-4 — ресурсы внутриигрового магазина;
  • patch-ruRU-4 — экран входа и GlueXML;
  • patch-ruRU-5 — русская локализация и интерфейс;
  • patch-Z — Mythic+ ресурсы и клиентские данные.

Лицензирование

WarcraftXL распространяется по GPL-3.0 и подключён как отдельный upstream submodule. MoonWell-модуль, скомпонованный в WarcraftXL.dll, должен распространяться с соблюдением GPL-3.0 и доступным соответствующим исходным кодом. Репозиторий не должен публиковать Blizzard assets или Wow.exe.

S
Description
Клиентская часть MoonWell
Readme 119 MiB
Languages
Lua 64.1%
Macaulay2 35.6%
C++ 0.1%