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

Царь
syabr
Титул: Главный динозавр и ГГ сайта
Офлайн 20 января 2018 11:47 поделиться
Сложно)  Спасибо за интересную статью smile6 


Танки грязи не боятся, сама отвалится
Я на Всадниках Кальрадии: https://rusmnb.ru/index.php?action=profile;u=18932
Мододел
AndyYa
Офлайн 20 января 2018 12:14 поделиться
Интересно. Долго присматривался к плюс-плюсу, но в итоге пользую LAV'S WARBAND MODULE COMPILER.


Царь
syabr
Титул: Главный динозавр и ГГ сайта
Офлайн 20 января 2018 19:22 поделиться
AndyYa, привет, куда ты так пропал надолго... Рад видеть)


Танки грязи не боятся, сама отвалится
Я на Всадниках Кальрадии: https://rusmnb.ru/index.php?action=profile;u=18932
Мододел
AndyYa
Офлайн 20 января 2018 21:09 поделиться
syabr, Взаимно. Вроде не пропадал :)


Царь
syabr
Титул: Главный динозавр и ГГ сайта
Офлайн 21 января 2018 02:15 поделиться
Да что то тихо сидишь, не пишешь ничего


Танки грязи не боятся, сама отвалится
Я на Всадниках Кальрадии: https://rusmnb.ru/index.php?action=profile;u=18932
Офлайн 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 Львиное Сердце, поиграть в это нельзя, можешь проходить мимо, это для мододелов-модульщиков


Танки грязи не боятся, сама отвалится
Я на Всадниках Кальрадии: https://rusmnb.ru/index.php?action=profile;u=18932
Офлайн 21 января 2018 19:28 поделиться
syabr, Я найду как в это ПОИГРАТЬ smiling_imp 


Кто творит добро, имея неограниченную возможность делать зло, тот достоин похвалы не только за содеянное добро, но и за все то зло, которого он не делает.
Друг сообщества
Дима Гончар
Титул: Король Британии
Офлайн 21 января 2018 23:19 поделиться
Король Ричард I Львиное Сердце,
:facepalm:
Сейчас бы поиграть в программу, позволяющую быстрее работать с модульной системой 


Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Онлайн

Сейчас на сайте: 205
Гостей: 202

Пользователи: 

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

Парламент commando
Samiraldos, Сегодня, 08:55
Цитата: ArtkolobokSamiraldos, Хорошо, но чтобы получить быстрый ответ, заходи на наш дискорд...
Парламент commando
Artkolobok, Вчера, 13:56
Samiraldos, Хорошо, но чтобы получить быстрый ответ, заходи на наш дискорд сервер:...
Парламент commando
Samiraldos, Вчера, 07:44
Цитата: ArtkolobokSamiraldos, Идея с партиями давно утратила свою актуальность, да и никто особо не...
MOD Voice Acting - AI Voice Acting for Every Character
Gut, 19 ноября 2024 18:13
с возвращением, грац!!...
Парламент commando
Gut, 19 ноября 2024 18:03
Samiraldos, Если есть желание, то всегда можно найти компромисс. Сами по себе партии утратили...
Парламент commando
Artkolobok, 19 ноября 2024 09:57
Samiraldos, Идея с партиями давно утратила свою актуальность, да и никто особо не хочет этим...
Парламент commando
Samiraldos, 19 ноября 2024 03:23
Я бы добавил должность партии в виде фрилансеров. Ну допустим я играю сейчас в МиБ потом буду...
Кольца
Samiraldos, 19 ноября 2024 03:06
https://commando.com.ua/uploads/posts/2018-05/1525510484_zol-bol-rad.png...