玩家隔了三天再登录,看到的城市有两种糟糕的样子:一种是一切照旧,连店铺门口那只猫都还在原来的位置;另一种是面目全非,朋友搬走了,任务线断了,街道换了名字。前者让人觉得世界是假的,后者让人觉得世界跟自己没关系。离线推进要解决的,就是在这两种失败之间找到一个合适的“变化速度”。这个速度没有标准答案,但有一套可以讨论的设计方法。

冻结与失控,是同一个问题的两端

先把两种极端说清楚。冻结型世界的问题是缺少时间感:玩家离开是暂停,回来是继续,世界只在被观察时才存在。它的好处是简单、可预测,没有任何“错过”的风险。失控型世界则相反,为了显得“活”,让离线期间发生大量变化,玩家回来后要花很长时间弄清楚发生了什么,甚至发现自己的关系与资产已经被改动。

两种极端看似相反,根源却相同:没有把“变化”当作一种需要预算的资源。世界能变的东西很多,但玩家能感知、能理解、愿意接受的变化很有限。我们的思路是先承认这个限度,再据此设计推进机制。关于持久世界如何保存这些变化及其因果,可以参考持久虚拟世界一文,这里专门讨论“变多少”。

变化速度是一张表:重要度与玩家关联度

决定一件事该不该在离线期间发生,可以看两个维度。一个是事件本身的重要度:改变一个角色的心情,与关闭一家店铺、更换一位镇长,分量完全不同。另一个是与玩家的关联度:玩家认识的角色、去过的地点、参与过的线索,变化的影响会被放大;玩家从没接触过的远处街区,同样的变化几乎没有意义。

与玩家关联度高与玩家关联度低
重要度高 不自行完成,预留给玩家回来处理 可以发生,用摘要或传闻告知
重要度低 可以发生,回归时轻描淡写提到只做统计层面的更新,不逐一记录

这张表的关键在左上角:重要且与玩家高度相关的事,恰恰是最不应该自行结算的。玩家正在跟进的任务、关系走到转折点的角色、自己经营的场所,如果在离线期间被世界替他做了决定,无论结果多合理,都是对玩家控制权的侵犯。相反,右上角的事,比如远方的一场选举、另一座城的节庆,可以放心地发生,然后以一句传闻的方式出现在玩家耳边。

怎么推进:粗时间片加变化预算

技术上,离线推进不需要逐秒模拟。可以把离线的时间切成较大的时间片,每片里只结算会改变世界状态的事件,比如订单完成、活动开始与结束、关系转折、资源变化。至于哪些角色需要更细的推进,可以借助分层的思路:与玩家关系近的角色更细,其余更粗,这一点在大规模虚拟角色的分层智能里有展开。

在此之上再加一层“变化预算”:为一次离线推进设定变化的上限,按离线时长增长,但增长要放缓。预算按类别分配,比如允许多少个次要角色的日常变化、多少条传闻、多少次关系微调,同时严格限制大事件的数量。预算用完,后续的变化就压成统计,不再产生新的具名事件。这个机制解决的是失控问题:不管玩家离开多久,回来时世界都不会积压出一份读不完的变更清单。

离线越久,越要防止“补课式模拟”:玩家离开一个月,系统不应该在他登录的瞬间把一个月的事件全部补算一遍,那会让加载变慢,也会让变化在同一刻集中涌现。更稳妥的做法是在玩家离开期间按较低频率持续推进,或在登录前用统计方法直接估算结果,再挑选少数值得讲述的事件补出细节。这样玩家看到的是一个自然过渡的世界,而不是一次性的大清算。

模拟对照:三天、一周、一个月

下面是一个模拟场景,数字都是示例,用来说明变化速度如何随时间放缓,并非爱游戏已上线的规则。假设玩家在一座叫“河湾镇”的虚拟城市里,与面包师、集市管理员和一位邻居来往较多。

离线时长 日常层 关系层 大事件
三天 店铺照常开关,物价小幅波动,天气变化 邻居之间的闲聊,玩家的名字被提到一两次 基本没有,预留给玩家的事继续等待
一周出现一次小型集市,某家铺子换了营业时间 有人搬家或换了工作,一段关系出现变化 最多一件与玩家无关的地方新闻
一个月 季节性活动完成一轮,物价有了趋势 若干关系重新排列,部分角色认识了新朋友 一到两件世界层面的变化,其中不含玩家的线索

看这张表要注意两点。一是时间越长,变化增长得越慢,一个月并不等于三天的十倍,因为预算是放缓的。二是无论离线多久,与玩家直接相关的关键线索都不会被自行结算,它们只会被“延后”或“提醒”。玩家回来时,认识的人还在,街景大体熟悉,但能清楚地感到时间过去了。

重要的事等玩家:一条不能破的规则

这条规则值得单独强调:玩家的关键剧情不错过。举一个模拟例子:玩家与集市管理员约好周末一起处理一件纠纷,然后离线了一周。世界推进时,管理员的日程里不可避免会出现新事件。如果系统让他去处理了别的事,导致纠纷不了了之,玩家就会觉得被辜负。

合理的做法是把纠纷标记为“玩家线索”,推进过程可以让它的紧迫度变化,让相关角色的态度发生一些变化,比如管理员有点着急,但不能让它自己结束或被删除。如果某条线索因世界变化确实需要调整,回归摘要里要明说:原本约定周末,现在因为什么改到了什么时候。让玩家知道发生了什么,比“悄悄保持原样”更能让人信任这个世界。

回归摘要:讲发生了什么,也讲什么没变

玩家上线时的第一屏,决定了他对这次“离开”的感受。摘要的设计有几条原则。

  • 按相关度排序,不按时间排序:玩家认识的人、去过的地方、参与的线索排在前面。
  • 合并同类项:十件小事合成一句“集市这几天比较热闹”,不要给玩家十条通知。
  • 标明来源:哪些是亲眼可见的变化,哪些只是传闻,区分清楚可以避免玩家把误传当事实。
  • 也说“没变”:“你的店铺一切照旧”能减少焦虑。
  • 可以关闭:不喜欢摘要的玩家,可以选择只看简短提示,或完全跳过,细节留在可查的日志里。

不惩罚离线:把“错过”降到最低

还有一层是奖励与资源的设计。如果世界在玩家离线时不停消耗他的资源、让他的作物枯萎、让他的位置被别人占去,玩家很快会把离线视作一种损失,转而产生“不敢离开”的压力。我们更倾向的做法是:资源有上限,离线期间的被动收益有天花板,一切会“坏掉”的东西都有足够长的缓冲,并且提前提醒。玩家的离开不是失误,世界不应该借机惩罚他。

当然这样设计也有代价:世界的紧张感会降低,经营类玩法的挑战感会被稀释。这是需要在具体玩法里权衡的取舍,而不是一条放之四海皆准的答案。爱游戏的方向是倾向于保护玩家时间,同时给愿意深度参与的玩家提供可选的高强度模式,具体设计以官方公布为准。

好的离线推进,是玩家回来时那种“时间确实过去了”的踏实感

玩家三天没上线,世界应该发生多少变化?答案不是一个数字,而是一组约束:日常可以多变,关系适度变,大事件少变,与玩家直接相关的事不擅自变。变化要有预算,来源要可查,摘要要可读,玩家可以随时把节奏调慢。

最终的检验很朴素:玩家回来时,是觉得“世界记得我”,还是觉得“世界忘了我”或者“世界把我甩下了”。前者才是持久世界值得追求的状态。