Metlivi 博客

NPC 应当如何回答剧本之外的问题?

当玩家向 NPC 询问对话剧本未涵盖的内容时,应让角色给出简短的回答,既符合他们所掌握的信息,又道出无法进一步作答的原因。首先判断该信息是未知的、已知但隐瞒的,还是特意不可用的。然后保持人设进行回应;如果游戏需要说明系统限制,可以添加单独的可选说明。这样既能让玩家了解边界,又不会把毫无根据的猜测变成故事设定。

2026年9月27日8 分钟阅读阅读、艺术与文化作者:Metlivi Editorial Team
第 1 节

首先对问题进行分类,而不仅仅针对缺失的对话

“脱离剧本”描述的是创作层面的空白,它并不能说明角色究竟知道什么。把每一个缺乏设定的问题都当成同一种失误来处理,会导致令人困惑的回答:NPC 可能会对从未听说过的事情表现得闪烁其词,或者不小心泄露了游戏本打算保密的秘密。

请使用以下三个类别:

**未知(Unknown):** 角色没有可靠的信息。他们可能完全不知道该事物,或者知道其存在但无法回答具体问题。

**已知但隐瞒(Known but hidden):** 角色知道相关信息,但由于剧情条件、人际关系、个人选择或明确的保密要求,他们目前不能分享。“隐瞒”是一种故事状态,而不是为了暗示每次拒绝背后都藏着线索。

**禁止涉及的知识(Disallowed knowledge):** 答案超出了角色所处的世界观、身份或允许掌握的知识范畴。例如,中世纪的摆渡人不应突然解释现实世界中的软件发布。这与知道当地秘密但不愿透露的角色截然不同。

这些类别是一种设计辅助手段,而不是引用的对话研究所验证的分类体系。它们的价值在于实用性:每一类都对应着一种不同的真实回应。如果你的游戏有意让角色通过魔法、监视或特殊身份获取信息,应将其编入该角色被允许掌握的知识库中,而不是将其当作生成器可以随意猜测的特例。

第 2 节

基于真实设定构建得体的回答

一个实用的兜底回复通常包含三部分:确认问题涉及的事物、说明角色实际的认知局限,并在存在相关线索时提供下一步指引。这下一步指引可以是游戏中已有的某个人、某个地点或某项行动。如果没有任何线索,说明局限后即可打住。不要仅仅为了让台词显得有用而凭空捏造线索。

例如,假设玩家询问镇上的面包师:“北方隘口之外是什么?”如果面包师从未去过那里,一个合情合理的回应可能是:“从没去过那么远的北方。我的面粉都是从山谷运来的。”这一回答保持了人设,指出了局限,并转回到了面包师经验范围内的事物。面粉的细节只是为了说明生活背景,并非线索;在正式发布的游戏中,应使用角色和世界观设定中已有支持的细节。

如果面包师知情但有所隐瞒,回答应当体现这种状态,而不是假装不知情:“我知道你说的是哪条路。但我答应过不谈论是谁在使用它。”这句台词表明了界限,同时没有给出被隐瞒的答案。只有当角色的知情情况和沉默理由在游戏状态中真实存在时,才可以使用这种拒绝方式。

如果问题询问的是超出角色所处世界或身份的事物,应清晰表明其认知边界,而不要装作这是什么剧情谜团:“我不知道什么是‘云服务器’。那是某种气象站吗?”具体的措辞取决于背景设定和语气语调。避免让大模型的通用知识泄漏到角色的声音中,仿佛那是角色的亲身经历或世界常识一样。

