AI 游戏记忆应该跨章节持久化吗?关于保留与重置的实用设计
对于分章节的游戏,AI 记忆仅应在代表游戏意图在后续产生影响的持久事实时,才跨越章节边界。应将玩家的承诺、确立的关系以及已确认的世界事实保存在结构化的、由创作者编写的记录中。让 AI 检索该记录中少量的相关视图,以及任何特意保留的回忆。重置特定于场景的上下文、临时目标和即时细节,除非下一章节明确需要它们。游戏的保存状态(存档)应始终保持权威性;生成的对话可以描述该状态,但不应悄悄重写它。
将持久的正典与场景记忆分开
“记忆”可以指代不同的事物:事件的记录、对这些事件的总结或解释,以及游戏视为真实的事实。将它们混为一谈会使章节转换的逻辑难以理清。例如,一个角色可能听说过一个传闻,但这个传闻不应仅仅因为 AI 自信地回忆起它,就自动成为已确认的世界事实。
一种实用的设计是保留两个相关的层级。第一层是由游戏拥有的正典状态:结构化的事实,例如 promised_to_return: true、gave_map_to: Mira 或 bridge_status: repaired。这些是通过游戏规则或显式创作来保存和更改的。第二层是 AI 检索视图:为形成回应而提供的精选事实、记忆和当前场景上下文。这个视图可以很简洁且针对特定角色,而不会演变成存档文件本身。
这一建议属于架构层面的推论,并非任何单一引擎所保证的功能。叙事脚本系统已经能够区分可在整个故事中读取的故事变量与作用域更窄的临时值;例如,Ink 分别记录了全局变量和临时变量。它的运行时还提供了一种序列化和恢复故事状态的方法。这些能力提供了一个有用的模型:审慎地表示状态,然后决定每个值需要什么作用域和持久性。Ink’s variable and logic documentation 以及 Ink’s runtime saving and loading documentation
决定哪些内容有资格进入跨章节记录
对于每条候选记忆,请问:后续场景是否可能正当地依赖于这一事实,并且是否存在明确的游戏事件或创作规则可以确认它?如果是,请考虑将其存储为持久状态。玩家为同伴选择的名字、已履行的承诺,或者某扇大门是否被打开,只要故事后续会用到,都可以符合条件。只要底层事实能够被清晰表达,就存储一个值及其作用域,而不是无限制的文本实录。
一条实用的记录可以标识主体、事实、来源事件和持久化作用域。例如:主体:Mira;事实:玩家分享了地图;来源:chapter_2_choice_14;作用域:campaign。来源事件有助于解决冲突:如果后续生成的台词声称玩家把地图送人了,但记录的选择却并非如此,游戏可以优先采用事件记录。此模式是一种设计建议,并非上述工具强制要求的格式。
将不确定或未证实的内容区分开来。“守卫怀疑玩家拿走了钥匙”和“玩家拿走了钥匙”是不同的事实。章节结束后,角色可能会记住某种怀疑,而正典世界记录仍表明钥匙留在原处。如果后续对话需要保留这些区别,请使用诸如 rumor(传闻)、observation(观察)、inference(推断)和 confirmed event(已确认事件)等标签。
重置属于当前场景的内容
场景状态通常包括当前的对话主题、临时目标、最近的几次交互、局部走位以及短暂存在的细节(如当前哪扇门是开着的)。这些细节可能有助于 AI 回复下一句台词,但它们很少需要成为战役记忆。请在离开场景时清除它们,或者根据下一个场景的预设配置重新构建它们。
这个边界至关重要,因为持久化具有不同的含义。Unity 的数据持久化教程区分了在同一次会话期间跨场景跟随玩家的数据与跨会话保存和恢复的进度;它还指出,除非游戏明确携带,否则场景中创建的数据在切换到另一个场景时通常会丢失。因此,章节转换是一项审慎的迁移决策,而不是自动保留每个活动值的理由。Unity Learn: Implement data persistence between scenes
可以尝试四步转换流程:定稿已确认的章节事件;更新战役的正典记录;丢弃临时的场景上下文;然后结合下一章节的预设配置及相关的持久事实构建 AI 上下文。这限制了陈旧细节泄露到新场景中,同时保留了故事明确支持的连贯性。
保持由创作者编写的保存状态的权威性
在章节开始时,将当前状态作为只读上下文提供给 AI,用于旁白和对话。如果玩家的行为可以改变持久事实,请让游戏根据自身规则验证该行为,并通过常规的状态变更路径更新保存记录。将模型输出视为提议的台词或动作,而不是事件已经发生的证明。这种分离是从区分保存状态与生成文本的需求中推导出的设计建议;它应该在游戏自身的架构中进行实现和测试。
叙事研究中有一个有益的先例:“生成式智能体”(Generative Agents)论文描述了存储经历、综合反思并动态检索选定记忆以指导行为的过程。这支持了利用检索和综合来影响智能体思考内容的方法。但这并不能证明生成的回忆应该成为正典游戏状态。这一区别非常重要:摘要可以成为有用的上下文,但它仍然是可修正或不完整的。Park 等人,《Generative Agents: Interactive Simulacra of Human Behavior》
为了实现可重现的存档,请持久化游戏所需的结构化事实和故事运行时状态以备恢复。Ink 的运行时文档展示了将故事状态序列化为 JSON 并重新加载的过程。为了方便起见,生成的摘要也可以一并存储,但在加载时应针对结构化记录进行重建或核对;切勿让陈旧的摘要推翻较新的已保存选择。Ink runtime: Saving and loading
让玩家能够感知到边界
玩家不需要看到内部的记忆结构,但他们应该能够理解哪些选择被延续了下来。在虚构世界中自然体现结果:同伴回忆起地图,或者后续场景呼应了早前的承诺。当存档或章节回顾提供了合适的展示位置时,用简明的语言总结几个有重要影响的已确认事实。避免暗示每一句即兴台词都已成为永久的正典。
当游戏提供途径时,给玩家一个纠正重大错误的机会:重新加载存档、重温决策,或使用显式的修正交互。如果 AI 角色记错了某件事,对话不应强迫玩家接受该错误作为新的世界事实。是否存在此类修正选项属于产品决策,但其底层原则是稳固的:记忆中的说法与保存的事件不能互换。
用具体案例测试章节转换
围绕游戏实际追踪的事实建立一个简短的转换检查清单。对于每种情况,检查保存的记录以及章节更改后提供的 AI 上下文。
已确认的玩家选择会持久保留,并可在创作者编写的内容使用它的下一章节中产生影响。
传闻或角色推断仍被标记为不确定,而不是直接变成已确认的事件。
临时的场景目标和近期的对话细节会消失,除非下一个场景明确需要它们。
重新加载的存档会恢复相同的正典选择,即使 AI 此前生成过自相矛盾的文本叙述。
没有相关联系的新章节不会仅仅因为记忆存在就接收到无关的记忆。
这些检查属于一种建议的诊断方法,而非报告的实验。它们使发现两个常见缺陷变得更加容易:连续性丢失(持久事实消失)和记忆泄漏(旧场景的细节出现在本该重置的上下文中)。当两者中任何一种发生时,在尝试用更长的提示词修复之前,请先检查持久化作用域和上下文构建步骤。
分章记忆的精简法则
当创作者编写的游戏能够命名某个事实、确认其来源并为其定义后续用途时,对其进行持久化。当个人回忆能够增添角色性格或连贯性时,将其保留为检索到的上下文,同时保持其不确定性和出处。在边界处重置场景局部状态。在每个阶段,让保存的、创作的游戏状态决定什么是事实;让 AI 记忆帮助角色对这一事实做出回应。
