尝试收集有关守望先锋(PC)玩家基础的无偏数据

有关《守望先锋》整体玩家数量的信息相对较少。 除了偶尔出现的《守望先锋》开发团队成员的职位外,唯一拥有大量有关玩家基础数据的资源是第三方,例如Overbuff和MasterOverwatch。 尽管这些站点在收集有关用户的信息方面做得很好,这些用户允许他们访问他们的信息,但是他们可以收集的数据受到以下事实的影响:使用第三方服务来跟踪其游戏信息的人可能会投入更多的钱。比您的平均真正随机用户。

因此,为了找到一组准确代表《守望先锋》玩家基础的玩家,您将不得不从《守望先锋》玩家基础中随机选择人员。 我相信我已经获得了一个足够随机且公正的《守望先锋》玩家样本,以确定一些统计数据。


我如何收集数据

暴雪可让所有人在playoverwatch.com/zh-cn/ {平台名称} / {Battletag}上访问其职业概况的有限视图。 因此,通过获取“随机”战役标签并查找他们的职业档案,您可以获得公正无误的《守望先锋》玩家样本。 通过对用户名中包含少于或等于5个英文字母的用户名的每个战场标签执行此操作,您可以创建一个相当大的玩家数据库,该数据库应该基本上不偏向任何特定类型的玩家。 这样做会生成2270791个有效(当时)战斗标签的列表。

就个人而言,我能想到的最大偏差是在《守望先锋》中以英雄命名的用户数量,该用户名称是用户名集的一部分,例如Mercy,Genji或Ana。 这些用户可能固有地倾向于在这些英雄上有更多的游戏时间,这与那些名字较长的其他英雄(例如Widowmaker或Reinhardt)相比会影响他们在该数据集中的表示。 无论如何,我认为这不会过多影响数据集的无偏性。

此处提供的数据是从4月26日上午10点(在《守望先锋》第9赛季结束之前的1-2天)到第10赛季之间下载的。 playoverwatch.com也并非总是即时更新,有时可能需要一天或更长时间来更新您的个人资料。 这的确意味着此后一些配置文件已更改,并且某些数据有些不准确。 但是我相信(并希望)差异不会太大。 此延迟主要影响一段时间内处于非活动状态的配置文件,因此许多配置文件上的SR衰减可能无法正确反映在此数据集中。

OWAPI提供了一种用于解析《守望先锋》玩家职业档案并以JSON格式存储数据的方法。 但是,OWAPI作为服务器运行,该服务器从playoverwatch.com下载网页,执行一些缓存操作并对其进行解析以将其返回JSON文件。 这不是很有效,因为服务器的下载速率不是很高,并且当我以所需的速率发送请求时,服务器也会崩溃。 因此,我决定编写自己的解决方案(顺便说一句,我不会推荐给任何人,这需要大量工作,而且playoverwatch.com上的许多内容实际上都无法正常工作)。 我使用aria2下载了所有网页(分段进行,因为将200万个名字列表传递给它会占用太多内存),然后检查我是否能够成功下载职业球员的网页个人资料,然后仅保留具有技能评分的玩家页面,这表明他们已经完成了排名比赛,因为我只对来自竞争模式的数据感兴趣。 但是,此解决方案无法很好地工作,并且我的用于过滤网页的脚本多次崩溃。 所有这些都导致可以下载和解决的网页总数减少到1567222,而没有发生任何问题。所幸没有删除任何包含来自已完成排名比赛的玩家数据的文件。

之后,我必须从所有这些页面中提取职业资料数据。 OWAPI仅可用于直接从playoverwatch.com服务的网页获取数据,在我的情况下,包含职业简介的网页都存储在本地。 因此,我决定分叉OWAPI并将其剥离到仅包含OWAPI解析部分的库中。 这里也出现了许多问题,导致职业简介的数量减少到了1329189。在摆脱了所有尚未完成入职匹配的职业简介之后,我剩下了426920个简介。

但是,到目前为止,我还没有提到playoverwatch.com的一个大问题。 如果一名球员完成了排名竞赛,并且再也没有碰过该游戏(无论是快速比赛还是竞技比赛),则该网站将显示其上一个比赛赛季的比赛统计数据。 因此,在我收集的所有个人资料中,有很多人可能已经过时,不能代表第9季完成排名比赛的球员。一种确保个人资料显示第9季竞争模式数据的方法是通过检查是否还是没有像Brigitte那样有快速上场的时间(直到第10季她才可以参加比赛)。 Brigitte已于2018年3月20日添加到《守望先锋》的现场版中,这意味着从playoverwatch.com注册的Brigitte上有任何上场时间的每个人其个人资料自那时以来已更新,因此他们的竞争数据是第9季的有效数据。 但是,这的确意味着在第9赛季排名但在我收集此数据时还没有扮演Brigitte的人都不在数据集中。

