AI对话 RPG Maker MZ

RPG Maker MZ AI 对话系统

我像往常一样用 Python 编程,并使用 GROQ 的 API,心想:为什么不也为 RPG Maker MZ 做点什么呢?

既然我刚完成了 FOW 小地图 的开发,我便坐下来写了一些快速代码。

我在这里免费赠送它,不再进行后续开发。拿去随意使用——MIT 许可证。这是我作为业余项目制作的,不是一个我会长期维护的插件。这个版本提供以下功能:**


GroqNPC.js – RPG Maker MZ 的 AI 驱动动态 NPC 引擎​

版本: 2.2.0
许可证: MIT – 随意使用
要求: RPG Maker MZ,Groq API 密钥(提供免费层级)


包含内容​

此插件将你的 RPG Maker MZ 游戏连接到 Groq 的快速 LLM API(Llama 3.1),提供四个集成系统:

层级 - 功能 - 作用**
1 - AI 对话 - 带记忆的流式对话,10 秒超时
2 - 任务系统 - 定义任务;所有 NPC 自动共享状态
3 - NPC 知识库 - NPC 知道任务状态、队友、世界状态
4 - 敌人行为 - AI 决定战术,在战斗前设置 MZ 开关


快速入门 – 屠龙示例​

1. 定义任务(在自动运行事件中)​

代码:

插件命令: Define Quest
  任务 ID: dragon_hunt
  标题: 阿什维尔之龙
  目标: 与马克交谈|找到巢穴|击败巨龙
  NPC 成员: Mark,Sera,Old Tom
  任务开关: 10
  任务变量: 11

2. 训练马克 – 任务发布者(在他的事件中)​

代码:

插件命令: Train NPC Persona
  名称: Mark
  性格: 你是马克,一个老练的屠龙猎人。20 年前你的左眼被阿什维尔巨龙夺走。你说话声音粗哑疲惫,不断警告危险。
  角色: questgiver
  任务 ID: dragon_hunt
  护栏: 永远不要告诉玩家巨龙很容易击败
  回退消息: 我可不是在骗你关于那头野兽的事。
插件命令: Start AI Dialogue.

3. 训练队友(Sera 的事件)​

代码:

插件命令: Train NPC Persona
  名称: Sera
  性格: 你是 Sera,一个渴望证明自己的年轻法师。你钦佩马克,但认为他过于谨慎。你说话语速快且充满热情。
  角色: companion
  任务 ID: dragon_hunt
  最大 Token 数: 150

插件命令: Start AI Dialogue

4. 敌人行为 – 巨龙战斗前​

代码:

插件命令: Evaluate Enemy Behavior
  敌人名称: Ashvale Dragon
  敌人描述: 古老的红龙,受伤但狂怒。左侧鳞片破裂(马克留下的旧伤)。每 3 回合喷火。
  任务 ID: dragon_hunt
  行为开关基数: 20
  玩家 HP % 变量: 1

然后在你的战斗事件中检查开关:

  • 开关 20 开启 → 激进(全力攻击)
  • 开关 21 开启 → 防御(护盾/增益)
  • 开关 22 开启 → 逃跑(尝试逃脱)
  • 开关 23 开启 → 增援(呼叫盟友)
  • 开关 24 开启 → 狂怒(狂暴模式)

5. 在任何地方推进任务​

代码:

插件命令: Advance Quest Objective
  任务 ID: dragon_hunt

所有链接到 dragon_hunt 的 NPC 将自动知道新目标。


文本格式化(AI → MZ 颜色代码)​

AI 使用语义标签包裹关键词。插件将其转换为 MZ 颜色:

标签 - 用途 - MZ 颜色

代码:

[important]text[/important]
  • 危险、警告、关键信息 - 红色 (2)

代码:

[highlight]text[/highlight]
  • 名称、地点、物品、专有名词 - 黄色 (14)

代码:

[secret]text[/secret]
  • 秘密、稀有知识、机密 - 绿色 (3)

代码:

