在Java中使用用户脚本进行NPC AI

在我的正在开发的游戏(或可能的未来游戏)中,我考虑添加自定义的、由用户编写的脚本来控制敌人/NPC的AI。这样,任何懂得编写脚本的用户都可以为敌人编写AI。我想使用LUA(或如果更简单的话,其他脚本语言),但我完全不知道如何做到以下几点:

  1. 在Java代码中嵌入LUA和其他脚本语言
  2. 让这些脚本控制特定的NPC或NPC类型
  3. 在脚本语言中提供特殊功能来控制玩家是否靠近NPC或类似情况。

Computercraft 模组对于 Minecraft 来说是一个很好的例子,基本上就是我想要实现的(或多或少)。只是我不是要执行精确的命令(向前移动一个格子,向左移动两个格子等),而是想用脚本来实现AI。你有任何教程、建议或类似的东西吗?


回答:

http://sourceforge.net/projects/luaj/

这里有一个你可以阅读的自述文件。

基本上,你希望在代码的某些点上调用Lua脚本,这些脚本可以执行AI计算并将结果返回给你的Java引擎。当然,这一切都取决于你的引擎,它在可能的集成方面有多灵活,等等。

编辑:

你需要为这些脚本提供一些上下文,即设置Lua环境,使其了解你的引擎(对象/表,函数)。例如,如果你想让用户能够移动AI角色,那么你必须在Lua中注册(例如)一个 AIEnemy 对象,给它一些方法(moveshoot)等。这些方法然后链接(调用)到你的Java引擎中的相应方法,并传递适当的参数。

嵌入Lua并使你的应用程序与之协同工作是一件很有趣的事情,尽管我从未在Java中做过(在C/C++中做过)。

话虽如此,这需要对集成的设计进行一些认真的思考。先从非常简单的东西开始实验,感受一下,最好是在游戏开发之外进行。一旦你掌握了它,就可以继续进行更深入的集成。

顺便提一下,不要让Lua的简单性欺骗了你。它是一种非常强大的语言。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注