我一直在慢慢地从事一个人事项目,以使用 extjs 作为我的前端来运行类似 webmud 的游戏。我做出的设计选择之一是允许用户为游戏逻辑生成评估代码。因此,当玩家进入一个新的“房间”时,会调用一些状态脚本,如“玩家以前来过这里吗,如果他们在这里,他们是否有 x 个库存物品”,然后做出相应的响应。此外,基本的房间“动作”将被硬编码( go N/S/E/W ),但高级动作将作为相同的用户生成的评估脚本可用。
最初我打算偷懒并使用评估的 PHP 来处理这个逻辑,但我的偏执感正在发挥作用。所以我发现的两个替代方案是 runkit_sandbox,但它不支持主线程和沙箱之间的对象交换(只是简单的数据类型和数组)或者使用 ecmascript 作为我的游戏逻辑http://ejohn.org/blog/spicing-up-embedded-javascript/。
两者的优缺点是,使用 runkit,我可以以极大的速度锁定脚本,而 ecma 解释器允许我有选择地将变量、函数和可能的对象绑定到 javascript 运行空间,但它的仍处于测试状态,我还没有看到它运行得如何。
这些是用于选择还是有其他我不知道的东西可能是更好的选择?环境:linux、PHP-CGI 5.3 或作为谷歌应用引擎。