Комментарии 12
По-моему здесь пропущено кое-что. Ну то есть почему бы просто не компилировать С++ код на рантайме и зачем тут эмулятор risc-v
Насколько я понял смысл в том, чтобы скрипт был полностью изолирован от системы, непонятно насколько он изолирован от остальной программы, но в общем скрипт не может пойти и удалить какой-то файл или что-то такое
В играх цели изоляции обычно не стоит, скорее стабильности чтобы не попортить стек с памятью и иметь хорошие, читабельные стектрейсы и возможность отладки.
А еще в скриптах есть полезные фишки на уровне языка - например виртуальные потоки с переключением контекстов прямо в while(true) , корутины, возможность сохранить и загрузить скриптовый контекст как есть
как по мне моды в игре должны быть такие, чтобы ты не удалил кому-то системник и не распространял вирусы через steam другим людям через невинные стрелялки
Моды в игре должны быть разные. Если уж говорить об идеальном мире, должна быть система привилегий: "этот мод может записывать файлы в такую-то папку", "этот мод может иметь доступ в интернет", как это работает с мобильными приложениями, которые тоже пишутся множеством независимых авторов.
Мне недавно пришлось инжектить DLL и хукать одну из игр, чтобы интегрировать необходимую функциональность, потому что авторы сделали непробиваемый sandbox, который никак не может обмениваться данными с внешним миром.
Т.е. создаем виртуальную машину с архитектурой весьма вероятно отличающейся от хостовой, запускаем в ней слой эмуляции linux и уже в нем запускаем свои скрипты и говорим что нас интересуют минимальные задержки?
А если сразу писать скрипты на С++? Минуя вот это вот всё?
Как пример скриптования с низкими задержками. Это игра Fallout 1 и Fallout 2. Скрипты пишутся на смеси С и Pascal. Язык называется SSL - Star trek script language. Скрипт переводится в свой байткод, игра его интерпретирует. Ну и оригинальные игры спокойно работают на железе pentium 75 mhz, без risc-v и смс:)
Умели же.
Получается, чтобы выполнять скрипты их сперва надо скомпилить, а для этого на хостовой машине должен стоять жирнючий компилятор. Ну и сколько сам riscv эмулятор добавляет к бинарю не сказано, но полагаю немало. Такое себе решение для скриптования, нишевое. Гораздо лучше и проще взать какой-нибудь quickjs для скриптов.
При словах "скриптинг" и "C++" сразу вспомнился проект CINT (https://root.cern.ch/d/cint.html)
А тут либо сложности с переводом, либо у нас автором разные понимания слова "скриптинг"
Низкоуровневый скриптинг на C++ для игровых движков