InkQuest

InkQuest

一款面向地图制作者和模组包开发者的叙事优先任务引擎——通过数据包和指令完全定义具有成功与失败结局的分支任务。

冒险

InkQuest — 叙事任务引擎

任务书与 HUD

使用你已经熟悉的工具,为 Minecraft 构建故事驱动的任务。

InkQuest 是一个轻量级任务引擎,适用于 Minecraft 1.20.1(Fabric),专为地图作者、整合包开发者和叙事设计师打造。它使用记分板、Minecraft 谓词和数据包函数——这些你早已熟悉的系统。无需学习专有任务类型。

任务具备真正的失败状态、逐阶段推进,并根据结果产生分支。有意义的抉择。不同的结局。


玩家体验

  • 任务书 — 按 J 键或右键点击任务书即可浏览所有任务:进行中、已完成和已失败。每个任务都显示标题、当前任务、描述和进度。
  • HUD 追踪器 — 锁定一个任务,使其任务目标和进度条始终显示在屏幕上,并伴有流畅的阶段转换和完成动画。
  • 任务卷轴 — 一种实体物品,右键点击即可开始任务。可通过战利品表、交易或 /give 分发——玩家只需右键点击,无需输入任何指令。
  • 新任务通知 — 接取新任务时 HUD 会弹出提示,可按下一个按键立即打开。

InkQuest 的工作原理

阶段,而非复选框。 任务按顺序逐阶段推进。每个阶段都有一个必需任务和任意数量的可选任务。当必需任务完成时进入下一阶段;可选任务则增加支线内容、额外奖励或叙事分支。

真正的失败。 任何任务都可能失败——失败会立即结束当前任务。世界可以根据不同结果做出不同反应。

分支与记忆。 任务通过依赖关系相互解锁。不同的完成方式会开启不同的任务链。完整的叙事树,无需编码。

你已熟悉的条件:

条件 检查内容
score 记分板目标阈值——附带进度条
global_score 共享的全局计数器,多玩家间安全使用
predicate 任意 Minecraft 谓词:位置、物品栏、NBT、进度……
all / any / none 布尔组合,可任意深度嵌套
optionals 当前阶段中已完成足够多的可选任务

生命周期钩子。 在任务的不同节点运行 mcfunction 文件并分配记分板标签:阶段加载时、激活后每 tick、激活_且_被锁定时每 tick、取消激活时、成功时、失败时。

基于这些基础元素——限时挑战、护送任务、全服共享计数器的击杀目标、阵营竞赛——全部使用你已经理解的系统构建。


面向地图作者和整合包开发者

两种定义任务的方式:

  • 数据包(data/<命名空间>/quests/<id>.json)—— 可版本管理、可移植、可源码控制。随你的项目一同发布。
  • 指令(/quest new)—— 无需离开游戏即可创建任务。适合快速迭代:在游戏中构建任务,连接到命令方块,立即测试。

完整指令 API:

  • /quest give、complete、fail、skip、pin、unpin、drop、modify、new
  • /execute if quest —— 在命令方块和函数中检查任务和任务状态
  • /quest query —— 检查任务进度、任务状态和阶段完成情况——无论任务使用何种条件类型

手动按钮。 为任意任务添加成功/失败/跳过按钮,让玩家在任务书中直接做出决定。

可重复任务。 一个标志即可允许从头重玩已完成的任务——每日任务、阵营任务、任何周期性内容。

游戏规则:

  • doQuestBookItemCheck —— 需要手持任务书才能打开(让玩家寻找或制作任务书)
  • allowManualQuestPin —— 锁定玩家侧的锁定功能,仅允许通过指令控制 HUD

本地化。 所有标题和描述均支持完整的 Minecraft JSON 文本——颜色、格式、translate 键。在资源包中添加语言文件后,任务文本会自动适应每位玩家的语言。

资源包覆盖。 所有模组纹理均可替换。合成配方可通过单个数据包文件覆盖。


快速上手

/quest new tutorial:intro "First Quest"
/quest give @s tutorial:intro pin
/quest modify tutorial:intro tasks add required step1 "Find the ruins"

三条指令,一个可用的已锁定任务。添加记分板条件、生命周期钩子或链接到下一个任务——它可以从这里无限扩展。

→ [完整文档] · [GitHub] · [问题追踪]


为什么选择 InkQuest

大多数任务系统提供一个预设任务类型的菜单。InkQuest 则提供 Minecraft 本身已有的工具——记分板、谓词、函数、标签——并将它们组合成一个没有硬编码限制的任务引擎。

任务以 JSON 格式保存,可随项目进行版本管理,并以标准数据包形式发布。

安装模组,放入数据包——你的世界便有了故事。


需要 Fabric 1.20.1。无需额外依赖。