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

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

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

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

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

13 ответов

33 просмотра

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

Ну в целом 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).

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта