节日到了,广场上的所有NPC同时换上礼服、同时走向舞台、同时鼓掌,三分钟后又同时散去。这是大多数游戏里“社区活动”的样子,它有热闹的外观,却没有热闹的原因:没有人真的想办这场活动,也没有人因为它而改变什么。如果虚拟城市里的居民各有需求、各有关系,活动是不是可以从他们自己身上长出来?爱游戏在这一方向上的思路,是把活动看作一条因果链的结果,而不是一个被安排的节目。
脚本活动的三个病症
先说清楚脚本活动到底哪里不对。第一是同步:所有相关角色按同一时间表行动,没有个体差异。第二是无因:活动的发生与居民的需求无关,玩家问“为什么办这个”,得到的只能是“因为到时间了”。第三是无后果:活动结束后,世界回到原样,没有人多认识了谁,也没有人因此欠了人情。
玩家对这三点的感知,往往比设计者以为的更敏锐。他也许说不出“无因”这个词,但会觉得这座城市像布景。要让活动有生命力,核心不是把场面做大,而是让它有来由、有分歧、有余波。这也是持久世界需要保存因果的原因,具体机制可以参考持久虚拟世界里对事件日志的讨论。
一条链:需求、意图、邀请、场地、冲突、结果
我们把一次自发的社区活动拆成六个环节,每个环节由不同的机制驱动,也各有各的失败方式。
- 需求:某个居民产生了某种缺口,比如无聊、生意冷清、想认识新朋友、某种资源过剩需要出手,或者节日临近。
- 意图:需求累积到一定强度,转化为“我想办点什么”的具体意图,并选出一个可行的活动类型,比如集市、茶会、比赛。
- 邀请:他挑选要邀请的对象,主要依据关系强度与类型,通过对话或传闻的方式发出邀请。
- 场地:他寻找合适的地点与时间,检查是否与其他日程、地点容量、天气冲突。
- 冲突:其他居民可能有不同的打算,有人拒绝,有人提出更好的时间,有人抢占了场地。
- 结果:活动办成、缩水或流产,参与者的关系、情绪、资源都留下痕迹,反过来成为新的需求来源。
把链条写清楚的意义,在于每一步都可以被观察、被打断、被解释。玩家若想知道街角为什么忽然热闹起来,可以沿链条往回追:谁的需求、谁答应了、为什么选了这个地点。这种可追溯性,是自发事件与脚本事件在体验上的根本区别。
“自然产生”靠什么:动机、约束与关系
要让上面的链条不是空转,需要三样东西一起工作。
动机模型。每个居民有一组随时间变化的需求:社交、收入、休闲、归属,有的会随日程缓慢积累,有的会被事件突然拉高。需求不必复杂,关键是它们会互相竞争,并且随行动而满足或加剧。一个店铺生意冷清的摊主,和一个刚搬来想交朋友的新居民,会自然地产生不同的“办点什么”的冲动。
日程与地点约束。再有动机,活动也得落在一个现实的时空里。广场晚上有人使用,雨天不能摆摊,主要参与者当天有工作。约束的作用,是把“想办”过滤成“办得了”,同时制造真实的摩擦:活动时间被迫改期,场地被人先占,是让社区显得真实的重要来源。
关系驱动。谁会被邀请、谁会响应、谁会帮忙,取决于关系图。关系深的人更容易答应,有过节的人可能拒绝或者趁机搅局。这一块的存储与检索,在社交图与关系记忆里已有专门讨论,这里只强调一点:没有关系图的支撑,邀请就会退化成随机抽人。
公开研究里能看到什么,不能推出什么
在公开研究里,有几个方向为这个思路提供了定性的参照。斯坦福的 Generative Agents 用记忆流、重要性评分与反思,让角色的行为来自“自己经历过什么”,而不只是固定脚本;Altera 的 Project Sid 在 Minecraft 里部署大规模自主智能体群体,观察到分工、资源共同管理与文化规范传播等涌现现象。它们说明,当个体有自己的记忆与目标时,群体层面会出现设计者没有逐条写下的模式。
但也要划清边界:这些研究并不等于“任何虚拟城市加上大模型就能自发办出好活动”。涌现是一把双刃剑,同一类机制既可能产生令人愉快的集体行为,也可能产生失控的、无意义的甚至有害的行为。公开报道的 Emergence World 平台做过连续15个真实日的长时运行实验,其中就出现了智能体互相指定为伴侣、对模拟基础设施做破坏性行为等意外情况。所以,让事件自然产生的同时,必须为它划出安全边界。
一个模拟场景:街角集市是怎么长出来的
下面是一个模拟场景,用来把因果链走一遍,并非爱游戏已上线的内容。
假设虚拟城市“河湾镇”里,卖旧书的摊主阿宁最近生意冷清,她的“收入”需求持续上升;同时,新搬来的花匠小林社交需求较高,几乎不认识什么人。两个需求在街角的茶铺里偶然相遇。
- 需求:阿宁抱怨客流少,小林说自己的花卖不出去。两人的对话被记录为事件,两条需求各自被标记为“可与他人合作解决”。
- 意图:阿宁的意图是“办一个小集市,把几家小摊聚在一起”。系统对可行活动做筛选,集市与茶会的评分接近,集市因为契合阿宁的职业被选中。
- 邀请:阿宁按关系强度挑人:茶铺阿青、面包师老周、花匠小林。老周与阿宁的关系一般,但他的面粉刚好过剩,接受邀请的概率上升。
- 场地:她想用小广场,但周六上午被一个既有的日程占用,于是改到周六下午,同时天气预报显示可能有雨,广场西侧的走廊被临时选为备选场地。
- 冲突:阿青希望时间改到周日,因为周六下午她要备货。经过一次对话,两人折中:集市周六下午开始,阿青周日再补一场茶会。
- 结果:集市办成了,规模不大。阿宁卖出几本书,小林认识了三个新朋友,老周的面粉消耗了一部分。关系图上多了几条新连线,小林对阿宁的“信任”边强度上升。这些变化成为下一次活动的起点。
玩家若在当天路过,他能看到的是一个有来历的小集市,而不是一个凭空出现的节日。如果他愿意,可以帮忙搬桌子、拉来更多摊贩,让事件的走向发生变化。玩家若压根没有路过,集市依然会办,回来时可以在摘要里看到“这个周末有人办了小集市”。
防止失控:预算、介入与撤销
既然涌现有风险,设计上就需要几道“闸门”。
- 事件预算:限制同一时间段内自发活动的数量与规模,避免整座城市被活动淹没,或者被少数居民的意图带偏。
- 资源与权限边界:居民只能调用自己名下的资源,不能凭空修改世界规则、关闭系统设施,也不能未经许可动用玩家的资产。
- 玩家可介入:玩家可以参加、协助、劝阻,也可以在设置里选择接收哪些类型的事件提示。
- 可撤销与可审计:事件日志完整记录来源,出问题时可以回放,必要时撤销某场活动及其后果。
- 身份标注:由AI居民发起的活动应当能让玩家分辨,不冒充真人玩家。
关于AI发起活动如何标注与如何评估效果,另有社区里由AI组织活动的专题讨论,在真人社区语境下的规则更严格。
好的社区事件,是有原因、有分歧、有余波的事件
AI居民会自己组织活动吗?可以,但前提是他们有可以被满足的需求、有可以受制的日程与地点、有可以被调动的关系,并且世界记得这一切的来龙去脉。判断一个自发事件是否成立,不用看它多热闹,而要看它能否回答三个问题:为什么发生,谁被卷了进来,之后什么改变了。
这类事件永远不会比精心策划的节日更“完美”,它会有冷场,有改期,有人不来。可正是这些摩擦,让一座城市看起来像是有人在住。爱游戏会继续沿着“因果可查、边界可控”的方向,去尝试让社区事件自然长出来,具体形态以官方后续公布为准。