Начало работы¶
Общая концепция¶
XVM Framework - это платформа для написания модификаций для игры World of Tanks.
XVM Framework описывает правила для написания модификаций, и предоставляет некоторые инструменты и библиотеки для упрощения их написания.
В будущем, планируется так же что XVM Framework будет управлять модификациями, то есть в нем будет встроен менеджер пакетов, который будет автоматически следить за версиями модов, их совместимостью с игрой, и при необходимости обновлять их.
Структура каталогов¶
Структура каталогов XVM Framework и модификаций на его основе выглядит так:
* res_mods/
* 0.x.x/
* gui/
* flash/
* lobby.swf - модифицированный lobby.swf из поставки XFW
* scripts/
* client/
* gui/
* mods/
* mod_.py - точка входа для XFW.
* configs/ - каталог с конфигурациями модов
* [modname]
* ...
* mods/ - каталог для модификаций на основе XFW
* packages/
* [modname] - каталог модификации на основе XFW
* actionscript/ - ActionScript3 файлы
* ...
* python/ - Python-файлы
* ...
* resources/ - файлы ресурсов модификации
* ...
* shared_resources/ - каталоги ресурсов (документация, текстуры, локализация, звуки, и т.д.) модификаций на основе XFW, которые могут быть использованы также и другими модификациями
* [modname]
* ...
* xfw/ - каталог файлов XFW
* actionscript/
* xfw.swf - основной файл flash-части XFW
* xfwfonts.swf - дополнительные шрифты
* python/
* lib/
* ... - разнообразные сторонние библиотеки
* xfw/
* ... - файлы XFW
* xfw_empty.py - файл-пустышка, используется загрузчиком
* xfw_loader.py - загрузчик XFW
* resources/ - сейчас не используется
Простейший случай модификации¶
В самом базовом случае, структура вашей модификации будет выглядеть таким образом:
* res_mods/
* mods/
* packages/
* [modname]/
* python/
* __init__.py
Где файл __init__.py
будет содержать заголовок модификаци
Принцип работы XFW¶
- Точка входа
/res_mods/0.x.x/scripts/client/gui/mods/mod_.py
вызывает загрузчик/res_mods/mods/xfw/xfw_loader.py
. - Загрузчик добавляет в
sys.path
директории/res_mods/mods/packages/
и/res_mods/mods/xfw/python/lib/
. - Загрузчик обходит каталоги вида
/res_mods/mods/packages/[modname]/python/
и пытается загрузить модификацию - При загрузке модификации сверяется текущая версия игры, с версией, которая указана в
XFW_GAME_VERSIONS
. Если теущая версия игры отсутствует вXFW_GAME_VERSIONS
, то вpython.log
будет создана запись про это, с указанием ссылки изXFW_MOD_UPDATE_URL
, по которой можно загрузить адаптированную версию модификации. - Выполняется загрузка
xfw.swf
иxfwfonts.swf
- Выполняется загрузка оставшихся ActionScript3 модификаций.
Особые режимы¶
При помощи некоторых переменных окружения можно изменить поведение XVM Framework.
- XFW_DEVELOPMENT - Включает вывод отладочных сообщений и уменьшает интервал между записями в
python.log
до минимума. - XFW_NO_TOKEN_MASKING - Отключает маскировку токена в отладочных сообщениях. Актуально для отладки XVM или модификаций, которые используют компоненты XVM.