分层架构
一次「打开游戏并开始匹配」穿过七个平面。它不是信息流的七层换皮:中间多了匹配和对局隔离,底层的同步模型会改写整张图。
| 层 | 英文 | 这一跳解决什么 |
|---|---|---|
| L0 客户端 | Client | 先保证手感,再和服务器对答案 |
| L1 接入网关 | Gateway | 长连接进门,不要做成短请求网关 |
| L2 大厅 | Lobby | 登录、社交、商城、组队,和对局拆开 |
| L3 匹配 | Matchmaking | 撮合出一桌人,再申请对局资源 |
| L4 对局 | Battle / Room | 一局一个隔离的进程世界 |
| L5 同步 | Synchronization | 帧同步传输入,状态同步传结果 |
| L6 存储与安全 | Storage & Safety | 可回档的游戏库,加上反外挂 |
L0 客户端
手游客户端负责输入采集、预测表现和渲染。王者荣耀公开方案里,对局逻辑按帧在端上确定性重放;射击类则更多在端上做预测,等服务器权威状态纠正。弱网时,手感取决于端上怎么藏延迟,而不是大厅 JSON 快不快。
- 大厅(登录、商城、组队)可以走 TCP;对局热路径在王者方案里改成了 UDP。
- 帧同步客户端必须确定性:相同输入序列得到相同结果,常用定点而不是各端自己的浮点。
- 状态同步客户端会本地预测移动和开火,再按服务器快照平滑纠正。
- 崩溃重连时,王者把操作缓存在服务器内存,按序号补发,而不是整局快照。
为何这样拆:玩家感觉到的是 50 毫秒的卡顿,不是一次登录 RPC。对局协议必须按手感设计。
L1 接入网关
腾讯互娱公开的接入形态是 TGW + Tconnd:网关扛海量 TCP 连接,把字节流切成消息包,经 Tbus 共享内存交给后面的游戏进程。这和「DNS → 负载均衡 → HTTP 服务」的互联网接入不是同一张图。
- Tconnd 专注连接和切包,不跑玩法逻辑,所以可以按连接数水平扩展。
- Tbus 用共享内存传消息,同机进程之间避免一次额外的网络栈。
- 就近接入降低 RTT:对帧同步尤其致命,因为丢一帧要等到重传才能继续演。
- GCloud 后来把下载、区服导航、语音和帧同步做成可全球部署的云服务。
为何这样拆:对局是持续会话。把每帧都走一遍七层 HTTP 网关,延迟和连接抖动都会把手感打穿。
L2 大厅
王者技术总监孙勋在公开演讲里把后台先分成「游戏大厅」和「PvP」。大厅扛的是登录、好友、邮件、商城和赛季数据,对延迟不敏感,对一致性和回档敏感。
- 大厅状态落 TcaplusDB 一类游戏库:角色、背包、段位、赛季。
- 后来加入 Proxy 中转,用来解决安卓 / iOS 同服等路由问题。
- 大厅可以扩缩容、可以排队,但不能把对局线程堵在登录高峰里。
- 活动、邮件、商城的写放大走大厅,不进 66 毫秒的对局循环。
为何这样拆:登录高峰和团战高峰不是同一种负载。焊在一个进程里,哪边爆哪边陪葬。
L3 匹配
匹配把零散玩家收成一局:段位、延迟、队伍、地图。腾讯云曾提供 GPM(游戏玩家匹配):客户端服务器调 StartMatching 拿到匹配票据,再跟踪票据状态;需要战场时再和对战服资源编排对接。GPM 已于 2022 年下线,但「票据 + 规则脚本 + 要战场」仍是公开的产品形态。
- 匹配是异步状态机,不是一次 RPC 返回十个座位。
- 规则包括人数、阵营、段位差、组队不拆散。
- 匹配成功后才创建或分配 PvP 房间,避免空房间占满机器。
- 大厅显示「正在匹配」,对局服此时可能还不存在。
为何这样拆:先凑人再开房。反过来会在低峰浪费对局进程,在高峰又开不出房。
L4 对局
PvP 进程只服务这一局:收输入、广播帧或状态、做校验、写录像。王者公开口径是约 4600 台机器、四万多个进程。进程数远大于机器数,说明按房间/对局切片,而不是一个大战场服。
- 一局结束,进程可以回收;崩溃不拖垮大厅。
- 录像是输入序列(帧同步)或状态轨迹,用来回放和查不同步。
- Proxy 把不同系统、不同入口的玩家汇聚到同一局。
- 对局热数据在内存,结算后再写回 Tcaplus。
为何这样拆:对局失败应该只少一局,而不是登录不了。隔离是容量,也是故障域。
L5 同步
王者从《霸三国》的 Client-Server + TCP,改成 UDP + 帧同步:服务器每 66ms 收集输入,打包成有序序列广播;丢包由应用层补发和冗余帧解决。射击和大地图更常选服务器权威的状态同步,用预测和插值换手感。GCloud 另提供 LockStep 云服务(TCP/UDP/RUDP)。
- 帧同步省带宽:20 分钟 5v5 外网录像大约 3MB(公开统计)。
- 帧同步不能乱序:包必须是 1-2-3-4-5。
- 状态同步能接受中间丢包,只要最终权威状态对齐,更适合易作弊的射击判定。
- 两种方案都要把「语音、聊天、大厅通知」排除在热同步通道之外。
为何这样拆:同步模型一旦选错,不是慢一点,而是整品类的手感和反外挂都要重做。
L6 存储与安全
TcaplusDB 是腾讯为游戏做的分布式 NoSQL,王者 2020 年日均 DAU 过亿时作为核心库被公开点名。它按 hash 分片,强调点查、回档、合服和过载保护。安全侧,ACE 为王者、火影等数百款游戏提供反外挂和加固;帧同步本身还用哈希对比抓不同步。
- 单表公开口径可到 2.56PB,分片上限 10000。
- 管理 / 接入(tcaproxy)/ 存储(tcapsvr)三层,主备复制。
- 回档是游戏刚需:发错奖励、经济事故要能回到备份点。
- ACE 在客户端做扫描和加固;权威玩法仍应在服务器或哈希校验上收口。
为何这样拆:游戏数据不能「最终一致就行」。角色、钻石、赛季必须能回档,对局还必须能证明没人改结果。