很多人想象中的 LLM NPC 是这样的:
给 NPC 写一段人设 prompt,再塞一点世界观、剧情背景、角色记忆,然后玩家就可以自由聊天了。
但真正做游戏,尤其是做有剧情、有任务、有推理、有结算的游戏时,问题完全不是“NPC 会不会说话”,而是:
它说的每一句话,到底是不是游戏系统承认的事实?

2023 年 10 月左右,我们尝试做过一个生成式 AI 剧本杀。基本形态是:有一个案件,有故事背景,有 N 个嫌疑人,玩家扮演类似侦探的角色,通过和嫌疑人聊天来发现线索、判断真伪,最后锁定凶手。
这个方向看起来特别适合 LLM。因为剧本杀本来就是对话驱动,NPC 也确实需要“像人一样”回答玩家的各种问题。但实际做起来,最先撞上的就是边界问题。
在推理游戏里,NPC 不是随便聊天的。它必须同时满足几件事:
第一,它要像一个人。
第二,它要能隐瞒。
第三,它有时要能撒谎。
第四,它不能乱编关键事实。
第五,它不能提前泄露真相。
第六,它必须在合适的时候把线索暴露给玩家。
第七,玩家发现了什么,系统要能记录下来,并影响后续推理和对话。
这几个要求放在一起,LLM 就很难处理。
我们当时的做法是:剧本还是由作者创作,然后把剧本拆成适合大模型扮演的角色资料。每个 NPC 有自己的人设、背景、语气、动机,以及一组它“知道”的事实。我们内部把这些事实做成 fact,也可以理解成 NPC 的记忆碎片。
理论上,NPC 只能引用自己已知的 fact。这样就能避免它胡说,也能避免它知道不该知道的事情。
但推理游戏有一个很麻烦的点:玩家是自由提问的。我们无法提前预测玩家会问什么。
比如玩家可能问:“你昨天晚上几点睡的?”
也可能问:“你和死者是不是有矛盾?”
也可能问:“你把你知道的都告诉我。”
还可能绕着问:“如果你不是凶手,谁最可能是凶手?”
如果 NPC 完全自由发挥,它就可能编出剧本里不存在的信息。对普通闲聊来说,这也许只是幻觉;但对推理游戏来说,这是致命的。因为玩家会把 NPC 的每句话都当成线索。如果它编了一句“我看到某某在楼梯口”,玩家可能就会围绕这个不存在的事实推理半小时。
所以我们做了一个线索发现系统:当 NPC 发言时,如果它引用到了某个 fact,就把这个事实作为“NPC 陈述过的线索”反馈给玩家;如果 NPC 聊偏了,没有命中 fact,就不显示成线索。
这听起来不错,但很快又遇到第二个问题:fact 无法天然原子化。
比如一个 fact 可能是:
“王某在案发当晚 9 点半经过书房门口,听到里面有争吵声,而且争吵双方是死者和李某。”
这句话里面其实有好几个信息点:
王某案发当晚经过书房。
时间是 9 点半。
书房里有争吵声。
争吵的一方是死者。
另一方是李某。
玩家可能只问出了“你当晚有没有去过书房附近”,NPC 的回答只暴露了第一个信息点。但如果系统直接把整个 fact 给玩家,就等于把后面的信息也提前送出去了。
于是我们又需要一个旁路 agent,去审查 NPC 的回复和 fact 的交集:NPC 这一轮到底说出了 fact 里的哪一部分?这部分玩家之前是否已经知道?是否应该加入玩家的已知线索集合?

