我们非常不喜欢那些在依赖互动的游戏中(比如《星露谷物语》,一旦和NPC结婚后对话选项就所剩无几;或者《模拟人生》,大部分新鲜感都来自戏剧性)里NPC显得平淡且缺乏互动性。我们研究了角色AI和类似的应用程序,想看看人们到底希望从NPC那里得到什么。
于是我们构建了一整套引擎来探索各种可能性,为了测试它是否可行,我们开始围绕它制作一款游戏。
每个NPC都有一套基于关键记忆的预设背景故事,这些记忆会随着与玩家或周围世界的每次互动而更新。他们对事物有自己的信念,信心水平从根植于性格到存疑,并且会随着新信息的出现而改变。NPC最初也被限制只能知晓被允许知道的信息——他们只会捕捉自己实际经历、看到公开张贴或玩家直接告知的内容,这样就不会意外让某个NPC提及他们从未参与过的事情。信任度则独立运行,并影响对话的走向。
AI调用会生成回复并提议一系列变更:增加信任、改变情绪、可能揭示一段记忆或秘密,然后由独立的验证器逐一检查每个提议的变更,在应用之前进行验证。目前,如果AI越界,比如主动透露一个它还没资格透露的秘密,那部分内容会被直接删除,回复中不包含它。我们正在将其改造成一个反馈循环——让AI知道哪些提议被拒绝了,并围绕这些信息起草回复,而不是让变更直接消失。
NPC的目标也与信念分开独立存在。每个NPC会在三个时间跨度内追踪目标:本周、今年、有朝一日,同时还有一个已经放弃的目标列表。因为一个角色不再想要什么,往往比他们当前想实现什么更能揭示其性格。
这也是为什么NPC不会在你每次打开聊天时都感觉像重置了一样。每次交流都会被记录下来,包括交流前后NPC的状态。这样一来,信任、情绪和目标会持续累积并随时间变化,而不是每次都由AI即兴发挥一个性格(比如某些AI伴侣应用那样)。性格本身几乎不变(由我们编写),但建立在性格之上的所有内容都可以变化,因此感觉更可信。
这一切还可以在背后运行。也就是说,NPC可以与其他NPC进行对话,讨论发生的事情、你的行为表现、你是否撒谎、或者在工作中偷吃了谁的午餐。我们这样做是为了增强关系变化和谣言传播的可信度。我们通过让两个NPC生成一个关于他们交流的虚构记录,并将其存储在双方的记忆中来实现这一点——但对玩家的影响基本是相同的。
我在图片中简化了一些内容以便阅读,实际代码比这更混乱。
有没有人也尝试过构建类似的东西?你们在AI NPC方面遇到过什么问题(比如遗忘事物、过早剧透、放弃承诺),最后是怎么处理的?
评论 (0)