java - 在java中使用NPC AI的用户脚本

标签 java scripting lua artificial-intelligence

对于我的 WIP 游戏(或者可能是 future 的游戏),我考虑为敌人/NPC AI 添加自定义的、用户编写的脚本。任何知道如何编写脚本的用户都可以这样做,为敌人编写人工智能。我想使用 LUA(或其他脚本,如果更容易的话),但我真的不知道如何才能:

  1. 在 Java 代码中嵌入 LUA 和其他脚本语言
  2. 让此脚本控制特定 NPC 或 NPC 类型
  3. 在脚本语言中具有特殊函数来控制玩家是否靠近 NPC 或类似物体。

Computercraft mod for Minecraft 是我想要实现的目标(或多或少)的一个很好的例子。 只是不想执行精确的命令(向前走 1 个方 block ,向左走 2 个方 block 等),我想使用 AI 脚本。 你有任何教程、建议或类似的东西吗?

最佳答案

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

Here's供您阅读的自述文件。

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

编辑:

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

嵌入 Lua 并让您的应用程序使用它确实很有趣,尽管我从未在 Java (C/C++) 中这样做过。

话虽如此,它需要对集成的设计进行一些认真的思考。尝试非常简单的东西来感受它,即使在游戏开发之外也是如此。一旦获得它,就可以进行更认真的集成。

只是作为旁注。不要让 Lua 的简单性欺骗了您。这是一种非常强大的语言。

关于java - 在java中使用NPC AI的用户脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21598200/

相关文章:

python - 同时运行两个python文件

MySQL multi CREATE TABLE语法帮助?

Nginx 在写入访问日志时禁用或解码 url 编码

lua - Torch/Lua,如何计算曲线下面积(AUC)?

java - 如何为 Microsoft Exchange 配置 JavaMail?

java - 运行tomcat时eclipse没有检测到错误但是找不到bean

java - 如何仅计算外部标签(XML)的数量?

java - 将 XML 元素放入 JTable 中

linux - 在 Unix/Linux 上获取昨天的文件

lua - 检查是否所有陈述都是错误的?