这已经不是“一个 NPC 调一次 LLM”了,而是至少包含:
NPC 生成回复;
事实引用检测;
回复与 fact 的交集判定;
玩家已知信息更新;
线索 UI 展示;
后续 NPC 记忆状态更新。
而且 2023 年底的模型在这类任务上稳定性并不好。prompt 可以调到勉强可玩,但很难保证每一次都稳定。它有时漏判,有时过度提取,有时把模糊表达当成明确事实,有时又把已经说出来的东西漏掉。
更大的问题还在后面:内容工程量爆炸。
一个人类作者写 1000 字剧本,给人看是够的。因为人会自动理解上下文、动机、隐含信息、人物关系。但给 LLM NPC 用,这 1000 字远远不够。
你需要把它拆成一条一条 fact。
你需要标注每条 fact 属于哪个 NPC。
你需要标注这个 NPC 是亲眼所见、听别人说的、猜测的,还是故意撒谎。
你需要标注 NPC 之间的信息重叠。
比如 NPC 1 和 NPC 2 是好朋友,那么“他们互相认识并经常联系”这条信息就要同时进入两个 NPC 的记忆。
如果 NPC 1 知道 NPC 2 的秘密,但 NPC 2 不知道 NPC 1 已经知道,那又是另一种知情关系。
如果玩家先从 NPC 1 那里发现了信息 A,才能去逼问 NPC 2 暴露信息 B,那 A 就是 B 的前置条件。
如果某个信息解锁后,NPC 的态度、记忆、对玩家的信任度要变化,那还要改 NPC 状态。
如果某个 NPC 在某个阶段不应该再说旧版本的话,还要移除或降权某些记忆。
最后你会发现,所谓“给 NPC 接 LLM”,真正要做的是一张很复杂的记忆碎片图谱。
每个 fact 都可能有:
所属角色;
知情角色;
可信程度;
是否可撒谎;
是否关键线索;
是否可被玩家发现;
发现前置条件;
发现后的状态变更;
与其他 fact 的依赖关系;
是否允许 NPC 主动说出;
是否只能被玩家追问后说出;
是否会改变其他 NPC 的可见记忆。
这套系统如果不做,NPC 就会失控。
这套系统如果做了,工程量和内容量又非常大。

