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

Толмач
Gospell
Офлайн 21 января 2018 23:50 поделиться
Четко !


Мододел
Hero_of_Calradia
Титул: Герой Кальрадии
Офлайн 22 января 2018 17:16 поделиться
W.R.E.C.K кстати тоже очень полезная вещь, как и ++. Спасибо, Яныч, посмотрю на выходных обязательно.
ВРЕСК не поддерживает модмержер, что насчёт ++?


Ратник
Bombucha
Офлайн 1 декабря 2019 18:01 поделиться
Не совсем понимаю, как выполнять следующие действия после установки С++, где начинается Решение в Visual Studio




Ратник
Bombucha
Офлайн 1 декабря 2019 19:11 поделиться
Не понимаю в чем проблема, вот что мне показывает https://prntscr.com/q4ng4q


Друг сообщества
Janycz
Офлайн 1 декабря 2019 19:14 поделиться
Цитата: Bombucha
Не понимаю в чем проблема, вот что мне показывает https://prntscr.com/q4ng4q

Все относительно нормально. Теперь им нужно модульную систему собрать. Нужно закинуть .exe к файлам модульной системы и запустить.


1 + 2 + 3 + 4 + ... = ζ(-1) = -0.08(3)
1 - 1 + 1 - 1 + 1 - ... = 0.5
1 - 2 + 3 - 4 + 5 - ... = 0.25
Ратник
Bombucha
Офлайн 1 декабря 2019 19:36 поделиться
Janycz,К каким именно файлам? https://prntscr.com/q4nr5y


Ратник
Bombucha
Офлайн 1 декабря 2019 20:04 поделиться
Разжуйте мне кто-нибудь поподробнее, спасибо. https://prntscr.com/q4o2rh


Ратник
Bombucha
Офлайн 1 декабря 2019 22:46 поделиться
Цитата: Bombucha
Разжуйте мне кто-нибудь поподробнее, спасибо. https://prntscr.com/q4o2rh

Как правильно указать Include Directories и Library Directories к скачанному питону?


Странник
Vetrogor
Офлайн 15 декабря 2021 10:31 поделиться
Обфускатор увеличивает время дебугинга. Такое себе удовольствие. Все уже отказались использовать его. К тому же он не защищает на 100% - при желании можно понять код, даже если имена скриптов и переменных перемешаны.


Стрелец
sergosafarelly
Офлайн 28 апреля 2022 01:24 поделиться
Здравствуйте. Имеется ли до сих пор активная ссылка на архив с необходимыми файлами? В Интернете ничего подобного найти не могу.


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

Онлайн

Сейчас на сайте: 167
Гостей: 165

Пользователи: 
- отсутствуют

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

MOD M&B Anno Domini 1257
Deymon_Targarien, Вчера, 09:43
а как скачать версию 276? ссылкуа не работает...
Csatadi non official patch
wadawda, 26 марта 2024 03:05
MOD Csatadi Visual and Historical Modили это уже не надо? если ставить этот саб мож? где новее...
Csatadi non official patch
wadawda, 25 марта 2024 23:20
Gut, Это в шапке или где качать? И как играть с ним если еще и оригинал стоит MOD Csatadi Visual...
ПЕТИЦИИ НА ПЕРЕВОД МОДОВ
vasul, 25 марта 2024 10:11
Сделай под новую...
MOD Noble Recruit-Hire Party Essence
Сергей Владимирович, 24 марта 2024 16:51
Кто знает, есть ли мод или чит позволяющий сделать любого воина своим компаньоном?...
MOD Medieval Conquests
beibars, 24 марта 2024 12:07
Лекс, Спасибо большое. Это тот самый мод) Как раз то что надо...
MOD Medieval Conquests
Лекс, 24 марта 2024 08:21
beibars, Помоему ето етот мод - ...
MOD Medieval Conquests
beibars, 23 марта 2024 22:08
Помогите, люди добрые:) Ищу один мод, но забыл его название. Мод на основе 1257AD, с наработками...
ПЕТИЦИИ НА ПЕРЕВОД МОДОВ
dimm, 23 марта 2024 11:47
vasul, русификатор - под старую версию (1.4.0.9) . соответственно, в новой (1.445.1) - не всё...