楼主

AI叙事难以落地?聊聊“世界状态外置”与“NPC失忆”的机制设计

予则予规49 浏览0 回复

这不是一个 AI 对话 Demo。

这是一个 AI 叙事实验。区别在于:AI 对话 Demo 里,AI 只负责把写好的剧情演出来;而这个 Demo 里,AI 根据当前世界状态,自己推导 NPC 想说什么、想做什么、会给玩家什么任务。叙事不是写好的,是从状态和性格里长出来的。

当前生成式叙事无法落地的核心瓶颈,不是 AI 写不出好台词,而是 LLM 的长期记忆不可靠。对话越长,角色信息越容易被淹没;固定上下文窗口无法维持长期一致性;LLM 经常混淆不同角色的状态。结果就是叙事碎片化、角色崩坏。

我的思路是:不让 AI 记,让世界记。


一、机制:世界状态外置 + NPC 记忆重置

世界以固定周期软重置,循环结束时,NPC 的历史记忆清空,系统记录一组结构化标签(财富、性格、关系等),而非对话历史。每个循环开始时,AI 只读取当前标签,重新生成 NPC 的“当前身份卡”。NPC 以为自己一直如此。

玩家是唯一能感知时间层的人,记得上一个循环发生了什么。NPC 活在永恒的现在,玩家活在流动的历史里。


二、Demo 验证

Demo录制视频如下

https://www.bilibili.com/video/BV16LaV6HEXx

Demo 中,铁匠被我抢了钱变穷。循环后他不记得被抢,只说“我一直很穷”。但世界状态是继承的——钱是真的转移了。玩家记忆区记录着“我抢了铁匠的钱”,NPC 永远不知道。(视频中我的解说有点问题,不要在意,关注NPC状态标签即可)

状态分三类:

  • 世界状态(跨循环继承):财富、位置

  • 当前循环状态(循环后清零):好感度,因为 NPC 不记得玩家

  • 玩家记忆(唯一继承):真实历史


三、这不是脚本,是 AI 从状态里推导出来的

有人可能会说:这不就是状态机加 AI 写台词吗?

不是。区别在于:

  • NPC 对自己处境的解释:铁匠为什么穷?不是写好的。AI 根据“财富=穷”和“性格=好赌”,生成“我一直把钱赌光了”。换个状态,比如“财富=富”,同一个好赌性格,AI 会说“我最近手气好,赢了不少”。同一状态每次生成也不一样。

  • 任务内容:Demo 里有一个“请求任务”按钮。点击后,AI 根据当前世界状态(谁富、谁穷、性格、关系)推导出一个任务。同一个铁匠,穷的时候请求你帮他赌一把,富的时候可能请求你帮他盘个铺子。任务不是预设的,是从状态和性格里长出来的。

  • 交互按钮是固定的,叙事内容是生成的:抢钱、问候、请求任务,这些是游戏操作边界,任何游戏都有。但按钮背后发生什么——NPC 说什么、想做什么、给你什么任务——全部由 AI 根据当前状态生成。

我写死的只是“你能做什么动作”,不是“世界会怎么回应”。


四、技术上怎么实现

AI 上下文永远只包含当前身份卡,长度恒定,不随游戏时长增长。循环重置后,旧细节不需要被记住。一致性从“算法难题”变成“数据管理问题”。

这套机制适合“NPC 不需要记住具体历史”的叙事。如果故事要求 NPC 引用过去事件、积累复杂关系,需要靠标签编码或世界回声来解决,而不是靠 LLM 记忆。


五、下一步

想验证的是:AI 能否从当前世界状态里推导出任务,而不是执行写好的脚本。任务不是预设的,是从状态和性格里长出来的。

这个 Demo 还很粗糙,但它验证了最核心的一点:生成式叙事可以不依赖 AI 的长记忆。 欢迎讨论,求反馈。

回帖

加载中
回帖加载中…

写回复