相关学术研究支持了这一普遍的设计问题,但并未提供一种包治百病的游戏解决方案。Shrivastava 等人于 2021 年发表的 ACL 短篇论文描述了对话系统中针对无法回答的对话查询的情境化兜底回复,利用规则以及在合成问答对上微调的 Transformer 模型;其研究范围并非叙事类游戏中的 NPC。[阅读论文](https://aclanthology.org/2021.acl-short.13/)。Sadeq 等人于 2024 年发表的 EMNLP Findings 论文研究了虚构角色扮演,引入了包含 2000 多个角色和 7.2 万次访谈(含 1.8 万个对抗性问题)的数据集,并提出了旨在减少幻觉的 RoleFact。这与角色的认知边界密切相关,但并未证明某一种特定的兜底模式就能直接在已上线游戏中奏效。[阅读论文](https://aclanthology.org/2024.findings-emnlp.846/)。

第 3 节

将角色的回答与系统说明区分开来

角色可以在游戏世界内进行回答,而界面则负责解释发生了什么。当玩家可能将兜底回复误认为是预设剧情对话时,或者当游戏需要澄清自由提问存在局限时,这种区分会很有帮助。

例如:

**NPC:**“我从没听说过那个地方。你不如问问我老磨坊的事吧。”

**可选的界面提示:**“该角色无法回答此问题。”

界面提示应当描述交互本身,而不是否定角色的发言,也不是暗示有什么隐藏内容。尽量让其保持可选或不突兀;频繁弹出的系统消息会破坏场景氛围。如果玩家的问题已被系统理解但超出了支持的交互范围,直接说明即可。如果系统根本没能理解该问题,不要将解析失败表现为角色本人的无知。这两种情况截然不同,可能需要采用不同的措辞。

一条实用的回复规则是:用角色的声音传达故事真相,用系统界面传达交互边界。不要让符合人设的台词背负角色不可能知晓的技术性解释。反之,当存在简短、真实的带入角色的回答时,也不要使用通用的系统消息。

第 4 节

使用边界矩阵测试知识与故事状态

单个示例无法展现兜底机制是否尊重游戏状态。为每个重要 NPC 或知识来源建立一个小型测试矩阵。在每一行中,记录预期的回答类别、必须包含的事实、禁止透露的事实,以及是否应当出现界面说明。然后在不同的设定条件下测试同一个问题。

**NPC 对该事物毫不知情:** 回答应避免显得熟悉或提供具体细节。以符合角色的语气表达不确定或缺乏经验。

**NPC 知道该事物但不知晓所问的细节:** 宏观知识不能直接演变为精确的答案。陈述已知的内容,然后指出具体的认知空白。

**NPC 知道答案且可以分享:** 回答应符合当前的故事事实。给出有据可查的回答;不要仅仅因为玩家问法独特就触发兜底机制。

**NPC 知道答案但保密条件生效中:** 秘密依然不予公开,且角色不会虚假地声称毫不知情(除非人设本就如此安排)。在符合角色设定的前提下拒绝、转移话题或明确边界。

**保密条件失效:** 当剧情状态允许公开时,回复应随之改变。若玩家再次提问或游戏以其他方式揭晓,则提供新近解锁的信息。

**问题超出角色的世界观或身份范畴:** 现实世界或模型无关的知识不得作为事实渗入虚构世界。将该领域标记为不熟悉或无关,切忌凭空虚构游戏内的联系。

**对话系统无法解析该问题:** 语法/意图解析失败不应与 NPC 的无知混为一谈。使用清晰的交互层兜底提示,并可选择性地提供支持的提问示例。

**同一问题以多种方式提问:** 知识和保密规则不应依赖于某一种死记硬背的句式。在保持相同事实边界的同时,允许自然的措辞差异。

该矩阵是由上述区分衍生出的文案与 QA 方法;它并不是上述两篇论文中所述的实验。请在其中填入你自己的角色设定和实际的状态条件。测试中既要包含那些容易诱导系统用看似合理但无凭据的背景设定来“脑补”的问题,也要包含 NPC 理应能够回答的常规问题。两方面都要进行验证:防止泄露虚假设定固然重要,在答案已知时避免不必要的拒绝也同样关键。

第 5 节

在文案与实现层面使边界具备可测试性

将角色认知与世界真理分开管理。一份精炼的角色档案可以标明他们知道的事实、他们怀疑的事实、他们不知道的事实,以及在条件改变前不得披露的事实。如果游戏允许角色出现认知偏差,需注明不确定信念的来源或置信度。推测听起来就该像推测,而不是全知全能的事实。响应层应当接收相关的状态,并且只使用该状态下允许使用的事实。

对于每句兜底台词或生成的回复,需自查:

它是否说出或暗示了该角色不被允许知晓的事实?

它是否将“我不知道”与“我不会告诉你”混为一谈?

它是否无意间让缺失的回答听起来像是一个秘密或任务引子?

所建议的下一步行动是否已在游戏中存在且符合当下的情境?

如果该问题不被交互系统支持,玩家能否通过界面获知这一点,而不至于将其误认为是剧情对话?

如果某句台词未能通过这些检查中的某一项,请收窄其范围:移除没有依据的暗示,说明真实的局限,并仅保留已有明确支持的下一步操作。如果没有既真实可信又能增加价值的角色代入回答,简明扼要的拒绝或系统提示要远胜于凭空捏造的故事设定。

第 6 节

简明的决策流程

在审核脱离剧本的问题时,请按顺序进行以下核对:

**游戏能否解析该问题?** 如果不能,使用交互层面的说明,而不是将原因归咎为 NPC 的无知。

**所请求的信息是否在当前角色的认知范围内?** 如果不在,给出符合角色阅历或身份的认知边界回答。

**角色是否知情,且当前是否允许披露?** 如果角色知情但不能披露,使边界符合其动机与状态;切勿通过暗示泄漏答案,除非这些暗示是刻意设计的。

**角色能否提供有据可依的部分答案或实用的下一步行动?** 仅在这些内容已在游戏中有据可查时方可包含。

**玩家是否可能将兜底回复误认为是线索或预设的剧情转折?** 如果可能,在系统层面上澄清交互机制,或修改该台词。

我们的目标不是让每个问题都换来一个令人满意的世界观揭秘,而是让回答清晰易懂、符合角色的知识储备,且不会危及游戏的故事状态。一个设计良好的边界不仅能告诉玩家该 NPC 当前能回答什么,还能保持整个虚构世界的完整性。

相关阅读

继续探索这个主题