导语:近日,一名ID叫Dave的工程师在其新闻博客flashed.gg上发文,称自己通过逆向工程近似确定了由HLTV构建,并被CS:GO社区广泛使用的Rating 2.0计算公式。

CS:GO作为一款机制简单易懂的游戏,在竞技层面却又变得格外复杂。虽然说枪战游戏的本质是击杀对手,但由于CS:GO比赛中T方与CT方的目标分别是引爆C4和防止C4爆炸,因此单纯“击杀”的重要性从一定程度上被削弱了。这就是为什么在一局游戏结束后,玩家们会查看自己的各项数据统计,而不仅仅是击杀和死亡这两项。只要有一项数据在全队中较为突出,就说明他对于全队表现起到了一定的积极作用,也从而找到了心理慰藉。

但在职业比赛中,人们希望能有一项统一的数据来评估选手的实力强弱与发挥好坏。最开始,大家使用的是“击杀死亡比”K/D(或K-D)来判断一名选手的价值,不过逐渐发现这种判断方式只在75%左右的情况下是合理的,而且在比较两场回合数不同的比赛时具有很强的欺骗性——回合数越少,死亡数越低,K/D越容易虚高。

第一个尝试解决判断标准问题的是HLTV,他们在2010年首次提出了用rating评估选手能力的概念,并公布了他们设计的第1套rating算法,即所谓的Rating 1.0。Rating 1.0包含三个数据元素:每回合击杀数(KPR)、回合存活率,以及多杀回合数。

在Rating 1.0推出后的7年里,CS竞技圈不断蓬勃发展,CS:GO的推出也将职业化提升到了一个全新的高度,各支战队中选手的角色分化愈发明显:有人负责火力输出,当明星选手,有人则负责打辅助;有人在攻打包点时负责突破,有人负责补枪,还有人负责断后打残局等等。HLTV意识到,再使用简单的Rating 1.0公式来衡量选手对战局的影响力已经不合时宜了。他们需要一个全新的rating算法来尽可能将比赛的各个层面均考虑入内,于是,2017年6月14日,Rating 2.0横空出世。

与Rating 1.0不同的是,这一次HLTV出于保密原因没有公布Rating 2.0的计算公式。不过,他们还是列出了公式中包含的5个变量:回合贡献率(KAST)、击杀、存活、影响力rating(Impact)和伤害。

既然变量已知,那么通过HLTV详尽的数据库从理论上来说应该就能逆向工程推算出公式本身了,而这也是一名ID叫Dave的工程师所做的事情。首先,Dave通过对数据的观察与思考,大胆猜测这是一个线性方程,意思是所有变量是通过加权相加减的方式来得出最终rating数值的。随后,他编写了一个爬虫工具扒下HLTV网站上一众选手的信息,包括其比赛数据。接下来,Dave随机假设一个线性方程,然后用回归的方式逐渐逼近真实方程的各项系数。

Dave本来想先得到一个近似的线性方程,然后再考虑其它复杂的可能性。然而,线性回归的结果却已经无比精确:R2高达0.995,误差也都小于0.01。在考虑到rating均只保留两位小数后,Dave将所得数据进行了四舍五入,得到了一些近乎完美的测试数据。

其中仍有个别数据存在0.01的误差,Dave也对此给出了解释:HLTV在计算Rating 2.0时CT方和T方所使用的公式略有不同,而他得到的“统一公式”没有对其进行区分。不过,结果已经足够准确了。如下就是Dave得到的Rating 2.0计算公式:






Rating 2.0 = 0.0073×KAST + 0.3591×KPR - 0.5329×DPR + 0.2372×Impact + 0.0032×ADR + 0.1587

式中英文变量解释如下:

  • KAST:回合贡献率,是“Kill、Assist、Survive和Trade”的首字母缩写,指选手完成击杀、助攻、存活,或死亡时队友补枪成功的回合数占比赛总回合数的比例
  • KPR:每回合击杀数
  • DPR:每回合死亡数
  • Impact:影响力rating,这是一项HLTV自创并相对Rating 1.0计算方式有所升级的数据指标,衡量选手完成多杀、首杀和残局等对比赛进程的影响力大小,具体计算方法亦未公布
  • ADR:平均每回合造成伤害

那么,这个公式意味着什么?

乍一眼看去,DPR所占权重最高,甚至高于KPR,这似乎与社区对CS:GO的定义不符。大家总在说CS:GO是一款对枪游戏,但在HLTV看来,好像存活比击杀对手更为重要一些。但仔细思考后,我们会发现这个公式并没有这么简单。因为,你对敌人开的每一枪,造成的每一点伤害,都会或多或少地影响这个公式中的多项数据。

事实上,我们很难从这个公式中对各项数据的重要性得到一个明确的结论。比如,KAST和ADR从表面上看所占权重分别只有0.0073和0.0032,但这并不意味着它们的重要性就远少于其它三项数据。它们所占权重低的原因纯粹是因为这两项数据的数值通常会比KPR、DPR和Impact大得多——因此,拿到50%的KAST或打出平均每回合大于100点伤害,重要性约等同于多拿1个击杀。

真的如此吗?似乎又不是。因为KAST和Impact还是一个总括性的数据,它们的定义中就一定程度包含了KPR、DPR和ADR。总之,这五项数据相互重叠,且互不排斥。我们从中能够得到唯一似乎正确的结论便是:CS:GO不是一款非黑即白的游戏,你在比赛中的每一个决定并不一定就会提升/降低你的表现(即rating)或队伍胜率。这就回到本文开头所言,CS:GO是一款机制简单易懂,却又格外复杂的游戏。

就连HLTV自己在推出Rating 2.0的时候也表示,不管rating公式做得有多么细致,衡量一名选手表现的最好方式还是亲自观看比赛,用肉眼去鉴别。当然,这并不表明Rating 2.0的价值就近乎为零了。它仍然是一个对选手水平的良好参考,而且相比Rating 1.0来说的确能够更加精准地计算出选手对比赛的影响。像TACO、Xyp9x和fnx等辅助型选手在Rating 2.0推出后也都得到了社区的更多认可。

附:Dave用同样方法还得到了影响力rating(Impact)的近似计算公式,但并未使用HLTV所声称的多杀、首杀和残局等变量,而是仅用每回合击杀和助攻做了近似计算。该公式如下,仅作粗略参考:





Impact ≈ 2.13×KPR + 0.42×APR - 0.41

(尾注:Dave通过逆向工程得到的公式并不是HLTV使用的原始公式,只是一个近似计算方法。HLTV在计算rating时会使用更加精细的数据及计算方法,包括单回合的数据以及选手相对其他人的表现水平等——而且,正如文中所述,CT方和T方的rating计算方法还略有差别)