在libGdx中制作一个简单的游戏(另一个可能永远不会发布的游戏),我想评估游戏角色的“事件”。每个事件都应该有一个'condition'块和一个'execute'块,如果'condition'返回true则执行。该语言必须支持操作顺序以及以下逻辑运算符或其等价物;
==
!=
<=
>=
||
&&
我还需要能够将各种对象的实例传递给脚本,以便我可以访问变量并调用与此类似的方法;
if(game.hasFlag("here_be_my_flag")) then
game.alertAllPlayers("Here be my flag!");
其中game
是我游戏的Game
类的实例,而hasFlag
和alertAllPlayers
是在java中实现game
的方法。
当我需要二十几个脚本来评估游戏中的每个“角色”(100到500之间)时,问题就出现了。为此设置Mozilla的Rhinoscript Javascript解释器非常简单,但这会使我的FPS从50减慢到25到30范围,这是一种不可接受的性能损失。这是因为Rhino被设计为在实际的JVM上运行,这是Android所缺乏的。 Android反而在DVM上运行,该DVM以与JVM字节码不同的格式执行字节码。 Rhino可以编译为Java字节码,但不能编译为Dalvik。
许多不同语言都存在此问题。大多数设计用于台式计算机。我偶然发现了Deelang,一种编写成Dalvik字节码的小脚本语言。 Deelang在Android设备上相对于Rhino good performance。
不幸的是,似乎大多数具有良好文档的语言都没有这种能力,并且必然比那些做得慢的语言(可能有例外)。所以,我查看了Github上Deelang代码的两个基本示例,并且在布尔比较中绝对没有任何内容。我在阅读有关java中脚本语言的几个问题时学习了Deelang。 Github Wiki上几乎没有关于此的文档,因此,有这种小语言经验的人是否知道有关运算符和条件语的使用的任何内容?
请注意,我在代码中搜索了一些可能会让我知道如何执行此操作的注释。