什么是一种好的、简单的脚本语言,可以嵌入到Java游戏引擎中?

c2e8gylq  于 2024-01-05  发布在  Java
关注(0)|答案(4)|浏览(115)

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

  • 很简单-很容易上手,特别是对于有一些基本编程/脚本经验的人来说
  • 提供了大量的控制-我可以轻松地启动/停止/暂停脚本,并控制每个脚本的执行时间,也许是它们可以使用的内存空间
  • 与Java环境本身分离--不能从脚本访问任何Java对象或类,只能访问我显式提供的那些函数

我考虑过Rhino JavaScript引擎,它符合我的目的,但从我所读到的内容来看,(example),它的设计与Java集成如此之多,安全地沙箱它将是棘手的。我宁愿开始一个引擎,让脚本没有任何访问默认情况下,比有一个完全开放的,我必须关闭。脚本可能不总是信任,所以环境应该不容易突破。
我也会考虑用ANTLR之类的东西开发我自己的语言,但这可能比我想投入的更多。
有什么建议吗?

t1rydlwq

t1rydlwq1#

你考虑过卢阿吗?
Google docs preview的一个pdf的主题
Lyrio,G.H.S.O; Seixas,R.B.; Using Lua as Script Language in Games Coded in Java,Proceedings of The North American Simulation and AI in Games Conference - GAMEON-NA,EUROSIS,Montreal,Canada,2008.

3htmauhk

3htmauhk2#

您应该给予尝试Groovy,这是一种与Java平台兼容的脚本语言。
它的语法与Java 100%兼容,但它也有一个简化的语法,使它成为一个合适的语言DSL实现。
我不确定你是否可以停止/暂停Java程序中Groovy代码的执行,你应该阅读Groovy API
当在Java程序中执行Groovy代码时,您可以指定传递给脚本的上下文,并可以查询脚本修改的上下文以获取输出变量。通过创建一个带有适当CompilerConfigurationGroovyShell,可以将脚本与底层Java环境完全隔离。

5tmbdcev

5tmbdcev3#

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

aurhwmvo

aurhwmvo4#

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

相关问题