传统游戏 NPC 的对话大多是写死的台词树:玩家选一句,NPC 回一句,分支有限,重复游玩几次就把台词背熟了。生成式技术带来的变化,不是让 NPC 胡乱自由发挥,而是让同一段对话在不同情境下有不同的说法,同时守住人设和剧情边界。

第一个关键是记忆与状态。自然的对话离不开上下文:NPC 应该记得玩家上次帮过它、欠它钱、或者刚吵过架。实现上通常维护一份结构化状态,包括关系值、已知事件、当前任务进度,对话生成时把这份状态作为约束条件喂给模型。没有状态的生成对话,聊三句就会露馅,前后矛盾比台词重复更破坏沉浸感。

第二个关键是人设约束。每个 NPC 要有稳定的说话方式:口头禅、知识边界、性格倾向、说话长短。做法是给每个角色写一份简短的人设卡,并在生成时强制参考。人设卡不是越长越好,关键信息控制在几条以内,太多约束反而会让输出变得僵硬。玩家能感知到的,是这个 NPC 说话一直像同一个人,而不是它背过多少设定。

第三个关键是剧情护栏。自由生成最大的风险是说漏剧情、剧透未解锁内容、或者编造与世界观冲突的设定。常见做法是分层:剧情关键对话仍用人工写好的台词,只在闲聊、打招呼、重复互动这类低风险场景开放生成;生成内容还要过一层校验,检查是否提到了未解锁的专有名词,命中就回退到安全台词。这不是限制创意,而是把生成放在不会翻车的位置。

第四个关键是延迟与成本。对话是实时交互,玩家不会等几秒才听到回应。工程上常用的办法是流式输出、预生成常见开场白、把长回复截短到一两句。NPC 的台词本来就不宜太长,短而贴切的回应比长篇大论更像真人,也更省算力。

最后是评测。NPC 对话好不好,不能只看单句通不通顺,要看连续对话:十轮聊下来人设稳不稳定、有没有前后矛盾、有没有说漏剧情。测试时可以模拟不同性格的玩家反复对话,记录矛盾点和护栏触发次数,再针对性修人设卡和约束条件。生成式对话的终点不是让 NPC 无所不谈,而是让它在该说话的时候说得像人,在不该发挥的时候闭嘴。