Добавлен , опубликован
Программы
Предназначение:
Работа с кодом
Версия игры: 1.26a
При помощи этой системы можно встроить в карту динамические библиотеки (Win32/DLL).
Это может помочь тем, кто не хочет писать сценарий карты на JASS, а предпочитает другие языки как: C, C++, Rust, Pascal... Если поднапрячься с загрузкой виртуальной машины, то можно использовать и языки вроде Python, Lua, Ruby, C#, Java.
Нет нужды просить игроков установить специальные лаунчеры — всё уже встроено в карту.

Работа системы

Сначала, предоставленный JASS-скрипт, используя уязвимости в виртуальной машине, выделяет исполняемую память и записывает туда мини-программу, которая распаковывает и загружает библиотеку "bin\Loader.dll", после чего вызывает её функцию "DoIt". Та же, в свою очередь, распаковывает и загружает библиотеки, перечисленные в списке "libraries" файла "config.json".
Когда игра собирается уничтожить главный поток JASS-скрипта, система выгружает все ранее загруженные библиотеки в обратном порядке и удаляет их файлы из временной директории.
Также чистка временного хранилища происходит при начале работы системы, на случай, если в прошлый раз мусор не был удален из-за нештатного завершения игры.
Поддерживается запуск множества экземпляров игры — у каждого процесса своё личное хранилище.
По завершению игры загрузчик остается в памяти, так как он не может выгрузить сам себя.
При запуске, система проверяет остался ли с прошлого раза висящий загрузчик и если обнаруживает такой, то выгружает его. Так что, они не будут накапливаться.

Установка

  • Скачайте архив и распакуйте куда-нибудь.
  • Импортируйте в карту "bin\Loader.dll" и "scripts\common.j".
  • Импортируйте в карту требуемые библиотеки.
  • Пропишите путь к своим библиотекам в "config.json" и импортируйте его тоже.
  • Скопируйте в карту код из "loader.j" (используется cjass).

Пример

Можете ознакомиться с моим примером:
  • pascal.w3x — карта со внедренными библиотеками.
  • ExampleSource.zip — исходники библиотеки со сценарием на FreePascal.
На карте создается толпа вражеских рабочих и один злой работник для вас.
Когда он смотрит на других, применяя свою способность, их разрывает в клочья.
Для работы с нативками используются JassAPI и RedirectCalls.

Генератор кода