我们当时的感受是:你以为 LLM 会减少内容创作成本,但在严肃叙事游戏里,它往往只是把成本从“写固定对白”转移到了“拆 fact、建图谱、做状态管理、做审查系统、做测试验证”。
而且还有一个很矛盾的问题:
如果你把 NPC 约束得非常死,只允许它严格引用 fact,它就不像一个人,更像一个检索器。
如果你让它自由发挥,它就可能乱说,给玩家制造不存在的干扰信息。
而推理游戏最怕的就是“非设计意图的干扰信息”。
在普通开放世界游戏里,这个问题也存在,只是表现没这么尖锐。
比如一个村民 NPC,玩家问:“这个镇子以前发生过什么?”
如果 NPC 只是闲聊,答错一点也许没事。
但如果这个回答会影响任务、阵营、地图、道具、战斗、结局,那它就不能随便生成。
游戏不是聊天软件。游戏里的信息通常要服务于机制。
任务要能完成。
剧情要能推进。
玩家不能被不存在的线索误导。
状态要能保存和回放。
本地化要能做。
敏感内容和分级要能控。
QA 要能覆盖。
多人游戏里还要考虑公平性和一致性。
这些都是主流商业游戏非常在意的东西。
所以我认为,主流游戏迟迟没有大规模给 NPC 接入 LLM,不是因为大家不知道这个点子,也不是因为没人做 demo,而是因为 demo 和产品之间隔着一整套工程化鸿沟。
一个能聊天的 NPC 很容易做。
一个能稳定服务游戏目标、遵守剧情边界、正确管理信息披露、不会破坏任务结构、不会制造伪线索、还能被内容团队高效生产和 QA 的 LLM NPC,非常难。
尤其对剧情类、推理类、任务类游戏来说,LLM NPC 的难点不是“生成”,而是“约束”。
不是“让它说得更多”,而是“让它只在正确的时机,以正确的身份,说出正确粒度的信息”。
这也是为什么我现在看这件事,会更倾向于把 LLM NPC 理解成一种“受控的叙事 Agent”,而不是一个套了人设的聊天机器人。
真正可落地的方向,大概率不是把所有 NPC 都变成完全自由聊天,而是分层使用:
无关紧要的闲聊,可以让 LLM 自由一点。
任务型 NPC,要严格接入任务状态机。
剧情关键 NPC,要有 fact 图谱和披露控制。
推理类 NPC,需要额外的证据系统、玩家已知状态、线索审查、反幻觉机制。
战斗或队友型 NPC,则更像“语音交互 + 行为规划 + 游戏状态感知”,而不是单纯聊天。
所以问题的答案不是“LLM 不能用于 NPC”。
恰恰相反,LLM 很可能会进入游戏 NPC。
但它不会以很多人想象的方式进入:不是一个 prompt 解决所有问题,而是要嵌入到游戏原有的任务系统、叙事系统、状态系统、行为树、知识库、审核系统和内容生产工具链里。
从我的 2023 年实践看,最难的不是让 NPC 开口说话,而是让它在一个可设计、可验证、可结算的游戏系统里,像人一样说话,同时又不破坏游戏。
这才是为什么主流游戏到现在仍然非常谨慎的核心原因。
后来我们也发现,即使技术上勉强跑通,产品体验也未必成立。
23 年我们其实做了三四个剧本,也给玩家真实体验过,但最终数据并不好。一个很核心的问题是:问答式交互对玩家要求太高。
传统线上剧本杀之所以能推进,是因为多个人一起聊。玩家之间会互相提问、质疑、暴露信息、制造冲突,哪怕某个人不知道问什么,局面也会自然流动起来。
但 AI 剧本杀里,如果 NPC 只是被动回答,玩家很容易卡住。他不知道该问谁,不知道该问什么,也不知道当前回答里哪些是有效线索、哪些只是闲聊。玩家问得太泛,NPC 回答没价值;问得太细,又可能还没拿到前置信息;问偏了,剧情就停在那里。
我们当时前面已经被 fact、线索、披露边界、玩家已知信息这些问题搞得很复杂了,但还没有来得及设计一套真正的 NPC 主动披露信息和主动推进剧情的系统。
后来复盘看,一个可玩的 AI 剧本杀不能只是“玩家问一句,NPC 答一句”。它还需要 NPC 主动抛出可疑点、根据玩家进度调整披露内容、在玩家卡住时给弱提示,甚至让多个 NPC 之间产生对质、冲突和信息碰撞。
所以,LLM NPC 的难点不只是“能不能回答”,还包括“玩家知不知道该怎么问”。自由聊天看起来给了玩家无限可能,但对多数玩家来说,没有引导的自由也可能等于没有方向。
=====
25 年我们又把这个方向捡起来过一次。当时的想法是:既然 23 年最大的问题之一是人工拆 fact、做人设、做 NPC 记忆图谱太累,那能不能让 AI 自动完成这件事?
于是我们开始引入多 Agent 和更复杂的工作流:让 AI 先理解剧本,再拆解事实、抽取人物关系、生成 NPC 视角、标注知情边界、整理前置条件,最后自动生成可运行的记忆图谱。
但做着做着就发现,这并没有真正降低复杂度。
原来是人写剧本、人拆结构;现在变成了 AI 生成结构之后,以AI的效率人根本无法去进行审结构、修结构、验证结构。尤其是推理类内容,错一个信息边界,后面的体验就会崩。
再往后我们干脆更进一步:既然都已经让 AI 重新拆了一遍剧本,那不如一开始就让 AI 自己生成剧本、生成角色、生成线索、生成关系图谱。又增加了许多agent,可这样复杂度又继续上升,环节更多,不确定性也更多,终究是一地鸡毛。
最后复盘下来,感觉这已经不是我们小团队里一两个成员靠摸索就能轻松打穿的事情。它需要的不只是模型能力,而是一整套内容生产工具、叙事验证系统、自动化测试、人工审核流程和游戏设计方法论。
所以新的模型模型确实比 23 年强很多,但我的感受反而更明确了:
模型能生成内容,不代表它能生成一个可控、可测、可玩的游戏叙事系统。
AI NPC 的难点,可能不只是怎么把 LLM 接进游戏,而是它应该是一种什么样的“新游戏”。
作者:莫邪
链接:https://www.zhihu.com/question/11416391656/answer/2054940208743854941
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
评论(0)
暂无评论,快来抢沙发~
评论功能仅对会员开放,请先登录
登录