游戏 NPC 对话
玩游戏的一个必要过程,就是和 NPC 对话,领取任务,获取线索。有趣的游戏,会根据用户和 NPC 交流时的不同选择,触发不同剧情走向。甚至多个 NPC 之间还能有罕见的隐藏剧情,等待用户发掘。可以说,跟 NPC 的选择性对话是玩游戏的一大乐趣。有了 ChatGPT,我们可以尝试让它来扮演游戏 NPC,或者更进一步,推动整个剧情的前进。
国内外游戏厂商都已经开始这方面的尝试。《Mount & Blade II: Bannerlord》游戏展示了一段原型视频,给 NPC 对话接入 ChatGPT。为了保证真实性,他们会通过额外开发的故事引擎,向 ChatGPT 提示一些重要信息,包括被选中交谈的 NPC 的派系、地点、职业、附近事件、统治者等。甚至还会修改一些游戏内部引擎,让所有 NPC 的脸和嘴都能动起来,和 ChatGPT 输出的文本对上口型。网易也宣布旗下的手游《逆水寒》会接入 ChatGPT,不但用于生成 NPC 对话,还包括随机任务和关卡地牢。为了让 AI 游戏更加名副其实,网易甚至连 NPC 的脸型、语音也都交给了 AI 完成。
完整的游戏 AI 设计当然不在本书讨论范畴以内。不过我们可以脱离 3D 游戏大作的各种表象,从文字冒险游戏这种最原始、但核心要素齐全的场景,来大致体验一下,ChatGPT 如何嵌入到游戏的 NPC、任务和关卡中。
文字冒险游戏是互联网早期的一种古老游戏方式。它们完全由文字组成,没有任何图像或声音。玩家通过阅读故事描述和输入命令来进行交互,探索虚构的世界和解决谜题。文字冒险游戏的发明者,理查德巴图甚至根据自己的 MUD 运营经验,总结出了游戏玩家的杀手型、成就型、社交型、探索型四大分类模型。中国本土最有代表性的纯文本冒险游戏是方舟子等人以金庸小说为基础制作和开源的《侠客行》。时至今日,北大侠客行依然在运营中。
在 AI 火爆之后,有一款文字冒险游戏出现在复古爱好者面前,那就是 AIDungeon(AI 地牢)。原版 AIDungeon 采用 openai 公司的 GPT-2 开源模型,如果要本地化,就需要耗时数月,专门收集小说素材、编写代码和训练微调,才能保证游戏体验的持续,而且质量好坏也严重依赖所收集小说素材的质量。ChatGPT 出现后,马上有中国爱好者,结合 AIDungeon 的设计,加入 ChatGPT,迅速生成了一款 ChatGPT 版的中文 AIDungeon 游戏:https://github.com/bupticybee/ChineseAiDungeonChatGPT。运行效果如下图所示:
和原版不同,这个版本的实现过程非常简单,既不需要专门的训练,也不需要复杂的代码编写,甚至也不需要做中英文翻译。通过快速阅读代码——一共也就几十行——我们可以还原实现过程,甚至在 ChatGPT 的聊天界面上模拟一遍。
作者的主体思路,就是在一次聊天会话的最开始,先提示 ChatGPT 故事背景。后续对话都会在这个背景下继续。作者代码中的默认背景提示语是:
现在来充当一个冒险文字游戏,描述时候注意节奏,不要太快,仔细描述各个人物的心情和周边环境。一次只需写四到六句话。开头是
辛迪加大陆分为托雷省,尼莱省和穆拉省,其中生活着矮人,精灵,人类三个种族以及无数的怪物。你是一个来自托雷的人类男性魔法师,今年21岁。你左手持着火焰法杖,右手拿着魔法书,背包里装着能支撑一周的口粮,进入了莱肯斯雨林进行冒险。
你
而示例代码中的演示背景提示语是:
现在来充当一个冒险文字游戏,描述时候注意节奏,不要太快,仔细描述各个人物的心情和周边环境。一次只需写四到六句话。开头是
你在树林里冒险,指不定会从哪里蹦出来一些奇怪的东西,你握紧手上的手枪,希望这次冒险能够找到一些值钱的东西,你往树林深处走去。
你
大家可以看到前面一段是一模一样的,主要用途是告诉 ChatGPT,扮演目的是冒险游戏,生成过程要注意描述任务和环境,控制输出文本长度。
聊起来以后,对输入的后续提示语也会做些处理。会给玩家实际输入的文字加如下一段前缀:
继续,一次只需要续写四到六句话,总共就只讲5分钟内发生的事情。
你
也是第一段先告诉 ChatGPT 继续保持生成过程控制输出文本长度,并提示 ChatGPT 生成内容和之前保持连贯性,时间上是 5 分钟内。然后第二段交给玩家发挥。
让我们把示例代码的演示玩法,在 ChatGPT 聊天框里手动玩一遍:
我们可以看到,确实相同背景下,我们得到的游戏背景和任务体验,和原作者的示例,是不太一样的。
在此基础上,我们甚至可以尝试利用 ChatGPT 的词性分类能力、格式化能力,让 ChatGPT 将游戏背景和任务过程,具体拆分成:主体、行为、情感、描述。这样,不仅仅 MUD 文字游戏,图形化游戏的 NPC,也可以有智能化的自主行动,而不仅仅是被动响应玩家对话了。目前还没有完整实现了这种交互的 2D/3D 游戏,但我们可以从展望未来的角度,做个简单的形式验证。在 AIDungeon 上做点额外的变动:
从现在开始,内容如果涉及到人物行为,包括且不限于动作、交谈等,可以按照 from, action, mood, message 四种信息,采用 JSON 格式输出这部分内容。继续。
我们甚至可以展望,等到 AIGC 绘图模型的连续出图能力相对稳定以后,在这段 JSON 里再加上 background_prompt 信息,我们将获得的,不仅仅是一个 ChatGPT 驱动的 NPC,而是整个 ChatGPT 驱动的 2D 游戏。
斯坦福大学在 2023 年 4 月发表了一篇论文《Generative Agents: Interactive Simulacra of Human Behavior》。研究者设计了一个虚拟小镇的 MUD 游戏,镇子上生活着 25 个居民,各有人设。然后 25 个 ChatGPT 代理分别扮演这 25 个居民的日常生活。可以说,我们本节设想的 AI 游戏,已经越来越近了。