2010-07-29 89 views
7

我在寻找的是一个Java的脚本引擎,它允许用户编写简单的脚本来控制游戏的行为和事件。东西:什么是嵌入Java游戏引擎的好的简单脚本语言?

  • 很简单 - 一些容易回暖,特别是对人的一些基本的编程/脚本经验

  • 提供了大量的控制 - 我可以很容易地启动/停止/暂停脚本和控制多少执行时间各得到,或许他们能有多少内存空间,使用

  • 从Java环境本身分离 - 从剧本到任何Java无法访问对象或类,只有那些功能我明确规定

我已经考虑过犀牛JavaScript引擎,它适合我的目的,但是从我读过的内容(example),它被设计为与Java集成以至于很安全地对其进行沙盒处理会非常棘手。我宁愿用一个引擎,默认情况下让脚本无法访问任何东西,而不是完全打开一个我必须关闭的引擎。脚本可能并不总是可信的,所以环境不应该很容易被打破。

我还考虑开发自己的东西,如ANTLR语言,但它比我想投入可能更多的努力。

有什么建议?

回答

4

你有没有考虑过Lua?

关于该主题的pdfGoogle docs preview

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

+1

它是Lua,而不是LUA。请参阅http://www.lua.org/about.html#name – lhf 2010-07-30 22:39:52

+0

感谢您向我指出,编辑。 – 2010-07-30 23:09:44

2

你应该给一个尝试Groovy,一脚本语言easily integrates与Java平台。

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

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

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

1

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

0

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