Tag: 游戏引擎

Ruby沙盒与集成脚本语言

我目前正在使用Ruby中基于文本的游戏引擎,应用程序分为/ lib中的Ruby代码和/ data中的YAML数据,在游戏需要时加载。 我想允许数据文件包含基本脚本,主要是在事件/观察者模型中。 但是,我还希望用户能够生成和共享自定义方案,而无需担心脚本中嵌入的恶意代码。 附录:我最初的计划是将用户创建的内容分为两种类型,“模块”只是数据(因此是安全的)和插件,它们增加了额外的function(但显然不安全)。 为了类似于桌面游戏,模块就像发布的冒险场景和内容,插件将是包含附加规则和系统的规则手册。 示例脚本(当然语法可根据解决方案进行更改): — Location: observers: on_door_open: | monster = spawn_monster(:goblin); monster.add_item(random_item()); monster.hostile = true; 从安全角度来看,如果脚本严格选择加入,可能是通过包含一个带有一点DSL的mixin来实现的,例如: class Frog include Scriptable def jump; … ; end # this can be called from a script allow_scripting :jump def ribbit; … ; end # this cannot be called from a script end 我看了三个四个选项,但我不确定哪种方法最好: […]