之后,我剩下了122414个配置文件。 虽然将播放时间像Brigitte那样包含进来确实会大大改变它,但我认为它不会给某些统计数据(例如技能等级分布)带来明显的偏差。 可能会造成偏差的是统计数据,例如玩家的总上场时间或他们所扮演的英雄类型。


安置率

因此,在收集的1329189个个人资料中,有426920个在《守望先锋》的所有竞争季节中的某个时间点完成了他们的位置比赛,而122414在我收集数据的某个时间点之前完成了他们的位置比赛并在实时服务器上打了Brigitte。 结果,我可以自信地说竞争模式第9季的就业率介于32.12%和9.21%之间。

等级/技能等级分布

样本平均SR为2266.29。 每个级别的玩家百分比为:

  • 铜牌:10.25%(12553位玩家)
  • 银牌:21.59%(26427位玩家)
  • 金牌:32.1%(39300名玩家)
  • 铂金:26.55%(32495位玩家)
  • 钻石:6.72%(8232位玩家)
  • 大师:2.13%(2612位玩家)
  • 宗师:0.65%(795位玩家)

分布为钟形。 由于所采样内容的性质和样本大小,我认为最好的近似值是正态分布,平均值为2266.3,标准差为610.1。

3000 SR附近的大峰值显示出有多少玩家让其账户减少了。 每个级别下端的其他高峰可能来自决定在本赛季结束时磨砺以进入更高级别的球员。

技能等级与胜率之间的关系

该图显示了SR与平均胜率之间的明显正相关。 每个级别的玩家的平均赢率是:

  • 青铜:42.52%
  • 银:45.64%
  • 黄金:48.02%
  • 铂金:49.57%
  • 钻石:50.62%
  • 硕士:51.28%
  • 宗师:52.39%

技能等级与水平之间的关系

该图显示,平均而言,技能等级较高的玩家比级别较低的玩家具有更高的水平(因此,玩法也更长)。 较高的技术评分(4000+)的较大差异可能是由于该层中的样本数较少。 影响此数据的一件事是playoverwatch.com并不总是准确地显示玩家级别的事实。 当查看玩家资料时,他们的声望上限为18(5星金色边框/肖像)。 使用搜索功能还可以显示特定的玩家等级,并且不限于第18名,但是它通常会显示比其当前等级低几个等级的值。

某一层的平均玩家水平为:

  • 青铜:191
  • 银:247
  • 金:347
  • 铂金:469
  • 钻石:552
  • 硕士:647
  • 宗师:742

扮演最多的英雄和角色

我个人认为,以下数据应该引起很大的怀疑。 部分原因是个人偏见,但主要是因为作为支持英雄的Brigitte必然会影响哪种类型的玩家拥有她的游戏时间。 不过,我之所以显示此图,是因为阅读此书的人可能会更了解,这是一种有趣的见解,并且因为我在其中花了很多心血,所以我还是愿意展示它(是的,我知道文字很小,但我不知道如何缩放“中等”上的嵌入,只需点击即可查看完整尺寸)。

所有英雄的总游戏时间占该数据集(整体和每个层级)的百分比。

这实际上与杰夫·卡普兰(Jeff Kaplan)所说的每个级别中最受欢迎的英雄很接近,但是很明显,随着时间的流逝,这种变化可能已经改变,并且拥有Brigitte游戏时间的要求也可能会对其产生影响。

每个角色的总体播放时间和每个级别的播放时间占该数据集总数的百分比。

因此,与较低的等级相比,较高的等级中的战车和辅助装置似乎获得了更多的游戏时间。 再次重申一下,因为我觉得这个陈述不够经常,Brigitte的游戏时间要求可能会对此产生重大影响。


我无法真正确认任何数据的准确性,因为我无法访问暴雪有权访问的所有数据。 就个人而言,我认为除了SR分布和获胜率之外的所有事情都可能会产生偏差。 但是就获得SR分布而言,这可能是我想到的最不偏颇的方法。

可以从此处下载所有数据:https://www.dropbox.com/sh/8rad0va37jwizos/AACLzuC98KGIWLHWkZerfKZ-a?dl=0(请注意,某些档案包含大量文件,并占用大量空间)。 可以在我的Github上找到用于生成图形的代码:https://github.com/AthulJP/OWCompetitiveStats

特别感谢OWAPI背后的人们使OW配置文件易于解析。