185 похожих чатов

Такой вопрос... У меня в игре внутриигровые скрипты когла-то были

на Луа, сейчас подумал - раз сама игра на Свифте, может пусть и скрипты будут?

Есть идея кросс-компилировать их в webassembly, и его уже забриджить в программу. Интерпретатор JS будет и sandbox-ом заодно, т.к. если позволить пользователям редактировать и загружать прямо системные модули, то могут абюзить.

Так вот, вопрос. На чем запускать этот webassembly, учитывая, что DOM и прочее из браузера не нужно? V8? что-то другое?

13 ответов

16 просмотров

Они и так смогут абюзить, если игра не сетевая и нет проверок на сервере

Ну в целом V8 подойдет, но ты потенциально теряешь в производительности используя WASM. Почему бы нативно не компилится под нужные платформы, если это не браузерная игра

Andrey- Автор вопроса
Alexander Gapak
Они и так смогут абюзить, если игра не сетевая и н...

Игра сетевая, скрипты редактируются игроками и должны сразу применяться. Ну как, привелигированными игроками, которые мир создают, но все равно будет плохо, если они доступ к акку игры через скрипт получат. )

Andrey- Автор вопроса
Alexander Gapak
Ну в целом V8 подойдет, но ты потенциально теряешь...

Доп. сандбокс... с виртуалкой можно будет лимиты на CPU поставить и убедиться, что не полезли к файловой системе например. В принципе в Луа тоже виртуальная машина была, в V8 наверное не сильно больше оверхед.

Andrey
Игра сетевая, скрипты редактируются игроками и дол...

Lua — язык, широко используемый для скриптов и, в принципе, знакомый. Свифт для скриптов — ну хз. К тому же, наверное, и ограничения будут всякие.

Andrey
Игра сетевая, скрипты редактируются игроками и дол...

А не проще через чистый JS? У свифта прекрасный бридж с ним

Andrey- Автор вопроса
Dmytro
А не проще через чистый JS? У свифта прекрасный бр...

да может кстати и чистый JS, а как с ним бриджиться на сервере?

Andrey
да может кстати и чистый JS, а как с ним бриджитьс...

Прям на отлично, там есть либа заменитель JavaScriptCore, можно выставлять свои Swift классы в JS, получать и выполнять любые функции и т.п.

Dmytro
Прям на отлично, там есть либа заменитель JavaScri...

И читать/писать файлы можно через JS, а ему нужна изолированная среда. Он запускает на сервере юзерские скрипты

Alexander Gapak
И читать/писать файлы можно через JS, а ему нужна ...

Там JS скрипты же в VM’ке запускаются, вряд ли будет доступ к файлам на сервере

Dmytro
Там JS скрипты же в VM’ке запускаются, вряд ли буд...

Хмм, ну в node js тоже js в VM запускается. А как ресурсы ограничивать такой вм?

Andrey- Автор вопроса
Alexander Gapak
Хмм, ну в node js тоже js в VM запускается. А как ...

В ноде набор функций в JS экспортируется (реализованных в ноде на C).

Похожие вопросы

Обсуждают сегодня

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Есть вопрос: допустим есть железка с каким-то интерфейсом(допустим usb), но как по этому интерфейсу железкой управлять неизвестно, прог нету, а управлять очень хочется надо. К...
Mixail Frolov
15
а как ловят такое ghci> res <- getPos2 urlt 0 (alist !! 0) 200 ghci> res SearchAtom (Search "www.google.com" "/search?q=" "Haskell") "haskell.org" (SearchTS [(2024-05-06 07:...
Fedor
14
Так а кто может спарсить всех участников чата? Идишники
Magic
13
всем привет почти закончил курс После него можно писать свою операционку? Какие библиотеки надо использовать и куда дальше копать для изучения
Linus
13
Ребята, а из API геокодеров (по адресам в РФ) что сейчас актуального и есть ли среди актуального бесплатное/с нормаотным лимитом запросов? ситуация простая - на сайте периоди...
Dreamer_0x01 VeseloV
8
короче сгенерила мне эта штука код на ассемблере: struc string val { common local .value dq .value .value: if ~val eq db val end if db 0 } fo...
Vi Chapmann Chapmann
12
Карта сайта