Добавлен , опубликован
Выпущена первая публичная бета версия War3Js.
War3Js - это интеграция JavaScript для Warcraft III. Основан на форке War3Lua.
War3Js это не просто интеграция другого движка в Warcraft, но и свой фреймворк, который делает написание кода по стилю похожим на стиль Node. Фреймворк пока не готов полностью, но недостающий функционал можно восполнить прямым доступом к нативным функциям (почти как в LUA).
Это тестовая версия. Не является финальным продуктом

Особенности

  1. Поддержка модульности. Все файлы скрипта - это ESM модули. Эти модули могут экспортировать и импортировать что-то из других модулей.
  2. Точки входа - модули main (запускается при старте игры) и config (запускается в лобби).
  3. Поиск модулей аналогичен node. Пути должны быть относительными с расширением файла. Все скрипты должны быть помещены в папку war3js внутри карты.
  4. Все нативные функции сложены в пакет `natives`, а константы в `constants` (расширение не нужно).
  5. В распространяемой сборке захардкожен DEV mode.
  6. При включенном DEV моде будут искаться файлы на диске (в папке war3js в корне игры). Подробнее в разделе поиск модулей.
  7. Любая ошибка при выполнении модуля (main и config), а так же при выполнении функции, которая экспортируется default экспортом отключит выполнение всего JS в карте.
  8. Ошибки при выполнении действий триггеров, или таймеров на данный момент игнорируются
  9. Все хендлы - это объекты. В поля можно что-то писать, либо читать
  10. На некоторые хендлы сделаны обертки (реализованная часть bootstrap библиотеки)
  11. Для war3js нужен валидный war3map.j. UjApi при отсутствии war3map.j в карте подставляет пустышку. Поэтому карта на UjApi может запускаться без war3map.j.
  12. War3Js будет распространятся с Irina Connector и UjApi лаунчером. На данный момент готова версия для Irina Connector.
Вроде все. А нет не все. Если Giga Gachi Chad - можете писать код на WASM и исполнять его через war3js. Интерфейс соответствует реализации в node

Поиск модулей

В целях удобства отладки war3js умеет подгружать файлы из папки с игрой (если включен DEV мод).
Приоритет поиск следующий (от корня игры/карты):
  1. Папка `war3js\mapscope\<имя файла карты>` (на диске)
  2. Папка `war3js` (в mpq архивах)
  3. Папка `war3js\global` (на диске)
В первую очередь скрипт ищется там, где был загружен скрипт который его запрашивает. Например, если main.js, который был загружен из карты запросил module1.js, то в первую очередь поиск будет в архиве карты.

Попробовать

  1. Скачайте Irina Connector xgm.guru/files/2175/317248/connector-js.zip.
  2. Выполните первоначальную настройку (если ранее не играли) по инструкции здесь irinabot.ru/wiki/irina-help/how-to-play
  3. Включите в настройках версии 1.26-js (или 1.26-Uj-js)
  4. Запустите игру из коннектора
Можете попробовать запустить демо карту xgm.guru/files/2175/317248/War3JsTestMap.w3m
Так же можете попробовать написать код на JS. Для этого приложен пример проекта xgm.guru/files/2175/317248/template.zip. Предполагается, что у вас есть базовые навыки работы c npm. Ну или можете тупо в блокноте писать код, но без авто завершения как-то не то.
Если есть желание помочь с разработкой bootstrap библиотеки - добро пожаловать в GitHub
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
37
5 месяцев назад
0
А node модули можно подключить?)
0
20
5 месяцев назад
0
ScorpioT1000, node нет. А некоторые из NPM пакеты работают. К примеру я смог завести pako (чтобы что то сжимать), в bootstrap встроен полифил EventEmitter. Так что если npm пакет работает и в node и в браузере - у него есть шансы запуститься в war3js

То есть fs, сокеты, posix, fetch (под вопросом) мимо
0
20
4 месяца назад
0
Небольшой инсайдик к новой фиче War3Js
Загруженные файлы
1
37
4 месяца назад
1
Тоесть fetch мимо, а вебсокеты норм? Да вы все явно издеваетесь! Все вместе со всеми мемхаками

Я не удивлюсь если вы еще bluetooth подключите, лишь бы не гребаный http request
0
20
4 месяца назад
0
ScorpioT1000, я передумал. fetch будет, но мне интереснее было начать с websocket
Чтобы оставить комментарий, пожалуйста, войдите на сайт.