Re: Skill calculation
Eh, well, I guess that you wanted to ask how skill is calculated. Here is the explanation:
Skill is described by this part of game code (spoilered because of length):
SkillLevelParameters e6df679ae3633529acb47445de71eab7
$::Asset
$::DataContainer
Name Persistence/SkillLevelParams
SPM::SkillLevelComponent
MaxValue 1000.0
Weight 0.6
KPM::SkillLevelComponent
MaxValue 3.0
Weight 0.3
KDR::SkillLevelComponent
MaxValue 5.0
Weight 0.1
OldValueWeight 0.9
MaxValue 1000.0
MinimumTimeRequired 300.0Skill is made up of three stats, each with different weight: 60% SPM, 30% KPM, and 10% K/D ratio. However, the values must be normalized before being weighted and added. They are normalized against the MaxValues (see the code).
You have to remember that skill is built game-by-game by adding or subtracting from your starting skill. In other words, you need to have a starting skill number, then add in data for a game, and you can find out your new skill.
You only need your pre-game skill and the data from one game to make the calculation. The SPM we're using is the combat SPM (score w/out awards), NOT the general SPM (one with award score counted in; that's one that you see in the Battle Report). Take combat score and divide by the round time to find your actual SPM.
Find KPM by dividing your kills by the round time. Simple enough. KDR is listed in in the Battle Report, so that's not an issue either. Any values over the MaxValues from the code (1000, 3, and 5 respectively) are reduced to the max values in order to calculate skill.
It's a three-step calculation:
First, we normalize the values as fractions of the maximum possible (every value will be somewhere between 0 and 1).
(SPM/1000) = nSPM (KPM/3) = nKPM (KDR/5) = nKDR
Next, we place normalized values in the skill equation, add them and multiply by 1000:
[(nSPM * 0.6) + (nKPM * 0.3) + (nKDR * 0.1)] * 1000 = GameSkill
That's how you get GameSkill from that particular game (GameSkill)
Finally, we combine the GameSkill with our starting skill. Data line has a part "OldValueWeight 0.9". It means that our existing skill gets a 0.9 (90%) weight, while GameSkill gets 0.1 (10%) weight. After adding both we get our new skill number (NewSkill)
(OldSkill * .9) + (GameSkill * .1) = NewSkill