MoonWell Client Sources
Исходники клиентских изменений MoonWell для World of Warcraft 3.3.5a (build 12340).
Клиент переведён на WarcraftXL 1.1.220: Wow.exe больше не содержит
MoonWell-патчей. Неподписанный оригинальный executable загружается как обычно, локальный
d3d9.dll proxy подхватывает WarcraftXL.dll, а модуль MoonWell применяет проверенные изменения
только к памяти запущенного процесса.
Что перенесено из модифицированного Wow.exe
- разблокировка пользовательского
GlueXML; CreateCharacter(name, modeId)и поле режима вCMSG_CHAR_CREATE;- одиннадцатое значение
GetCharacterInfo—charFlags, включая флаг предателя0x40000000; - загрузка WarcraftXL без import-table patch и без отдельного injector.
При установке сборщик включает Large Address Aware в копии Wow.exe; исходный
Wow_Original.exe остаётся неизменным и используется как проверенный шаблон.
Структура
modules/ отдельные MoonWell extensions для WarcraftXL 1.1
vendor/warcraftxl/ закреплённый upstream git submodule
vendor/modules/ закреплённые модули WarcraftXL
src/Data/ исходники MPQ-патчей
tool/ сборщик MPQ
build-warcraftxl.ps1 сборка Win32 runtime, proxy и extensions
run.ps1 полная сборка, установка и запуск клиента
Wow_Original.exe локальный оригинал build 12340 (не хранится в Git)
Подключены совместимые с 1.1 extensions: wxl-db2, wxl-modern-adt, wxl-modern-m2,
wxl-modern-wmo, wxl-grasswind и wxl-unit-outline. BLP-адаптер и MoonWell-изменения
собираются как отдельные DLL; исходники upstream core не изменяются.
Для обновления всех зависимостей WarcraftXL:
git submodule update --remote vendor/warcraftxl vendor/modules/*
После обновления обязательно пересоберите и проверьте вход/создание персонажа: API WarcraftXL пока развивается.
Требования
- Visual Studio 2022 с C++ toolchain для Win32;
- CMake 3.20+;
- Rust/Cargo для существующего MPQ-сборщика;
- локальный оригинальный
Wow_Original.exeс SHA-256AA63A5750D60EF16746C686B3D5E26876D98953EAB08B1C026CD0FAF78E88CB8.
После клонирования инициализируйте submodule:
git submodule update --init --recursive
Сборка WarcraftXL
Быстрое полное развёртывание клиента одной командой:
.\deploy.ps1
Скрипт инициализирует зависимости, собирает MPQ-патчи, Win32 runtime, native D3D9 proxy и extensions,
обновляет 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
Без установки в клиент:
.\build-warcraftxl.ps1 -Configuration Release
С установкой:
.\build-warcraftxl.ps1 -Configuration Release `
-ClientPath 'C:\Program Files (x86)\World of Warcraft' -Deploy
При -Deploy скрипт:
- проверяет хеш
Wow_Original.exe; - сохраняет прежний модифицированный клиент как
Wow.moonwell-patched.backup.exe; - восстанавливает оригинальный
Wow.exe; - устанавливает
WarcraftXL.dll, native D3D9 proxy и DLL вExtensions\; - при
-PackagePathкладёт полный runtime-комплект вdistдля launcher/S3.
Резервная 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 внутри клиента.
MPQ-пакеты
Распакованные изменяемые слои уже находятся в src/Data/; полный набор базовых MPQ для сборки
WarcraftXL не требуется и в объектное хранилище не загружается.
Основные пакеты:
patch-4— ресурсы внутриигрового магазина;patch-ruRU-4— экран входа и GlueXML;patch-ruRU-5— русская локализация и интерфейс;patch-Z— Mythic+ ресурсы и клиентские данные.
Управляемые репозиторием MPQ и внешние графические патчи перечислены отдельно в
patch-layout.json. Сборка и deploy синхронизируют только repositoryPatches и
не изменяют graphicsPatches. При пересечении списков репозиторный патч имеет
приоритет.
Лицензирование
WarcraftXL распространяется по GPL-3.0 и подключён как отдельный неизменённый upstream submodule.
MoonWell extensions распространяются с доступным соответствующим исходным кодом. Репозиторий не
должен публиковать Blizzard assets или Wow.exe.