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



Комментариев 18

Главный администратор syabr
Офлайн 20 января 2018 11:47 поделиться
Сложно)  Спасибо за интересную статью smile6 
--------------------
Мододел AndyYa
Офлайн 20 января 2018 12:14 поделиться
Интересно. Долго присматривался к плюс-плюсу, но в итоге пользую LAV'S WARBAND MODULE COMPILER.
Главный администратор syabr
Офлайн 20 января 2018 19:22 поделиться
AndyYa, привет, куда ты так пропал надолго... Рад видеть)
--------------------
Мододел AndyYa
Офлайн 20 января 2018 21:09 поделиться
syabr, Взаимно. Вроде не пропадал :)
Главный администратор syabr
Офлайн 21 января 2018 02:15 поделиться
Да что то тихо сидишь, не пишешь ничего
--------------------
Офлайн 21 января 2018 09:23 поделиться
Что вообще это такое? Помню как-то качал мод, и там было написано что-то вроде "А вот версия(?) с модульной системой, "скачать"" Так и не понял что куда кидать...
--------------------
Кто творит добро, имея неограниченную возможность делать зло, тот достоин похвалы не только за содеянное добро, но и за все то зло, которого он не делает.
Администратор Janycz
Офлайн 21 января 2018 09:35 поделиться
Цитата: Король Ричард I Львиное Сердце
Что вообще это такое?

Это быстрый сборщик (компилятор) модульной системы. Скажем так, программа, которая позволяет быстрее компилировать модульную систему.
--------------------
1 + 2 + 3 + 4 + ... = ζ(-1) = -0.08(3)
1 - 1 + 1 - 1 + 1 - ... = 0.5
1 - 2 + 3 - 4 + 5 - ... = 0.25
Главный администратор syabr
Офлайн 21 января 2018 10:15 поделиться
Король Ричард I Львиное Сердце, поиграть в это нельзя, можешь проходить мимо, это для мододелов-модульщиков
--------------------
Офлайн 21 января 2018 19:28 поделиться
syabr, Я найду как в это ПОИГРАТЬ smiling_imp 
--------------------
Кто творит добро, имея неограниченную возможность делать зло, тот достоин похвалы не только за содеянное добро, но и за все то зло, которого он не делает.
Главный администратор Дима Гончар
Офлайн 21 января 2018 23:19 поделиться
Король Ричард I Львиное Сердце,
:facepalm:
Сейчас бы поиграть в программу, позволяющую быстрее работать с модульной системой 
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации. Регистрация.

Интересно

Последние комментарии

Viking Conquest Reforged Edition 2054
Фридлейв, Сегодня, 05:44
Лучше посмотреть "Последнее Королевство", а еще лучше прочитать "Саксонские хроники" Б.Корнуэлла по...
MOD THE WORLD OF THE SILMARILLION
syabr, Сегодня, 02:09
don_alce, приветствую на сайте. Где ж ты был пару лет назад, автор с 2017 года в сети не появляется....
MOD RTS Camera
Gut, Вчера, 23:21
С почином. Классно расписал, от меня лайк....
BANNERLORD: Часто Задаваемые Вопросы
MAGEN, Вчера, 22:23
Нет, там есть пункт - идем со мной. потом в инвентаре - сверху стрелочки - влево вправо....
MOD Snow In the East
frankenheim, Вчера, 22:04
FedorSumkin, Я дико извиняюсь. А вы военный, историк или военный историк? Собственно полевая...
BANNERLORD: Часто Задаваемые Вопросы
Worgen, Вчера, 21:33
MAGEN,через разговор ?! Т.е. там появится пункт типа "Дорогая, я хочу проинспектировать твою...
Viking Conquest Reforged Edition 2054
epilect, Вчера, 20:11
Надо же,как тебя сериал зацепил...как по мне смотреть можно 1-4 сезон,но они решили не...
MOD Napoleon: Conquest Europe
Gut, Вчера, 20:01
BlackDevil, Может это задумано автором? ...
MOD Cultured Start
rain, Вчера, 19:17
Спасибо) А то не очень приятно бегать днями к выбранной культуре....