什么是嵌入Java游戏引擎的优秀,简单的脚本语言?

时间:2010-07-29 22:16:24

标签: java scripting

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

  • 很简单 - 很容易上手,特别是对于那些有基本编程/脚本编程经验的人来说

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

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

我已经考虑过Rhino JavaScript引擎了,它适合我的目的,但是从我读过的内容(example)来看,它的设计与Java的集成非常安全,沙盒化它会很棘手。我宁愿从一个引擎开始,默认情况下脚本无法访问任何东西,而不是一个我必须关闭的完全打开的引擎。这些脚本可能并不总是受信任的,因此环境不容易被打破。

我也考虑用像ANTLR这样的东西开发我自己的语言,但它可能比我想要的更多努力。

有什么建议吗?

4 个答案:

答案 0 :(得分:4)

你考虑过Lua吗?

关于该主题的Google docs preview

pdf

  

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

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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