在我的正在开发的游戏(或可能的未来游戏)中,我考虑添加自定义的、由用户编写的脚本来控制敌人/NPC的AI。这样,任何懂得编写脚本的用户都可以为敌人编写AI。我想使用LUA(或如果更简单的话,其他脚本语言),但我完全不知道如何做到以下几点:
- 在Java代码中嵌入LUA和其他脚本语言
- 让这些脚本控制特定的NPC或NPC类型
- 在脚本语言中提供特殊功能来控制玩家是否靠近NPC或类似情况。
Computercraft
模组对于 Minecraft
来说是一个很好的例子,基本上就是我想要实现的(或多或少)。只是我不是要执行精确的命令(向前移动一个格子,向左移动两个格子等),而是想用脚本来实现AI。你有任何教程、建议或类似的东西吗?
回答:
http://sourceforge.net/projects/luaj/
这里有一个你可以阅读的自述文件。
基本上,你希望在代码的某些点上调用Lua脚本,这些脚本可以执行AI计算并将结果返回给你的Java引擎。当然,这一切都取决于你的引擎,它在可能的集成方面有多灵活,等等。
编辑:
你需要为这些脚本提供一些上下文,即设置Lua环境,使其了解你的引擎(对象/表,函数)。例如,如果你想让用户能够移动AI角色,那么你必须在Lua中注册(例如)一个 AIEnemy
对象,给它一些方法(move
,shoot
)等。这些方法然后链接(调用)到你的Java引擎中的相应方法,并传递适当的参数。
嵌入Lua并使你的应用程序与之协同工作是一件很有趣的事情,尽管我从未在Java中做过(在C/C++中做过)。
话虽如此,这需要对集成的设计进行一些认真的思考。先从非常简单的东西开始实验,感受一下,最好是在游戏开发之外进行。一旦你掌握了它,就可以继续进行更深入的集成。
顺便提一下,不要让Lua的简单性欺骗了你。它是一种非常强大的语言。