研究如何计算一个玩家在对局开始前的战力值

TL;DR

一个玩家的战力值由排位分,游戏分,英雄分加其他分数组成。

前言

最近尝试计算出对局开始时一个玩家的战力值,顾名思义就是用数值描述这个玩家的能力。初步得出基于排位分 + 游戏分 + 英雄分 + 其他因素的计算公式。

排位分

段位越高的玩家自然表示能力越强,排除代练,买号,代打等情况。以前的 Rank 分就是说明,不过现在 Rank 分被段位取代了,所以这里的排位分模拟 Rank 分。

排位分是一个玩家的基础分数,是决定玩家战力高低的根本,没有定级的玩家会有一个默认分数。

一种情况是以前的段位比现在高,但是本赛季还没有达到之前的段位,这种情况下会补偿一些分数,表示当前段位不是真实实力。

另一种情况是以前最高段位比现在低,说明当前的实力上升,这种情况会取当前段位作为计算基础。

游戏分

根据玩家最近游戏表现计算,有多种计算维度,获取金钱,补兵数,参团率,伤害占比,KDA 等因素。计算最近 10 局游戏的数据,大乱斗和峡谷数据区分。每一局游戏默认 100 分,再根据玩家的数据进行加减,每种因素对一局游戏的影响力不同,所以分值也不同。

计算因子

  1. 获得金钱
  2. 获得经验
  3. 获得击杀
  4. 参团率
  5. 伤害量
  6. 承伤量
  7. 治疗量
  8. KDA
  9. 助攻
  10. 死亡数

英雄分

玩家的英雄熟练度越高分值越高,同时根据英雄当前版本的层级进行加减分。

如果没有熟练度,说明是练英雄,那么英雄分将是负分。

其他因素

  1. 超过多久没玩游戏战力减少,AFK 时间越长战力减少越多;

  2. 组队因素,如果有组队战力值增加;

  3. 分路变化,不熟悉的位置战力减少;

  4. 连败连胜,连胜加分,连败减分

  5. 模式变化 大乱斗 -> 峡谷 战力减少; 特殊模式 -> 峡谷 战力减少;

总结

这个计分方式只是个人研究所得,属于抛砖引玉之作,不足之处欢迎指出,如有更好的方案欢迎联系作者讨论。

参考

https://minihat.github.io/LoL-Match-Prediction

https://github.com/real-web-world/hh-lol-prophet/blob/main/%E8%AE%A1%E5%88%86%E6%96%B9%E5%BC%8F.md

https://shap.readthedocs.io/en/latest/example_notebooks/tabular_examples/tree_based_models/League%20of%20Legends%20Win%20Prediction%20with%20XGBoost.html