Комментарии 13
Можно решить проблему выедания пользователем ресурсов тем, что сделать их платными (за операцию/единицу памяти или за операцию/единицу памяти сверх лимита, и т.п.). При этом платой может быть какой-нибудь внутриигровой ресурс, который пользователями же и будет добываться в игровом мире, эдакое топливо для бота. Что-то по примерной аналогии с gas в Ethereum.
При этом для разработчика такой системы возникнет много интересных задач на подумать, как всё это дело отбалансить, а для игроков потом — как оптимизировать свой код и сколько тактов из него выделить на добычу топлива.
Суть описанной проблемы с ресурсами в том, что при недостаточной изоляции трудно контролировать бюджет CPU при выполнении скрипта конкретного игрока, если в фоне могут появляться паразитные нагрузки от других игроков.
Один и тот же код может исполняться разное время из-за недетерминированной работы v8 и ОС. Идея газа как раз в том, чтобы платить только за реально используемые ресурсы. Т.е. если ваш код простаивал из-за того, что другой процесс использовал ресурсы, вы не платите за это.
Посмотрите как рассчитывает стоимость Ethereum и как тарифицируются операции. Больше сказать не могу, не смотрел дальше.
Я в свое время для песочниц создал guest.js (код, кому интересно) – это V8 + libuv. Без доступа к внешнему миру (fs, http), все общение только по IPC. В разы легче так как не подключает библиотеки и баиндинги к ним, как это делает nodejs.
Но, сегодня я бы делал упор на песочницы на основе WASM. Они дают более предсказуемое поведение, чем все эти пляски с черным ящиком v8.
ИМХО развитие игры тормозит то, что не каждый сможет или захочет даже бесплатно что-то писать, а уже тем более сразу оформлять подписку на то, чего не знаешь уже точно мало кто будет. Роликов в ютубе мало, развитие игры таким образом при такой ценовой политике будет около нулевое.
По поводу развития — игра существует уже 4 года, на недостаток интереса к проекту не жалуемся.
Под капотом Screeps — виртуализация в MMO-песочнице для программистов