Добавлен , опубликован
Программы
Предназначение:
Работа с кодом
Версия игры: 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
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 - полезное знание для дальнейшей жизни, то это ваше личное мнение
2
17
3 года назад
2
Если вы считаете, что эффективнее писать все свое, чем брать готовое, то это ваше личное мнение
Если вы считаете, что это никому не нужно, то это ваше личное мнение
Если вы считаете, что знание костылей jass и blizzard VM - полезное знание для дальнейшей жизни, то это ваше личное мнение
Если вы считаете что это его личное мнение, это ваше личное мнение.
2
15
3 года назад
2
А вот и приближение к моей старой хотелке. Писать код на Google Go.
1
32
3 года назад
1
Vlod, мда, уже не в те дебри понесло, просто бездумный флуд лиж бы че то написать.
Какое это отношение имеет к модмейкингу в варкравте на текущем уровне? Тебе привели 101 пример почему этого небудет и никому это ненадо, он начал расказывать какой жасс плохой. Чувак кеп курит в сторонке, но за 20 лет вы этот жасс не осилили, где собственно по сравнению с си или питоном то и учить нечего, а без понимания работы движка игры - че ты можешь сделать? Какое готовое, ау? Что ты готового можешь добавить в игру? OpenGl? Вот что? Еще раз, у тебя нет и не будет исходников, ты работаешь с готовой закрытой архитектурой, где изменить что то глобальное- нельзя, переписывать с нуля - будет сложнее чем тупо портировать игру на другой двиг.
Все ваши загрузки, подгрузи - это стандартное win.api, можно догружать в процессе игры данные, но этот путь доказал свою ненадежность, более того питона для этого как и луа не потребовалось, 1 вызов функции вин айпи на мемхаке.

Навреное круто будет 4 к сделать (нет)... Ну дальше можно перечислять бесконечно + а что уж тогда мешает взять тот же юнити, или чтонить еше (насчет гугл, ага мега ИИ, на ютубе такого позора еще не видели, гуглим AlphaStar sc2 fails )
1
17
3 года назад
1
Сами работайте со своим win.api
Можете сначала ознакомиться с малой частью того что уже есть
1
14
3 года назад
1
Всё возможно уже сейчас, в своей библиотеке, пользователь может и виртуальную машину python'а загрузить, и игру на Unity запустить.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.