






















日前微软研究院在 arxiv 发布了一篇名为 Player-Driven Emergence in LLM-Driven Game Narrative 的论文,讨论了将大模型 LLM 应用在玩家和 NPC 中的对话,以此对游戏中的对话和叙事结构提供更多的灵活性和丰富度。
论文中的研究者门开发了一款用 TextWorld + GPT-4 实现的名为 Dejaboom! 的文字解密游戏。
在游戏中玩家会重复经历相同的一天。每天从家里醒来,通过探索村庄或和NPC对话来消耗步数并尝试。当步数达到30步时,炸弹会爆炸,爆炸后会回到一天的开始并重置村庄和NPC。
下面是这个游戏的地图:

这个游戏包括了6个地点:家、公园、图书馆、餐厅、铁匠铺和市政厅,还有了两个隐藏房间,分别位于铁匠铺和图书馆。隐藏房间需要特定事件来触发,并且炸弹就藏在铁匠铺的隐藏房间中。
玩家可以自由移动,同时可互动的物品有两类:拆炸弹的组件(家里的水桶、公园的红石火炬、铁匠铺里的剪刀)和 提供线索的物品(图书馆里的拆弹器工具箱、市政厅里的地图)。
除了上述外,游戏还设置了5个NPC角色:
这里 NPC 的对话内容是通过 GPT-4 生成的,每个 NPC 都被赋予了一个背景故事、个性和对话触发的一系列条件。
对于玩家来说,主要有两个目标:
如下图。用户的命令首先会通过 GPT-4 被意图识别(function calling) 为用户动作 或 与NPC对话。
如果用户触发了一个动作,这个动作会被传递给一个固定的游戏代理,可以理解为一段固定的执行逻辑。然后会将这段逻辑执行的结果传递给 GPT-4, GPT-4 会根据执行结果生成一个比较合适的游戏反馈。例如用户“追逐小鸟”,游戏内部的执行逻辑认为这个动作无法识别或者是非法的,然后将这个信息交给 GPT-4, GPT-4 总计后返回 “你试图追逐鸟儿,但什么也没发生”。
如果用户触发了一段对话,这个对话会给到 GPT-4,需要注意的是在这里调用 GPT-4 的时候会根据用户对话的 NPC 人设、游戏背景、和 NPC 的对话历史等信息来生成适当的 NPC 对话。例如用户对厨师 Maria 说 “我可以看看你的菜单吗”,厨师 Maria 根据GPT-4生成的回复是 “当然可以!我们今天的菜单特色是意大利-美国融合菜系的美味选择”。

论文团队找了28个人设限1小时体验游戏。经统计,玩家平均做了75步,按照30步炸弹爆炸的设定,每个玩家平均完了2.5次。28个玩家中有六人解除了炸弹。
我们收集了一些玩家称赞的点:
玩家也指出了一些改进点:
论文作者分析了 28 位玩家的日志,这些日志包括玩家在游戏中的行为、游戏反馈、对 NPC 的发言、NPC 的回应,并用 GPT-4 将游戏日志转化为叙事图。叙事图是一个有向无环图,每个节点代表玩家在游戏中的策略,有向边代表游戏中的时间推进。
通过玩家的叙事图和游戏设计师预期的叙事图对比,以此发现在使用了大模型的情况下玩家创建的新叙事节点,这被称为叙事的涌现。
以下是论文作者们整理的有向无环图。其中蓝色节点代表设计师预期内的游戏叙事,绿色节点代表玩家创建的新节点,即涌现的节点。
对于具体如何构建叙事图,可以详看论文 https://arxiv.org/abs/2404.17027

目前 LLM 大多被用在文本游戏中,例如本论文主要集中在辅助用户游玩上,LLM 的灵活性让 NPC 的回答更多样、玩家的选择更自由等等。对于论文中提到的 LLM 延迟的问题,也许可以通过量化模型来解决;对于前后不一致的问题,目前越来越多的 LLM 开始支持超长上下文,基本也不会是问题。
除了我这里说到的在线任务,目前也有很多研究员在探索离线场景,如生成 NPC 脚本、叙事场景、对话、游戏关卡,或者用 LLM 驱动 NPC 等等。
最后个人感觉也许 LLM 在 rogue-like 类型的游戏也许会有一个不错的发挥。
https://github.com/microsoft/TextWorld
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。