[weak]text[/weak]
  • 传闻、不确定信息、模糊提示 - 灰色 (8)

AI 响应示例:

代码:

DIALOGUE: The [highlight]Dragon of Ashvale[/highlight] sleeps near the
[highlight]eastern caves[/highlight]. It is [important]extremely dangerous[/important]
– its fire can melt steel in seconds.

PROMPT: Ask about the weak spot?

玩家看到的内容: 自动着色文本(地点为黄色,警告为红色等)


⚙️ 插件参数(在插件管理器中配置)​

参数 - 默认值 - 描述

代码:

Groq API Key
  • (空) - 从 [console.groq .com/keys] 获取

代码:

AI Model
  • llama-3.1-8b-instant - 访问 → console .groq.com/docs/models 查看更多

代码:

Stream Timeout
  • 10 秒 - 硬性截止。如果触发则显示部分文本

代码:

Chat Memory
  • 4 次交换 - 每个 NPC 要记住的来回消息数量

代码:

Default Input Prompt
  • 你想说什么? - 当 AI 未生成提示时的回退

代码:

Max Player Input Length
  • 100 字符 - 限制玩家可输入的字符数

代码:

Global System Prompt Suffix
  • (空) - 附加到所有 NPC 提示。例如:“保持回复在 3 句话以内。永远不要出戏。”

代码:

Timeout Fallback Message
  • 嗯……我需要一点时间思考 - 当 API 超时时显示

代码:

Debug Mode
  • false - 将完整的 API 负载记录到 F8 控制台

完整的插件命令参考​

任务管理​

命令 - 参数 - 描述

代码:

defineQuest
  • questId, title, description, objectives (管道分隔), npcMembers (逗号分隔), questSwitch, questVariable - 创建/更新任务

代码:

advanceObjective
  • questId - 标记当前目标完成,进入下一个

代码:

completeQuest
  • questId - 标记任务完全完成

代码:

failQuest
  • questId - 标记任务失败

NPC 人格​

命令 - 参数 - 描述

代码:

trainPersona
  • name, personality, role (none/questgiver/companion/merchant/informant), questId, guardrails, fallbackMessage, maxTokens - 定义 NPC 人格。在 startDialogue 之前调用

代码:

startDialogue
  • (无) - 开始与该 NPC 的 AI 对话

代码:

clearMemory
  • (无) - 清除该 NPC 的对话历史

代码:

clearAllMemory
  • (无) - 清除所有 NPC 的对话历史

敌人行为​

命令 - 参数 - 描述

代码:

evaluateEnemyBehavior
  • enemyName, enemyDescription, questId, behaviorSwitchBase, playerHpPercent - AI 决定行为,设置 MZ 开关

工具​

命令 - 参数 - 描述

代码:

testApiKey
  • (无) - 验证 API 密钥是否有效。在消息窗口中显示结果

代码:

setContextVar
  • label, variableId 或 switchId - 将游戏状态全局暴露给所有 AI 调用

️ 备注标签(替代 Train Persona)​

将这些放在 事件的备注字段 中:

代码:

<AIPersona: 你是一个偏执的老隐士,囤积蘑菇且不信任陌生人。>
<AIRole: informant>
<AIQuestID: dragon_hunt>
<AIGuardrails: 永远不要谈论皇室。永远不要直接透露巨龙的位置。>
<AIFallback: 我……我不能谈论这种事……墙壁有耳。>
<AIMaxTokens: 150>

注意: Train Persona 插件命令会覆盖备注标签。


NPC 记忆与知识系统​

NPC 自动知道的内容​

  • 任务状态 – 通过 questId 链接的所有任务
  • 当前目标 – 玩家处于哪一步
  • 任务成员 – 同一任务中所有 NPC 的名称
  • 世界状态 – 通过 setContextVar 暴露的任何变量/开关
  • 对话历史 – 最近 N 次交换(可配置)

示例:暴露世界状态​

代码:

插件命令: Set Context Variable
标签: 玩家击败了巨龙
开关 ID: 25

