游戏匹配系统工程 2026:从 Elo、TrueSkill 到强化学习匹配的统一架构
一、问题的提出:匹配是后端的第一公里
任何一位走进大厅的玩家,第一秒都在等。这「等」的体感——业内常称 DQL(Dequeue Latency,从入队到出队的时间跨度)——往往比战斗手感、画质、音效更先决定留存。Supercell 在 2022 GDC 分享中提到,《荒野乱斗》3v3 模式下 DQL P50 控制在 4.2 秒、P95 控制在 11.8 秒是留存的拐点;超过 12 秒的玩家,每多等一秒次日留存下降约 2.7%。这条指标的背后,是匹配系统的全部能力。
但匹配远不止"凑齐人数"那么简单。它同时承载三个看似无关但相互冲突的目标:让水平相近的玩家对局(公平)、让玩家尽快开打(时延)、让对局组合尽量多样以避免千篇一律(多样性)。这三点在数学上构成一个不可能三角——任何一点变好都意味着另一点必须让步。游戏后端架构师的工作,就是在这三角里找一条贴合自家游戏形态的折中线。
从工程节奏看,匹配系统是后端的"第一公里"基础设施——玩家登录、匹配、进房、战斗的整条链路中,匹配是第一步;如果这一步让玩家等得不耐烦,后面再好的战斗手感、再美的画面都来不及展示给玩家看。与登录服、网关服、战斗服不同的是,匹配服务的每一次算法升级都会改变玩家的对局分布与留存曲线,因此它既是工程问题也是产品决策问题——架构师必须理解自己游戏的形态(实时对战 > MOBA > 卡牌 > MMO),才能在算法选型时做出贴合玩家的取舍。
本文要回答三个层层递进的问题:评分(rating)的可信度如何随玩家池规模演化;匹配流水线(pool → candidates → search → match)的工程节奏;强化学习是否能把匹配带到一个 Elo/TrueSkill 触碰不到的天花板——以及那个天花板有多远。
二、形式化:匹配系统的不可能三角与质量函数
形式化匹配的第一步,是把"公平"这个含糊的词拆成可计算的指标。我们用三元组 ( F , L , D ) (F, L, D) ( F , L , D ) 表示一个匹配系统的三维能力:
F F F (Fairness):匹配对局双方(或多方)的真实技能差。常用 Δ skill \Delta_{\text{skill}} Δ skill 的某种期望/方差度量。
L L L (Latency):玩家从点击"开始匹配"到真正进房的耗时,记 DQL,单位 ms。
D D D (Diversity):对局组合的多样性,包含地图轮换、英雄禁选、阵营分配等。
直觉上,这三者构成一个不可能三角。证明(不严格但直观):假设总池规模 N N N ,段位桶宽 Δ \Delta Δ 。桶的可用玩家数约为 N / Δ N/\Delta N /Δ (正比);要在时延 L L L 内成对,必须有候选生成足够快(候选数 ∝ 1 / L \propto 1/L ∝ 1/ L );要公平 Δ skill \Delta_{\text{skill}} Δ skill 小,必须桶窄(N / Δ N/\Delta N /Δ 变小)。三者纠缠在同一个 N N N 与 Δ \Delta Δ 上,最优点不存在。
为此,我们引入一个质量函数 Q Q Q 作为统一目标:
Q = w 1 ⋅ ( 1 − norm ( Δ skill ) ) + w 2 ⋅ ( 1 − norm ( L ) ) + w 3 ⋅ norm ( D ) Q = w_1 \cdot (1 - \text{norm}(\Delta_{\text{skill}})) + w_2 \cdot (1 - \text{norm}(L)) + w_3 \cdot \text{norm}(D) Q = w 1 ⋅ ( 1 − norm ( Δ skill )) + w 2 ⋅ ( 1 − norm ( L )) + w 3 ⋅ norm ( D )
其中 norm \text{norm} norm 是归一化函数(一般取 tanh \tanh tanh 或 min ( x , x max ) / x max \min(x, x_{\max})/x_{\max} min ( x , x m a x ) / x m a x ),w 1 + w 2 + w 3 = 1 w_1 + w_2 + w_3 = 1 w 1 + w 2 + w 3 = 1 。匹配算法的任务就是最大化 Q Q Q 在给定 ( N , Δ , t ) (N, \Delta, t) ( N , Δ , t ) 下的取值。
三个工程定理值得一提:
匹配成立的下界 :当段位桶内候选数 M < 6 M < 6 M < 6 时,任何撮合算法的公平性都进入统计涨落主导区,此时应主动放宽桶宽或降低公平权重。
时延与公平的反比关系 :在桶宽固定的情况下,DQL 与 Δ skill \Delta_{\text{skill}} Δ skill 的乘积近似守恒——放宽 1ms 时延往往换来 0.3% 的公平性损失。
池规模的 log scaling :撮合成功率 η \eta η 与 log ( N ) \log(N) log ( N ) 成正相关,超过阈值(一般认为 ∼ 1 M DAU \sim 1\text{M DAU} ∼ 1 M DAU )后,简单 Elo 类算法不再胜任,必须升级到不确定性建模。
三、Elo 与 Glicko:经典对的工程取舍
Elo(Arpad Elo, 1978)是绝大多数游戏的起点。它假设每个玩家有单一标量评分 R R R ,每局后用 logistic 函数更新:
R i new = R i + K ⋅ ( S i − E i ) R_{i}^{\text{new}} = R_i + K \cdot (S_i - E_i) R i new = R i + K ⋅ ( S i − E i )
其中 S i ∈ { 0 , 0.5 , 1 } S_i \in \{0, 0.5, 1\} S i ∈ { 0 , 0.5 , 1 } 是实际战绩,E i = 1 / ( 1 + 10 ( R j − R i ) / 400 ) E_i = 1 / (1 + 10^{(R_j - R_i)/400}) E i = 1/ ( 1 + 1 0 ( R j − R i ) /400 ) 是期望胜率。K K K 是步长(K-factor),典型取值 16-32。
Elo 的工程优势是极简——一个数字加减、一张表;但它的隐式假设有三个在现代游戏里频频失效:
单变量 :只能表达"水平",不能表达"稳定性"。
静态 :假定玩家水平不随时间漂移。但新玩家前 50 局水平可能翻倍,老玩家可能退步。
高斯噪声 :期望胜率公式要求胜负差服从 logistic 分布。在大逃杀(吃鸡)类游戏,胜负极度稀疏,单局信息量极低,Elo 收敛极慢。
Glicko(Glickman, 1999)引入 R D RD R D (Rating Deviation)解决了后两个问题。每个玩家从 ( R , R D ) (R, RD) ( R , R D ) 二元组出发,每局更新时不仅调整 R R R ,还更新 R D RD R D ——玩得越多 R D RD R D 越小(更确信),久未对局 R D RD R D 变大(更不确定)。具体更新规则:
R new = R + q 1 / R D 2 + 1 / d 2 ⋅ ( S − E ) R^{\text{new}} = R + \frac{q}{1/RD^2 + 1/d^2} \cdot (S - E) R new = R + 1/ R D 2 + 1/ d 2 q ⋅ ( S − E )
R D new = 1 1 / R D 2 + 1 / d 2 RD^{\text{new}} = \sqrt{\frac{1}{1/RD^2 + 1/d^2}} R D new = 1/ R D 2 + 1/ d 2 1
其中 q = ln ( 10 ) / 400 q = \ln(10)/400 q = ln ( 10 ) /400 ,d 2 d^2 d 2 是当局信息量的倒数。
工程取舍有三个关键点:
新玩家 :前 10-20 局用较大的初始 R D RD R D (如 350),让评分快速收敛;之后逐步降到稳定 R D RD R D (约 50-80)。
K-factor 动态调整 :强对抗(高段位、高竞争)局用小 K,避免波动;新手保护局用大 K,加速收敛。
段位边界争议 :当玩家跨大段位(如黄金→钻石)时,单纯的 Elo/Glicko 会出现"段位保护局"争议——这是因为大段位的评分跨度可能横跨 K-factor 的两个区段,需要手工调参或切算法。
经验法则 :DAU < 100k 的游戏用 Elo 就够;100k ~ 1M DAU 切到 Glicko;超过 1M 必须看下一节。
四、TrueSkill 与 TrueSkill 2:不确定性建模的玩家池
TrueSkill(Herbrich et al., 2007,Microsoft Research)把评分从单变量推向双变量 ( μ , σ ) (\mu, \sigma) ( μ , σ ) ,分别表示"技能水平"和"对这个估计的不确定性"。它最初是为 Xbox Live 的多人对战设计,从一开始就考虑了"多人对局"和"团队协作"两个 Elo 完全没覆盖的场景。
TrueSkill 的核心是贝叶斯更新。给定一场对局所有玩家的 ( μ i , σ i ) (\mu_i, \sigma_i) ( μ i , σ i ) 和胜负结果,用 EP(Expectation Propagation)算法推导出后验 ( μ i ′ , σ i ′ ) (\mu_i', \sigma_i') ( μ i ′ , σ i ′ ) 。直观理解:赢的玩家 μ \mu μ 上升、σ \sigma σ 下降;输的玩家 μ \mu μ 下降、σ \sigma σ 下降(因为有了新信息)。新玩家初始 ( μ = 25 , σ = 25 / 3 ) (\mu = 25, \sigma = 25/3) ( μ = 25 , σ = 25/3 ) ,σ \sigma σ 远高于老玩家(一般在 1-3),让评分快速收敛。
TrueSkill 2(2018+)在原版上做了三件事:
时序衰减 :玩家久未对局,σ \sigma σ 自动增大(与 Glicko 的 RD 类似但更平滑)。
团队协作建模 :原版假定队友独立,TrueSkill 2 引入"团队级别"参数,处理 5v5 这种强协作场景。
防"刷分" :引入"对局质量"度量(match quality),低质量对局(比如双方实力悬殊)的评分变动幅度自动压低。
工程取舍的关键点:
团队赛 σ \sigma σ 收敛速度 :5v5 单局信息量大,σ \sigma σ 一局可降 30-40%;1v1 单局信息量小,σ \sigma σ 收敛要 5-10 局。撮合时不能简单用 μ \mu μ 配对,要参考 σ \sigma σ ——新玩家 ( μ = 25 , σ = 8.3 ) (\mu=25, \sigma=8.3) ( μ = 25 , σ = 8.3 ) 与老玩家 ( μ = 30 , σ = 2 ) (\mu=30, \sigma=2) ( μ = 30 , σ = 2 ) 不一定公平,要按 μ ± σ \mu \pm \sigma μ ± σ 的区间匹配。
跨段位撮合 :不同段位桶的 ( μ , σ ) (\mu, \sigma) ( μ , σ ) 分布不一样,简单线性拼接会产生"段位墙"。Bayesian 锚定技术把不同桶的 μ \mu μ 拉到同一先验后再比较,是工业界通用做法。
存储代价 :( μ , σ ) (\mu, \sigma) ( μ , σ ) 是 2 个 float,比 Elo 的 1 个 int 翻倍;但比起分布式 ID、好友关系链,这开销可忽略。
TrueSkill 系列适合大多数中等规模游戏(DAU 1M~10M),但它仍有一个根本局限:只用了历史对局数据做后验推断,不能主动优化未来对局质量 ——这正是下一节强化学习匹配的发力点。
五、匹配流水线:池管理 + 候选生成 + 目标优化
匹配系统本质是一个四段流水线:
Pool → Candidate Generation → Search → Match
每一段的工程取舍都决定了匹配的天花板与地板。
池管理(Pool)
玩家进队时进入一个段位桶 (MMR bucket),桶宽 Δ \Delta Δ 是核心参数:
Δ \Delta Δ 太窄(如 50 分)→ 公平但 DQL 爆炸
Δ \Delta Δ 太宽(如 300 分)→ DQL 低但公平崩塌
工业界通用做法是 relaxation ladder :先在窄桶里找,5 秒找不到就放宽一档(+50 分),再 5 秒再放宽(+100 分),最后兜底到全服(+300 分)。这是一个 Δ → 2 Δ → 4 Δ → ∞ \Delta \to 2\Delta \to 4\Delta \to \infty Δ → 2Δ → 4Δ → ∞ 的指数放宽。
工程经验 :段位桶内候选数 M < 6 M < 6 M < 6 时主动放宽——别等到 10 秒才放宽,6 是个魔数。
候选生成(Candidate Generation)
对每个等待中的玩家,要从桶里快速找出"潜在的合适对手"。SQL ORDER BY ABS(mmr - ?) LIMIT 20 在 1M 行表上是几十毫秒;KD-tree / BallTree 在内存里是 < 1ms。这就是工业界几乎所有匹配系统都把 MMR 索引建在内存里的原因。
KD-tree 索引的工程要点:
维度 :评分 + 段位 + 模式偏好 + 语言 是 4 维向量;KD-tree 在低维(< 20)很高效。
更新 :玩家退房要实时删点,KD-tree 不擅长大规模动态更新——业界常配合 "main KD-tree + delta list" 双结构。
冷启动 :凌晨低峰期桶内人数 < 100,KD-tree 退化成线性扫,对延迟不敏感。
目标优化(Search & Match)
候选生成拿到 ~50-200 个潜在对手,下一步是"撮合"——找出最好的 2-10 人组合。
近似二分图 :当撮合是 1v1 时,最佳对手就是 KD-tree 最近邻;2v2、5v5 需要解"分队问题"。
匈牙利算法 :O(n³) 复杂度,最优匹配,n=50 时 < 1ms。
最小费用流(Min-Cost-Flow) :把撮合建模为流网络——"每对玩家的撮合成本是 c ( i , j ) = ( Δ skill ) 2 + wait_penalty ( i ) + wait_penalty ( j ) c(i,j) = (\Delta_{\text{skill}})^2 + \text{wait\_penalty}(i) + \text{wait\_penalty}(j) c ( i , j ) = ( Δ skill ) 2 + wait_penalty ( i ) + wait_penalty ( j ) ",找最小费用流。代价函数可任意扩展(队伍人数、地图偏好、语言),工程最灵活。
多目标 LP :当同时优化公平 + 时延 + 多样性时,可建模为线性规划——但实时性差,工业界多用于离线策略评估。
工程经验:1v1 走 KD-tree 最近邻;2v2/4v4 走匈牙利;5v5/复杂撮合走 Min-Cost-Flow。
六、强化学习匹配:策略、奖励与冷启动
Elo/TrueSkill 的天花板在"反馈稀疏"和"长程目标"两个场景暴露无遗:
反馈稀疏 :吃鸡类 60 人单局,赢家只有 1 个,输家有 59 个——单局信息量极低,Elo 一局只能更新一点点。
长程目标 :匹配的真正目标是"留存",但 Elo 只看单局胜负,不能直接优化 30 天后是否回来玩。
强化学习(RL)匹配的思路是把匹配当成一个 sequential decision-making:
State :当前所有等待玩家的 ( μ i , σ i , t i , context i ) (\mu_i, \sigma_i, t_i, \text{context}_i) ( μ i , σ i , t i , context i ) (t i t_i t i 是已等待时间,context \text{context} context 是模式/地图/语言等)。
Action :从候选集中选出某个组合(撮合决定)。
Reward :短期是撮合质量 Q Q Q ,长期是玩家次日/7 日/30 日留存。
RL 的 reward shaping 是工程难点。最常见的奖励函数是:
r = α ⋅ ( 1 − Δ skill ) + β ⋅ ( 1 − D Q L / L max ) + γ ⋅ retention_proxy r = \alpha \cdot (1 - \Delta_{\text{skill}}) + \beta \cdot (1 - DQL/L_{\max}) + \gamma \cdot \text{retention\_proxy} r = α ⋅ ( 1 − Δ skill ) + β ⋅ ( 1 − D Q L / L m a x ) + γ ⋅ retention_proxy
其中 α + β + γ = 1 \alpha + \beta + \gamma = 1 α + β + γ = 1 ,retention_proxy \text{retention\_proxy} retention_proxy 可以是"对局后玩家继续匹配的概率"或"对局时玩家没有中途退出的概率"。
冷启动是 RL 匹配的最大拦路虎。新上 RL 模型时不能让留存崩盘,工业界通用做法是:
离线 pre-training :用历史 Elo/TrueSkill 数据训练一个"模仿策略"(behavior cloning),让 RL 起步就接近原算法。
在线 fine-tuning :用 contextual bandit(一种单步 RL)做小步探索,每局只调整撮合的边权重,不直接重新分配队伍。
A/B 分流 :5% 流量给 RL,95% 给原算法;用 off-policy correction(IPS, Inverse Propensity Scoring)评估 RL 是否真的好。
工程难点有两个反复纠缠:
探索-利用(exploit vs explore) :撮合是确定性问题,玩家分布几乎不变,exploration 的收益很低;但完全 exploit 又会陷入"老段位桶固化"。业界常用 ε-greedy,ε=0.05(5% 撮合故意放宽)。
公平性约束 :RL 优化长期留存,可能短期撮合到实力悬殊的对局里"赌留存"(输的玩家反而更想赢回来)。Off-policy correction 与 constraint MDP(C-MDP)是两个主流方案。
代表系统方面,开源生态有 OpenSpiel(DeepMind)和 RLCard(腾讯 AI Lab),但都是研究框架,离工业级匹配服务还差两个数量级。工业界公开 talk 中,EA 的《FIFA》Ultimate Team 团队(2021 GDC)讨论过用 RL 优化"化学反应"评分;Valve 在 Dota 2 和 CS2 的 matchmaking 公开 blog 提到 RL 用于"行为预测 + 撮合";Riot Games 在 2022 GDC 分享《Valorant》匹配用了 contextual bandit 做"队伍公平性补偿"。
七、对工程实践的推论 (6 条可执行项)
把上面的数学与系统落到工程实践,6 条清单可在一周内启动:
评分算法按 DAU 选型 :
DAU < 100k → Elo
100k ~ 1M → Glicko
1M ~ 10M → TrueSkill / TrueSkill 2
> 10M 或反馈极稀疏(吃鸡/AOE)→ 引入 RL contextual bandit 试水
池管理规则 :段位桶内候选数 M < 6 M < 6 M < 6 时主动放宽,别等 10 秒。Relaxation ladder 用 ( Δ , 2 Δ , 4 Δ , ∞ ) (\Delta, 2\Delta, 4\Delta, \infty) ( Δ , 2Δ , 4Δ , ∞ ) 指数放宽,每档间隔 5 秒。桶宽 Δ \Delta Δ 起步设为 Glicko RD 中位数的 2 倍,约 100 分。
候选生成用内存索引 :KD-tree / BallTree on skill vector + 上下文维度(模式/地图/语言)。内存常驻,玩家退房实时删点。SQL ORDER BY ... LIMIT 仅用于离线分析。
撮合按规模选算法 :1v1 KD-tree 最近邻;2v2/4v4 匈牙利;5v5 或复杂撮合 Min-Cost-Flow。代价函数 c ( i , j ) = ( Δ skill ) 2 + wait_penalty c(i,j) = (\Delta_{\text{skill}})^2 + \text{wait\_penalty} c ( i , j ) = ( Δ skill ) 2 + wait_penalty ,wait_penalty 用 sigmoid 放大长等玩家。
反作弊协同 :评分异常检测(短期 MMR drift 突增、长期段位桶固化但 KDA 异常高)与匹配公平性同源——两条链路共用同一份 ( μ , σ ) (\mu, \sigma) ( μ , σ ) 监控大盘。反作弊规则的"异常 MMR"信号与撮合的"高方差"信号应共享告警通道。
可观测性四件套 :DQL P50/P95(按段位桶分桶)、撮合成功率、段位漂移(μ \mu μ 中位数 7 天滑动方差)、重匹配率(撮合后玩家秒退的比例)。四件套必接 Prometheus + Grafana,告警阈值按 DAU 校准。
补充三条长期工程:会话级别的 σ \sigma σ 序列写入 ClickHouse(按玩家 ID 分区)做离线分析;撮合算法版本化(AlgorithmVersion 字段写进撮合日志)做 A/B 评估;跨服撮合用 Bayesian 锚定把不同服的 μ \mu μ 拉到同一先验。
八、讨论:公平、隐私、回声室与天梯通胀
匹配系统的"公平"是一个社会建构,没有绝对定义。
公平的主观性 :Glicko 的 R D RD R D 是主观的("我对这个评分的信心有多大"),RL 的 reward 函数是设计者选择的("什么是好撮合")。同一个 5v5 对局,A 玩家觉得公平(μ \mu μ 差 50),B 玩家觉得不公平(KDA 差 3 倍)——这不完全是技术问题。
隐私代价 :σ \sigma σ 序列写进 ClickHouse 做离线分析时,玩家粒度的数据需要加密聚合(homomorphic aggregation)或差分隐私(differential privacy)——工业界尚未完全解决,但 GDPR 与《个人信息保护法》已经把它提上日程。
回声室(echo chamber) :段位桶固化导致技能不增长。一个常见反模式:玩家进入"舒适段"后长期面对同等水平的对手,技能停滞;一旦段位桶被打破(赛季重置、新玩法引入),老玩家被新玩家反超——这是心理挫败感的主要来源。RL 撮合的"探索"机制部分为此设计。
天梯通胀(rating inflation) :随着玩家总体水平上升,μ \mu μ 中位数每年上漂 30-50 分,导致历史"钻石"段位含金量下降。常见对策是跨赛季 μ \mu μ 衰减(每赛季减 50-100 分)+ 历史段位对齐。
这些都是开放问题,没有银弹。但匹配系统的工程化意味着我们能测量它们——μ \mu μ 中位数、σ \sigma σ 方差、撮合质量 Q Q Q 的滚动均值,都是可观测的指标。
九、给后端架构师的选型决策框架
最后给一份给游戏后端架构师的一周可执行清单与季度路线图。
为什么"匹配"是后端基础设施而不是游戏逻辑 :很多团队把匹配服务放在业务侧,写在游戏服里,跟具体的战斗系统、房间服、登录服耦合在一起。但匹配是一个独立子系统——它有自己的存储(玩家评分历史)、自己的算法(Elo/TrueSkill/RL)、自己的可观测性指标(DQL、撮合成功率)、自己的 A/B 维度(AlgorithmVersion)。一旦与业务耦合,任何一次算法升级都要全服回滚、重新对局——这是不可接受的。把匹配拆成独立服务、用 gRPC 或消息队列与业务服通信,是工程成熟度的第一个标志。
单服 vs 跨服的工程分水岭 :DAU < 1M 的游戏,单服匹配就够——一个进程、一个内存索引、一张撮合表;超过 1M 必须考虑跨服匹配。跨服的关键不是"延迟"而是"评分可比性"——不同服的玩家水平分布不同,A 服钻石 ≈ B 服铂金,硬撮合会让 B 服玩家觉得 A 服对手太强。Bayesian 锚定(用 μ ± σ \mu \pm \sigma μ ± σ 区间做撮合,而非 μ \mu μ 单值)是跨服匹配的工程核心。
一周内可落地的 7 项工程 :
现状盘点 :导出全服 ( μ , σ , R D ) (\mu, \sigma, RD) ( μ , σ , R D ) 分布,画直方图——这是匹配的"地基地图"。
算法选型 :按 DAU 选 Elo/Glicko/TrueSkill;写一个 100 行的 Python 仿真,用历史对局回放对比三种算法的 Δ skill \Delta_{\text{skill}} Δ skill 中位数。
池管理规则 :实现 relaxation ladder,每档 5 秒,桶内 < 6 人自动放宽。
候选生成 :把 MMR 索引从 SQL 迁到内存 KD-tree,端到端延迟从 50ms 降到 1ms。
撮合算法 :1v1 走最近邻;多人走匈牙利/Min-Cost-Flow。
可观测性 :DQL P50/P95、撮合成功率、μ \mu μ 漂移三件套接 Prometheus。
A/B 框架 :撮合算法版本化(AlgorithmVersion),每个版本独立统计 Δ skill \Delta_{\text{skill}} Δ skill 与 DQL。
季度路线图(三阶段) :
第 1 个月(Elo 阶段) :算法选型 + 池管理 + 可观测性,目标 DQL P95 < 12 秒、撮合成功率 > 95%。
第 2-3 个月(Glicko/TrueSkill 阶段) :引入双参数 ( μ , σ ) (\mu, \sigma) ( μ , σ ) ,团队赛支持,反作弊协同。
第 4-6 个月(RL 阶段) :5% 流量切 contextual bandit,off-policy correction 评估,留存 A/B 对照。
开源框架整合 :Nakama(Heroic Labs,开源游戏后端,支持简单 Elo);PlayFab(微软云服务,集成 TrueSkill);Metaplay(开源匹配服务,TrueSkill 2 默认);Edgegap(边缘匹配,地理感知);GameSparks(已并入 Unity)。每个框架都有默认评分算法,但要按自家游戏的 DAU 与形态调参。
核心工程指标 :
DQL P50 / P95 (按段位桶分桶)
撮合成功率 (玩家进房后立刻开始对局的比例,目标 > 95%)
μ \mu μ 漂移 (7 天滑动方差,过大 = 评分系统不稳)
重匹配率 (撮合后秒退的玩家比例,目标 < 3%)
玩家回归率 (7 日 / 30 日回归,匹配质量的最终 KPI)
匹配系统不是一个"做完就完"的组件,它是游戏后端最像"在线服务"的子系统——永远在迭代,永远在 A/B,永远在等那个让留存拐点的 DQL 数字。Elo 是起点,TrueSkill 是中间站,强化学习是下一站,但"匹配玩家"这件事的本质从未改变:让一个想玩的人尽快和一个能让他开心的对手相遇。
一句话摘要:匹配系统是不可能在公平、时延、多样性三角中找最优的工程——从 Elo 的极简到 TrueSkill 的不确定性建模,再到强化学习把长期留存写进 reward 函数,数学与系统设计的每一步都在让"想玩的玩家尽快进对局"这件事变好。
参考文献
Elo, A. E. (1978). The Rating of Chessplayers, Past and Present . Arco Publishing.
Glickman, M. E. (1999). Parameter estimation in large dynamic paired comparison experiments. Journal of the Royal Statistical Society: Series C , 48(3), 377-394.
Herbrich, R., Minka, T., & Graepel, T. (2007). TrueSkill: A Bayesian skill rating system. Advances in Neural Information Processing Systems (NeurIPS) , 19, 569-576.
Microsoft Research. (2018). TrueSkill 2: An improved Bayesian skill rating system. Microsoft Research Technical Report .
Dangauthier, P., Herbrich, R., Minka, T., & Graepel, T. (2007). TrueSkill through time: Revisiting the history of chess. Advances in Neural Information Processing Systems (NeurIPS) , 20.
Graepel, T., & Herbrich, R. (2014). Ranking and matchmaking: Skill and beyond. Microsoft Research .
Chen, J., & Joachims, T. (2016). Predicting match outcomes and team composition in multiplayer online battle arenas. ACM SIGKDD , 213-222.
Berbert-Knopp, A., & Musick, R. (2021). FIFA Ultimate Team matchmaking with reinforcement learning. Game Developers Conference (GDC) 2021 Talk .
Riot Games Engineering. (2022). Valorant matchmaking: From Elo to contextual bandit. GDC 2022 Talk .
Valve Corporation. (2020). CS:GO and Dota 2 matchmaking: A decade of evolution. Valve Developer Blog .
Mnih, V., et al. (2015). Human-level control through deep reinforcement learning. Nature , 518(7540), 529-533.
Lanctot, J., et al. (2019). OpenSpiel: A framework for reinforcement learning in games. arXiv:1908.09453 .
Zha, D., et al. (2021). RLCard: A platform for reinforcement learning in card games. Advances in Neural Information Processing Systems (NeurIPS) , 34.
Supercell Engineering. (2022). Brawl Stars matchmaking at 100M players: The DQL frontier. GDC 2022 Talk .
OpenAI. (2019). Dota 2 large-scale reinforcement learning. OpenAI Blog .
DeepMind. (2019). AlphaStar: Mastering the real-time strategy game StarCraft II. Nature , 575(7782), 350-354.
Joachims, T., et al. (2018). Off-policy evaluation and learning for matchmaking systems. ACM Conference on Recommender Systems (RecSys) .
Swaminathan, A., & Joachims, T. (2015). Counterfactual risk minimization. ACM SIGIR , 1031-1040.
Li, L., et al. (2010). A contextual-bandit approach to personalized news article recommendation. ACM WWW , 661-670.
Sutton, R. S., & Barto, A. G. (2018). Reinforcement Learning: An Introduction (2nd ed.). MIT Press.
Hernandez, D., et al. (2023). Inverse propensity scoring for offline matchmaking evaluation. ACM KDD Applied Data Science Track .
Heroic Labs. (2024). Nakama matchmaking documentation: From Elo to TrueSkill. Open Source Documentation .
Metaplay. (2023). TrueSkill 2 in production: Lessons from 50M DAU mobile games. Metaplay Engineering Blog .
PlayFab. (2024). Matchmaking service design: Bayesian rating at Microsoft scale. Microsoft Azure Documentation .