Skip to content

持续在线世界型架构 ​

Category ​

design / problem-domains 子树。节点定位:持续在线世界型问题域的横向速查——世界常驻、兴趣管理、边界切分、有状态扩缩。

Definition ​

这一页从问题域角度归纳持续在线世界型项目,是主线世界模型与容量篇目的横向速查版。它不重复推导世界怎么拆、服务怎么分,而是把这类项目区别于其他类型的判断集中在一页:世界为什么常驻、兴趣怎么管理、边界怎么切、有状态服务怎么扩缩。

一句话画像:世界状态长期存在,玩家进出的只是会话,地图、公会、社交关系和世界进程都在玩家离线后继续成立。MMORPG、开放世界手游、SLG 大地图、生存建造类联机都落在这个画像里。

Problem ​

世界型项目的判断集中在四件常驻事实:世界为什么不能清空、兴趣怎么管理(AOI 与分频)、跨服边界怎么切、有状态服务怎么扩缩迁移。这四件事的答案互相锁死,分散看容易顾此失彼。

这个问题域的特征 ​

  • 世界状态常驻,重启和停机都有明确代价,滚动维护往往是常态。
  • 空间是主要组织维度,位置决定谁能看见谁、谁和谁交互。
  • 玩家会话短而世界进程长,会话中断不应该损伤世界状态。
  • 社交结构沉淀在服务端,公会、好友、交易关系横跨多个在线时段。
  • 在线人数随时段大幅波动,而世界不能像房间那样随时生灭。

前三条特征让这类项目的状态无法整体快照重建,后两条让它无法按会话粒度随意扩缩,这构成了和房间型最本质的分界。

AOI 与分频:兴趣管理的两把尺子 ​

空间连续的世界不可能让每个客户端看到全部状态,兴趣管理通常是第一道架构约束。

  • AOI 决定谁可见:按视野、屏幕或区域圈定同步范围,范围策略直接影响带宽曲线和玩法上限。
  • 分频决定多快可见:移动中的对象高频更新,静止对象低频,远处的玩家往往只拿概要信息。
  • 两把尺子要配合调,AOI 圈得大而分频不降,带宽很快失控;分频降得过狠,近战判定和交互又会出现明显错位。
  • 常见做法是把视野内细分频、视野外降级成事件,跨区交互走专门通道,而不是全局统一频率。

兴趣管理的参数通常被当成调优对象长期迭代,一次调错的表现往往是高峰期带宽爆炸,或玩家反馈“明明站在一起却互相看不见”。

跨服边界的取舍 ​

世界越大,越需要在合适的地方切开边界,切口的位置往往决定玩法的上限。

  • 分地图分服是最直接的切法,边界清晰、实现简单,代价是玩家被硬性隔开。
  • 分线允许同图多实例,容量弹性更好,代价是社交被线切碎,需要跨线可见与传送机制。
  • 跨服玩法层把副本、竞技、交易等强交互玩法放到独立集群,本服只保留世界与社交沉淀,代价是数据归属和结算链路要跨服裁决。
  • 无缝大世界按坐标做动态负载均衡,体验最连续,实现与运维代价也最高。

边界越少,体验越连续;边界越多,扩缩越容易。常见做法是按玩法对连续性的真实需求决定,而不是一刀切。

有状态服务的扩缩与迁移 ​

这类项目的服务大多有状态,扩缩不能像无状态服务那样简单加减实例,迁移因此成为核心课题。

  • 停服迁移最常见也最稳妥,按地图或按服整体搬迁,代价是维护窗口。
  • 动态迁移把在线玩家从高压节点挪到低压节点,体验平滑,但要求状态可序列化、迁移过程原子、失败可回退。
  • 按线或按图伸缩是折中方案,高峰开线、低谷并线,边界仍是清晰的图或线。
  • 任何迁移都要回答状态归属:玩家身上挂着的世界引用、队列、交易上下文,迁移时如何跟随或挂起。

迁移做不干净的项目,问题往往不在迁移本身,而在状态归属从未被定义,迁移时才发现一半状态在进程内存里。

常见方案形态 ​

典型形态是三层叠加:世界层常驻地图与 NPC,会话层管理玩家连接与视野,跨服层承接强交互玩法。

  • 世界层按地图或坐标分片,每片通常单进程权威推进。
  • 会话层无状态或轻状态,负责接入、路由和 AOI 过滤。
  • 跨服层按玩法独立集群,与本服以明确协议交互,结算单回写本服。
  • 排行、邮件、好友等全局服务独立部署,跨地图共享。

这套形态的弹性主要来自会话层与跨服层,世界层的弹性往往有限,容量规划通常按高峰地图压力而不是平均在线来算。

该类型特有的坑 ​

世界进程被当成单点:核心地图或全局服务无法分片,高峰一过阈值就只能停服,扩缩无处下手。

AOI 参数写死:策划改玩法范围、美术改视野距离,同步参数没人联动,问题在上线后才以带宽或卡顿形式暴露。

跨服边界反复挪动:今天把交易放进跨服,明天把竞技搬回本服,每次挪动都是一轮数据归属重构。

迁移只测 Happy Path:动态迁移只在低负载下验证过,高峰迁移时队列、交易、公会申请等上下文丢失,故障集中在最不该出事的时刻。

常见误区 ​

  • 把世界型做成“超级房间”,整个世界一个进程,早期开发快,容量天花板很快就到。
  • 把 AOI 与分频当成纯性能参数,忽略它们同时划定了玩法边界,后期改动牵动玩法。
  • 以为上云就能自动扩缩,忽略有状态服务的迁移成本,弹性只在会话层成立。

这类项目的架构方向通常可以概括为:世界常驻分片治,兴趣管理配分频,边界按玩法切,迁移先定义状态归属。

Used By ​

世界型项目评审速查;分区与扩缩方案对照。

关系链:特征 → AOI 与分频 → 跨服边界 → 有状态扩缩 → 方案形态。上游:industry/models/04。下游:server 树(AOI 等节点)、database 树。

Reference ​

本页为工程经验归纳。

游戏知识体系