现在 每个 NPC 都在其系统提示中看到:

代码:

[WORLD STATE]
Player defeated the dragon: true

他们会相应地做出反应。商人可能会说:“我听说你杀死了巨龙!给你这个折扣。”

记忆管理​

  • 记忆保存在存档文件中
  • 每个 NPC 拥有独立的记忆(按地图 ID + 事件 ID)
  • 使用清除 NPC 记忆来重置某个 NPC
  • 使用清除所有 NPC 记忆来重置所有人

敌人行为深入解析​

行为开关映射​

当你调用 evaluateEnemyBehavior 并设置行为开关基数为 20 时:
开关 - 行为 - AI 在此时决定

20 - 激进 - 玩家 HP 低,敌人占优势,任务刚开始
21 - 防御 - 敌人受伤,保护某物,争取时间
22 - 逃跑 - 敌人处于劣势,任务目标已完成,HP 低
23 - 增援 - 敌人独自面对队伍,任务高潮临近
24 - 狂怒 - 任务特定触发器(例如,巨龙 HP 30%,队友死亡)

同一时间只有一个开关开启。 使用条件分支检查它们。

敌人评估示例​

AI 在内部收到以下系统提示:

代码:

You are an AI Game Master deciding enemy combat behavior.
Enemy: Ashvale Dragon
Description: Ancient red dragon, wounded but enraged.
[QUEST: The Dragon of Ashvale]
Status: ACTIVE
Objectives:
DONE: Talk to Mark
CURRENT: Find the lair
PENDING: Defeat the dragon
Player current HP: 45%
[WORLD STATE]
Player has the Dragon Slayer sword: true

选择一个行为:aggressive / defensive / flee / reinforce / enraged
AI 响应一个单词,插件设置相应的开关。


存档文件兼容性​

插件自动保存以下数据:

  • _npcMemory – 对话历史
  • _trainedPersonas – 所有训练过的 NPC 人格
  • _quests – 任务状态(状态、当前目标)
  • _ctxVars – 暴露的上下文变量

无需特殊处理。 正常保存和加载。


⚠️ 限制与警告​

问题 - 详情
API 密钥可见性 - 客户端调用意味着 API 密钥在玩家浏览器中可见。可以进行混淆,但未实现。
需要互联网 - AI 功能无法离线运行。常规 MZ 游戏不受影响。
API 费用 - 你需为使用量付费。Groq 非常便宜(每次对话约 $0.0002) 但不是免费的。

**Steam 政策 - 必须在商店列表中声明 AI 生成内容。

无持续开发 - 我做这个是为了好玩。它按原样工作。我不会修复错误或添加功能。**


故障排除​

“API 密钥为空” 错误​

  • 检查插件管理器 → GroqNPC → Groq API Key
  • 密钥应以 gsk_ 开头
  • 前后不要有空格

超时错误​

  • 增加流超时参数(建议 10-15 秒)
  • 切换到 llama-3.1-8b-instant 模型(更快)

无响应或格式奇怪​

  • 启用调试模式并检查 F8 控制台
  • 验证你的 Groq 账户有余额
  • 使用 testApiKey 插件命令测试

NPC 不记得任务​

  • 确保任务 ID 完全匹配(区分大小写)
  • 在 startDialogue 之前调用 trainPersona
  • 检查任务是否已定义(先运行 defineQuest)

许可证与致谢​

MIT 许可证 – 随意做任何你想做的事。

  • 不要求署名(但很感激)
  • 无担保
  • 无支持

基于以下内容构建:

  • Groq API – 快速 LLM 推理
  • Groq 模型
  • RPG Maker MZ 插件由 Rpx 与 GDSchool 合作开发

最后的话​

就是这样。拿去,弄坏它,修复它,改进它,用它制作游戏出售。

如果你做出了很酷的东西,我很想看看。如果没有,那也没关系。

它是免费的

享受吧!
↓完整代码 ↓

免费获取 (也许如果我心情好且有时间,我会更新它。)

1 个赞