跳到正文
Atelico · AI 游戏开发博客· 一手来源·· 3 天前精选AI 评分75

Atelico 发布 GARP 2:Godot 中的本地化生成式角色系统

GARP 2 and the Inner Lives of Game Characters

推荐理由

GARP 2 在 Godot 中实现了带情绪与关系的本地化角色模拟,展示了低算力下的实时交互潜力。

正文 · AI 翻译
GARP 2 village, emotion timeline, and a music duet. Needs, emotions, traits, and relationships, optimized for local play on Apple M1 and RTX 2060.

Maya 答应帮最好的朋友 Jonah 搬家,但她忘了。等到第二天她去找他时,她感到内疚,而 Jonah 不得不独自搬完所有东西。当他们终于交谈后,Jonah 对 Maya 的态度变得温和了一些,也稍微更愿意重新信任她。

In-game dialogue with Maya apologizing to Jonah for missing his move.
Maya 为错过帮助 Jonah 搬家一事向他道歉。

Maya 和 Jonah 生活在 GARP(Generative Agents Real-time Playground,生成式代理实时游乐场)中。这是我们在 Godot 引擎中构建的一个小村庄,旨在观察当游戏角色能够自主制定计划、彼此交流并记住过往事件时会发生什么。我们从 斯坦福大学的《生成式代理》论文中汲取了灵感。在 最初的 GARP 演示中,两个村民可以偶然相遇,约定第二天一起演奏音乐,并且真的会在四点准时出现进行即兴合奏。

在GARP 2中,我们扩展了角色行为系统。相同的村民现在拥有可以打断其计划的“需求”、影响其选择的“情绪”,以及通过共同言行而变化的“关系”。他们的个性决定了他们如何做出反应。

一天可能偏离计划

设计师首先定义村民的人设与日常作息。在此基础上,村民规划自己的一天,将计划转化为即时行动,并在发生意外时进行调整。他们会从周围可用的选项中决定要做的事情。炉灶为他们提供了烹饪的地方,钢琴让他们有东西可弹奏。如果一天的进程出现变化,他们可以改变自己的计划。

在GARP 2中,计划可能会改变的六个原因。村民会感到饥饿、疲倦、孤独、无聊、不适和需要洗澡,每个人都有自己的节奏。晚餐可以解决饥饿问题,但一个整天独处的人即使在吃完饭后仍可能感到孤独。这可能会让拜访朋友比他们原本计划的事情更有吸引力。

Oliver's Decisions tab shows his needs while he works at a desk, with the social bar in red.

奥利弗独自工作。他对陪伴的需求已经是最高的了。

我们还为设计师提供了基于“大五人格”的人格特质滑块。以Mika为例,她有一个空闲的夜晚,隔壁住着一位名叫Ren的朋友。我们在相同的设置下运行了一次实验,仅将Mika的性情参数做了调整。当社交性调高时,Mika会去隔壁并主动开始交谈;而调低后,Mika则选择在家吃晚饭,看一档安静的电视节目。该滑块改变了她对陪伴的需求积累速度,以及她主动开启对话的可能性。

Mika’s Persona tab with high sociability and plans to visit Ren.Mika and Ren stand together indoors while Mika greets Ren in a dialogue bubble.

Mika’s Persona tab with lower sociability and plans for dinner and a quiet TV show.Mika watches TV alone in her living room.

社交性较高时,Mika会与Ren聊天。社交性较低时,她 在家里看电视。

一段对话留下的余韵

当某事发生时,GARP 会询问模型:考虑到该角色的性格、周围的环境以及近期的情绪状态,这个角色会对这件事作何感受。一种新产生的情绪会将部分历史延续下去。例如,莉娜(Lena)整个上午都在为她的钢琴独奏音乐会感到担忧。在朋友达拉(Dara)给她打气之后,莉娜在下午便感到安心。她的情绪会影响她的言谈、决策,甚至影响哪些记忆更有可能浮现出来。

Lena's Emotions tab shows her mood shifting from negative to positive, with an entry crediting Dara's presence.

莉娜的情绪时间线在达拉打气后上升。她最新的 评估将焦虑的缓解归功于达拉的陪伴。

人际关系会留下不同种类的历史。村民会追踪他们与某人相识的程度、对他们的信任程度以及他们对某人的感受。你可能认识一个人多年,但在再次请求对方帮忙搬家时仍会犹豫再三。该模型会审视每个人所说的话,并为任何变化提供理由。系统会分别更新每个角色对另一方的看法。当他们在后来相遇时,这段历史有助于决定他们是否会停下来交谈以及如何开始对话。

Jonah's relationship panel before the apology, with low trust and negative sentiment toward Maya.Jonah's relationship panel after the apology, with higher trust and neutral sentiment toward Maya.

乔纳在玛雅道歉前后对她的看法。信任度从 40% 上升至 70%,情感态度从 −30% 变为 0%。

角色行为系统

GARP 2 在 Godot 内部运行 Atelico AI Engine 的 角色行为系统。设计师通过角色的性格、背景故事和目标来定义其身份。这些选择塑造了角色如何追求需求、制定计划、做出情绪反应、记住发生的事情以及建立人际关系。

当村民感到饥饿时,系统会查看附近的情况,并将可用行动缩小到少数几个,然后再让模型进行选择。村民可以在吃饭的同时规划午餐后的安排,而城镇的其他部分则继续运转。在我们的测试中,一个 3B 模型驱动了一个拥有 20 名村民的城镇。该模拟可在 Apple M1 笔记本电脑或配备 NVIDIA RTX 2060 的 PC 等本地硬件上运行。

Ludwig's Decisions tab shows his current activity, need bars, and a list of actions within range.

路德维希的“决策”选项卡显示了他当前的活动、需求和附近 系统可以执行的操作。

关系以相同的方式运作。模型会解读对话中发生的事件,系统则更新角色彼此之间的情感变化。在一次测试中,模型认为一个多管闲事的陌生人听起来像小偷,但几乎未改变关系评分。我们提供了诸如“稍微冷淡”和“非常冷淡”等选项,并让系统将其转化为评分变化。设计师可以控制单次对话对关系的影响程度。这些变化会影响后续的行为与对话,整个循环在设备端运行。

有关我们如何构建 GARP 以及相同场景按预期发生的频率的更多详情,请阅读我们的配套论文:GARP:游戏引擎中本地硬件上的实时生成式代理。

与我们一起构建

我们将 GARP 打造为 Atelico AI Engine 的试验场。想象一下,在一款温馨的 RPG 中,一位店主在你信守承诺后对你产生好感,随后告诉你一些他们不会对陌生人说的事情。作为设计者,你定义店主的性格与目标。店主会记住与玩家之间发生的事情,而他们的关系有助于决定他们何时敞开心扉。

Villagers gather in Ludwig's house for his birthday party.

在亲自邀请朋友们之后,Ludwig 在他的房子里接待了他们, 第二天。

如果你正在开发一款游戏,而这类历史记录可能会改变玩家的游玩方式,我们很乐意听听你的想法。你可以探索 GARP,并申请 Atelico AI Engine 的早期访问权限。

来源:Atelico · AI 游戏开发博客 · atelico.studio