【问题标题】:What is a good, simple scripting language to embed into a Java game engine?嵌入到 Java 游戏引擎中的好的、简单的脚本语言是什么?
【发布时间】:2010-07-29 22:16:24
【问题描述】:

我正在寻找一个 Java 脚本引擎,它允许用户编写简单的脚本来控制游戏的行为和事件。一些东西:

  • 很简单 - 很容易上手,尤其是对于有一些基本编程/脚本编写经验的人

  • 提供大量控制 - 我可以轻松启动/停止/暂停脚本并控制每个脚本的执行时间,也许它们可以使用多少内存空间

  • 与 Java 环境本身分离 - 无法从脚本访问任何 Java 对象或类,只能访问我明确提供的那些函数

我考虑过 Rhino JavaScript 引擎,它适合我的目的,但从我所读 (example) 的内容来看,它的设计目的是与 Java 集成得如此之多,以至于安全地沙箱化它会很棘手。我宁愿从一个默认情况下不允许脚本访问任何内容的引擎开始,也不愿拥有一个我必须关闭的完全打开的引擎。脚本可能并不总是可信的,因此环境应该不容易被破解。

我也考虑用 ANTLR 之类的东西开发我自己的语言,但这可能比我想投入的更多。

有什么建议吗?

【问题讨论】:

    标签: java scripting


    【解决方案1】:

    你考虑过 Lua 吗?

    Google docs previewpdf 主题

    Lyrio,G.H.S.O; Seixas,R.B.;在 Java 编码的游戏中使用 Lua 作为脚本语言,北美模拟和 AI 游戏会议论文集 - GAMEON-NA,EUROSIS,加拿大蒙特利尔,2008 年。

    【讨论】:

      【解决方案2】:

      您应该尝试Groovy,这是一种easily integrates 与Java 平台相结合的脚本语言。

      它的语法与 Java 100% 兼容,但它还具有简化的语法,使其成为适合 DSL 实现的语言。

      我不确定您是否可以停止/暂停从 Java 程序执行 Groovy 代码,您应该阅读Groovy API

      从 Java 程序中执行 Groovy 代码时,您可以指定传递给脚本的上下文,并且可以查询脚本修改的上下文以获取输出变量。通过使用适当的CompilerConfiguration 创建GroovyShell,可以将脚本与底层Java 环境完全隔离。

      【讨论】:

        【解决方案3】:

        JACL 就是这样一种语言。它基于TCL。无论你做什么,都不要发明另一种语言。那里有很多不错的选择。

        【讨论】:

          【解决方案4】:

          在我看来,不仅语言很重要,交互方式也很重要。 JSR 223 在不同语言之间最兼容,但“native”似乎是最好的(即 groovy 的完整对象集成)

          【讨论】:

            猜你喜欢
            • 2016-01-10
            • 2010-09-10
            • 1970-01-01
            • 1970-01-01
            • 2015-12-20
            • 2012-08-15
            • 2011-10-07
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多