小白入门
游戏后台和信息流后台最容易用错类比。抖音一次请求要的是「下十条」。王者一局要的是「接下来 20 分钟里,十个人的每一次操作都不能丢、不能乱序」。
三种图
| 图的种类 | 看它干什么 | 本页例子 |
|---|---|---|
| 架构图 | 大厅、对局、旁路怎么隔开 | 三条路、分层 |
| 流程图 | 从点匹配到开房 | 匹配票据 |
| 时序图 | 一帧里谁先交操作、谁广播 | 帧同步 / 状态同步 |
三条路
- 大厅:登录、商城、邮件、组队。可以稍慢,必须能回档。
- 对局:每 66ms 一次的热路径(王者公开数字)。走 UDP 和房间进程。
- 旁路:语音、聊天、结算、反外挂上报。绝不能焊进帧广播。
点「开始匹配」
大厅路
登录、组队、段位
对局路
每帧输入或状态
旁路
语音、聊天、结算
先凑人,再开场
玩家点开始
大厅服务器发起匹配
生成匹配票据
凑齐人数和规则了吗?
分配或创建对局房间
十个人连上同一局
腾讯云 GPM 文档把这个过程写成 StartMatching → 票据状态 →(可选)申请对战服资源。GPM 本身 2022 年已下线,但这张状态机仍是公开可见的产品形态。细节见大厅与匹配。
两种打球方式
王者从《霸三国》的 Client-Server + TCP,改成 UDP + 帧同步:服务器只收集输入,客户端各自用同一份序列算出画面。孙勋给出的理由包括:MOBA 同屏单位多,传状态太贵;TCP 在丢包重连时会卡。
玩家A
玩家B
对局服
玩家C
本帧操作
▶
本帧操作
▶
66ms 打包成有序帧
▶
广播帧 + 冗余前几帧
◀
同一份序列
◀
同一份序列
▶
确定性重放
▶
射击和大地图更常让服务器当裁判,见状态同步。不要把王者的方案套到所有腾讯游戏上。