玩家下线那一刻,世界先拍一张快照
设想一名玩家周日晚上在海滨城市打完一场街头骑行赛,拿了第三,然后关掉游戏,一周没有回来。如果世界在他离开时就停住,回来时一切原样:同一个NPC站在同一个路口,排行榜上还是那几个名字,公告栏里还是那场已经结束的比赛。这种“暂停键式”的世界,玩家很快会意识到,自己不在的时候这里什么都不会发生。
在im体育里我们倾向于另一种做法:玩家离开时,服务器先为他所在的区域和他关心的对象拍一张快照。快照里不是逐帧的物理状态,而是一组可以继续推演的“档案”:
- 区域:当前季节、未来几天的天气序列、各设施的开放状态(雪道、冲浪点、滑板公园、球场)。
- NPC:体能、近期状态、伤病、所属俱乐部、训练计划、下一个想参加的赛事,以及与玩家的宿敌或队友关系。
- 赛事:已排期的比赛、报名名单、规则和场地要求。
- 玩家:排名、声望、最近常玩的项目,只作为NPC记忆和赛事邀请的参考,不会被用来“替玩家比赛”。
离线粗模拟:不看画面,只算结果
玩家不在视野里的地方,没有必要逐帧计算板刃和雪面的摩擦。我们的设计是把离线推进分成两个粒度。玩家所在区域在线时用完整物理;玩家离开后,这片区域切换到“粗粒度推进”,以小时或半天为步长,用统计模型代替实时模拟。
以一场离线发生的山地速降赛为例(示例数据)。系统不会模拟每名选手的每一个弯,而是读取三组输入:赛段的难度曲线、当天的雪况与能见度、每名NPC的能力值与风险偏好。然后按照能力分布抽样出完赛时间,再叠加环境带来的失误率。暴雪当天,能见度低于某个阈值时,激进型选手的失误概率会被抬高,稳健型选手的时间整体变慢但更少摔倒。最后得出的名次是一个“符合物理和性格的合理结果”,而不是随机数。
这样做的核心理由是算力。一个开放世界里同时存在几百名NPC运动员、几十个设施,如果全部逐帧运行,服务器成本会随世界规模线性甚至更快地增长。粗模拟把成本压在“结果合理”这个层面,而把细节留给玩家真正在场的时刻。
粗模拟和精细模拟之间还有一个交接问题。假设玩家在周四下午重新登录,正好赶上一场还剩一半的骑行赛,这时系统不会让比赛从头开始,也不会直接跳到结果,而是把粗模拟算出的当前位置、剩余体能和落后时间转成精细模拟的初始状态,让玩家以观众或迟到选手的身份接入。交接时最容易出错的是速度和位置的突变,所以我们会在交接前几秒用插值把统计结果平滑过渡到物理状态,保证玩家看到的车队不是凭空瞬移到某个路口。反过来,玩家离开一场正在进行的比赛时,精细状态也会被压缩回粗模拟可用的几项数值,比赛照常继续到终点。
事件日志:每件事都要能被追溯
粗模拟产出的不是一句“世界变了”,而是一串带时间戳的事件。例如:
- 周二:NPC林岳在雪场训练中轻微扭伤,接下来五天训练量减半。
- 周三:海岸出现长周期涌浪,临时公开赛开赛,冲浪NPC阿澜获得第一,积分升至区域第四。
- 周四:三名骑行NPC组成新俱乐部“南坡车队”,报名下周的山区限时赛。
- 周五:城市广场夜间降温结霜,原定的滑板挑战改到室内公园。
日志的价值在于可追溯。每一条变化都能找到原因:伤病来自训练量和状态,冠军来自当天的浪和选手能力,俱乐部来自NPC之间长期的组队记录和共同目标。关于NPC如何积累这些经历,NPC职业生涯一文有更细的讨论。
玩家回来时读到的“新闻”
一周后玩家重新登录,系统不会把几百条日志直接倒给他,而是按与他的相关程度挑选,改写成几条可读的“本地新闻”:你上次骑行赛的亚军加入了新俱乐部;你在冲浪点遇到过的阿澜升到了区域第四;你常去的广场这周不适合室外滑板。玩家打开im体育App的动态页,看到的就是这些经过筛选的变化,而不是一堆数字。
新闻挑选本身也是im体育AI的一部分:优先与玩家有过交集的NPC、玩家常玩项目的赛事、玩家所在区域的设施变化。离得太远、与他无关的事件依旧在世界里发生,只是不主动推送,等他真的走到那片区域时再从环境里体现出来。
一致性约束:变化可以多,但不能乱
世界持续变化的最大风险是自相矛盾。我们给离线推进定了几条硬约束:
- 设施约束:暴雪天不生成户外篮球,没有涌浪的日子不开冲浪赛,维修中的滑板公园不会出现挑战。
- 时间约束:一名NPC不能周三在雪山比赛、周三晚上又出现在海边领奖,行程要考虑移动距离。
- 能力约束:NPC的进步来自训练量和比赛经验,一周内不会从区域第五十跳到第一,除非日志里有足以解释的连续胜利。
- 玩家约束:玩家亲手取得的成绩不会被离线模拟覆盖,他保持的纪录只能被一场真正发生、且有记录的比赛打破。
- 存档约束:多设备登录时,世界状态以服务器为准,玩家个人进度与世界事件分层合并,细节可参考开放世界存档同步。
这些约束让离线模拟可以放开手脚产生变化,同时保证玩家回来时看到的世界“说得通”。
这件事和官网其他内容的关系
动态世界是im体育官网上开放世界栏目的主线之一,完整的背景可以从AI体育开放世界栏目开始读。im体育大模型负责离线推进里的NPC决策和新闻改写,粗模拟的统计模型负责算结果,两者分工明确。对玩家来说,只需要通过im体育下载页面获取客户端并登录账号,离线期间发生的变化会在下次进入时由服务器同步过来,不需要在本地保持在线。