В примере выше используется файл "jass_common_j.pas" сгенерированный на основе "common.j".
Прикладываю исходники генератора на python'е (зависит от funcparserlib) на случай, если кто-то захочет сгенерировать привязку для других языков.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
1
14
4 года назад
1
WarGoose, библиотеки и так исполняются при загрузке, так что нет нужды в дополнительных действиях.
1
17
3 года назад
1
Хочется подключения интерпретируемых языков, таких как lua, python, js и их библиотек
1
32
3 года назад
1
Vlod, зачееем? Вы не можите освоить жасс, который сам по себе недолуа, простой и примитивный, достаточный для построения сценариев карт варкравта. Писать с нуля карту на С++ будет куда сложнее, и имеет смысл лишь конверт для защиты и отптимизации карты, реализации внутри фишек, которых в игре нету и реализовтаь их можно лишь сторонней либой.
Питон - вот интересно зачем? Все сводится в те же самые - мы взяли адресс нативки Создать юнита ( к примеру ) и вызвали её, сунув аргументы, если в жассе это делает вирутальная жассм машина, то тут ты будешь это делать на с\питоне\луа... И да, там все эти фишечки языков типа тута не пашут, надо все ручками написать... Да там алгоритм не будет так ограничен как на жассе, но извините если в 2020 на гуи как курица лапой пишут, что говорить о более сложных алгоритмах и продуманных подходах на других языках?
Те кто так могут и умеют, напишут на жассе, пусть не так оптимально - но в рот мне ноги, кому это усралось, работает, не лагает, утечки пачками не плодит, да и ладно, 2020 год, ни 1 карта чето не взлетела, дота, лтд, петры, вампы - все платформы ими забиты, остальные карты - единичны на снг платформах.
1
17
3 года назад
1
Давайте подумаем. На этих языках написано так много, что переписывать это на jass или си не практично
2
32
3 года назад
Отредактирован quq_CCCP
2
Vlod, давайте подумаем, все что на этих языках написано в варкравте не усралось, ибо либо есть тоже самое - готовое, встроенное в движке, либо не имеет никакого смысла в реалиях варкравта. В варкравте главное карта а не код, или каке то там наработки, каким образом вам поможет в этом питон? Все системы хранения данных - есть по дефолту, те же хештаблицы, без жасса напрямую они будут побыстрее - но зачем? Вовсе у вас задача работать с игровыми обьектами, а не писать игру с нуля, делать какое то некому ненужное гавно, вроде еще одного файлового менеджера или движка тетриса. Да в жассе не хватает много что есть в движке, гребаный детект урона тому пример - но это решается проще, как сделали китайцы -просто добавлением нативок и нужных событий в жасс, ну тут на си они вам все доступны, о один хер вы реверс инжинерингом будите искать их по просторам game.dll и вникать в работу движка, что как бы рядовому юзеру который делает свою карту то и неусралось, 2020 - чуваки все на гуи, как курица лапой.
Поэтому развития это дело не получило, хоспаби за полгода 7 постов. Ради кого автору старатся? Идея конвертора - туда, сюда как айкап сделал, чито для защиты, как кстати щяс некоторые китайские карты, но это делают платформы, типа Озбнета или айкапа, где они затачивают карты под свои платформы и стараются чтобы они поменьше лагали на ноутбуках 20 летней давности.
1
17
3 года назад
1
quq_CCCP, так, значит все есть и ничего больше не нужно, ну хорошо) Допустим, нужно грузить данные из своего GDrive, потому что не охота, чтобы карта много весила. Во вторых, необходимы алгоритмы поиска пути, деревья квадрантов, потому что родная система передвижения и багованная и устаревшая. В третьих, нужны алгоритмы генерации карты высот и рельефа, так как без них сделать нормальный переход между локациями не представляется возможным. В четвертых, нужны алгоритмы нейросетей, а также удобное апи для их постарения чтобы писать адекватный ии. Это, и многое другое, уже написано. Возможно у вас есть много свободного времени, но у меня его нету. Считаю, что разработчик должен тратить время на создание игры, а не на создание инструментов для создания игры. Спасибо
2
17
3 года назад
2
Возможно у вас есть много свободного времени, но у меня его нету
С такими требованиями проще заказать импорт карт в Godot.
2
37
3 года назад
2
Что только не придумаешь, лишь бы не юзать готовый игровой движок))
Это такая религия - ради того чтоб не учить новые нативки напишем свою игру вокруг common.j
2
17
3 года назад
2
GetLocalPlayer, кроме импорта карт есть еще 1000+ моделей, иконок, сделанных в одной стилистике, настроенная сетевая передача и бесплатная платформа для организации совместной игры, удобный редактор рельефа и GUI
2
32
3 года назад
2
Vlod, Тебе в этом ни си, ни питон не помогут, у тебя как был 1 поток и 512 метров, так и остался, писать движок игры с нуля - удачи, никто в современное время этим заниматся небудет, нахрен не упало.
Для 90% задач то что есть хватает за глаза, про нейросети и прочее говно - хватит, уже не смешно, щяс драколича попрошу скинуть тот самый ии, который даже без мемхака сделан. Там быстренько тебя боты с небес спустят, тут дело не столько в отсуствии инструментов сколько в кривых руках \ не понимании того как это работает.
Потом если у вас такие замашки - своя игра, где ваша новая игра? Чето невидно.
Я к тому что в реалиях варкравта это некому ненужно, и делать поддержку никто не будет, проще написать снуля свою игру или в жасс нативок накидать необходимых, стоит тебе тронуть систему расчета путей или тумана - сразу фпс 6 кадров, про то как вы будите портировать игру на новый движок с поддержкой мультпотоков и трассировки лучей лучше создайте отдельную тему с готовым результатом, а мы посмотрим.
У вас хоть какая я то карта, играбельная есть?
1
17
3 года назад
1
Если вы считаете, что эффективнее писать все свое, чем брать готовое, то это ваше личное мнение
Если вы считаете, что это никому не нужно, то это ваше личное мнение
Если вы считаете, что знание костылей jass и blizzard VM - полезное знание для дальнейшей жизни, то это ваше личное мнение
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.