ModuleSystem++
Давным-давно (в 2015, а может и в 2014, а может и в 2013...) нарыл одну вещь - ModuleSystem++ (сверх быстрый компилятор модульной системы), но чет никому тогда не рассказывал. Я немного допилил этот проект, и хочу о нем рассказать.
ModuleSystem++ разработан как замена для стандартного компилятора модульной системы, предоставляемого Taleworlds, обеспечивая значительно улучшенную производительность и расширенные возможности, потенциально полезные в разработке мода под Warband
Итак, ModuleSystem++ реализует следующие дополнительные функции:
1) Вывод списка ресурсов (меши, модели, анимации...), используемых в моде.
2) Обфускация глобальных переменных и имен скриптов.
3) Вывод списка неиспользующихся скриптов.
Скорость компиляции:
ModuleSystem++ | Default (стандартный компилятор модульной системы) | |
Native | ~7.5 с (первый запуск, при следующих ~3.2 с (из-за кеширования header файлов)) | ~44.3 с |
Для бенчмарка я использовал следующий компьютер:
Windows 8.1 x64
Процессор: AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ 2.20 GHz
Оперативная память: 5.00 GiB
НО! В отличии от стандартного компилятора модульной системы, ModuleSystem++ требует Python3 (если точнее 3.3+)
Как использовать:
0) Необходимо получить саму программу. Тут есть 2 способа:
0.1) Использовать готовую сборку. Вам для начала необходимо установить Python 3.6.4 x64, и добавить его в PATH. Скачать ModuleSystem++ и положить ModuleSystemPlusPlus.exe, build_module_fast.bat и python36.dll (эти файлы можно взять из архива, который находится внизу темы) в папку модульной системы.
0.2) Собрать из исходных кодов.
Если у вас операционная система Linux, то установите рython3, скачайте исходный код из github (можно выполнить для этого git clone https://github.com/cuellius/module-system-plus-plus.git) и запустите compile.sh:
chmod +x compile.sh
./compile.sh
Если у вас операционная система Windows, то вам нужен необходимо установить Python 3 (подойдет любая версия, выше 3.3+), и добавить его в PATH. Вам также нужна Microsoft Visual Studio (2015 или 2017, любая редакция). Затем скачайте исходный код из github. Откройте решение (Solution) в Visual Studio. Настройте его, указав Include Directories и Library Directories к скачанному питону. Скомпилируйте, и получите файл ModuleSystemPlusPlus.exe. Положите ModuleSystemPlusPlus.exe, build_module_fast.bat и python3x.dll (эта dll находится в папке, где вы установили Python) в папку модульной системы
1) Портируете модульку под Python 3 (нам не нужны process_*.py файлы (ведь мы собираемся использовать другой компилятор), поэтому нужно портировать header_troops.py. Возьмите его из моего архива). Как я сказал выше, нам не нужны process_*.py файлы, поэтому можете их удалить.
2) Для компиляции запускайте build_module_fast.bat.
ModuleSystem++ полностью совместима с ModMerger Framework 0.2.5 (при условии, что последний будет портирован под Python 3). Если вам это надо, выполните это самостоятельно.
Использование дополнительных возможностей ModuleSystem++
Общий синтаксис таков: необходимо запускать программу с флагами,
т.е в build_module_fast.bat вместо ModuleSystemPlusPlus.exe необходимо написать ModuleSystemPlusPlus.exe <FLAGS> (например ModuleSystemPlusPlus.exe -compile-data -list-resources)
Описание флагов:
-strict: все некритические ошибки работают как критические ошибки (останавливают компиляцию)
-skip-id-files: не генерирует новые ID файлы, а использует старые
-list-resources: выводит список ресурсов в файл resource_usage.txt (появляется в папке с скомпилированным модом)
-hide-global-vars: обфусцирует имена глобальных переменных
-hide-scripts: обфусцирует имена скриптов
-list-obfuscated-scripts: выводит в файл obfuscated_scripts.txt (создается в папке с скомпилированным модом) имена скриптов обфусцированных скриптов (список вида: оригинальное название = обфусцированние название)
-hide-dialog-states: обфусцирует dialog states
-compile-data: компилирует также module_flora_kinds.py, module_skyboxes.py и module_ground_specs.py. Эти файлы должны находиться в папке модульной системы (там же, где и находятся обычные module_*.py файлы)
-list-unreferenced-scripts: выводит список неиспользуемых скриптов как предупреждения
-no-warnings: подавляет предупреждения
-out-path <OUTPUT_PATH>: переопределяет export_dir в module_info.py на OUTPUT_PATH
-in-path <INPUT_PATH>: компилирует модульную систему, которая находится в папке INPUT_PATH
Лицензия: Apache 2.0 (вообще, я форкнул данный проект у cmpxchg8b, подправил его, и поэтому я выбрал лицензию проекта Apache 2.0, а не GNU GPL v3)
GitHub: https://github.com/cuellius/module-system-plus-plus
Архив с необходимыми файлами: https://drive.google.com/open?id=1UdyYvB4yZoM9fNgimBPg5QxAYW6mktHR
Комментариев 21
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.