Начало работы

Общая концепция

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 будет содержать заголовок модификаци

пример структуры модификации (©Poliroid)

Принцип работы XFW

  1. Точка входа /res_mods/0.x.x/scripts/client/gui/mods/mod_.py вызывает загрузчик /res_mods/mods/xfw/xfw_loader.py.
  2. Загрузчик добавляет в sys.path директории /res_mods/mods/packages/ и /res_mods/mods/xfw/python/lib/.
  3. Загрузчик обходит каталоги вида /res_mods/mods/packages/[modname]/python/ и пытается загрузить модификацию
  4. При загрузке модификации сверяется текущая версия игры, с версией, которая указана в XFW_GAME_VERSIONS. Если теущая версия игры отсутствует в XFW_GAME_VERSIONS, то в python.log будет создана запись про это, с указанием ссылки из XFW_MOD_UPDATE_URL, по которой можно загрузить адаптированную версию модификации.
  5. Выполняется загрузка xfw.swf и xfwfonts.swf
  6. Выполняется загрузка оставшихся ActionScript3 модификаций.

Особые режимы

При помощи некоторых переменных окружения можно изменить поведение XVM Framework.

  • XFW_DEVELOPMENT - Включает вывод отладочных сообщений и уменьшает интервал между записями в python.log до минимума.
  • XFW_NO_TOKEN_MASKING - Отключает маскировку токена в отладочных сообщениях. Актуально для отладки XVM или модификаций, которые используют компоненты XVM.