Skip to content

An Elo-System for the WW2 shooter "Hell Let Loose".

Notifications You must be signed in to change notification settings

DKConvista/HeLO-System

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 

Repository files navigation

The HeLO-System

Hi, I'm glad you made it. :) I created an Elo-System for the competitive "Hell Let Loose" scene. Yes, there are competitive teams in the game. However, the strength of each team so far always had to be estimated. I'll give you a short introduction of how and why I created this.


What is an Elo System?

An Elo-System is a rating system, created in the 1970s by A. Elo. He designed it to rank chess players. If you have ever played chess online, you may have noticed this number after your name. That's your elo score. Have a look at: Wikipedia.

I slightly adjusted this system and adapted it to HLL ... and I named it HeLO score (short for Hell Let Loose Elo Score).


What Factors influence the HeLO Score?

If you don't have a basic knowledge of how elo systems work, please take a few minutes to read about them. In contrary to chess, the HeLO score depends not only on the final result of the game and your current score.
A victory in HLL can be a 5-0, 4-1 or 3-2. The latter is closer to a draw in chess than a win. Additionally, we don't rate players but whole teams. So another dependency is the number of players played in a certain game. Last, there are friendly matches and competitive matches between the teams. In my opinion that should be weighted differently, too.
To summarize, there are three main factors:

  • the game result
  • the number of players
  • the competitve factor

Calculating the Probability of a Victory

Let's dive a little bit deeper into the maths. Based on the current score of each team, we need to know the probabilty of winning, which can be calculated by the following integral (don't worry, I will strongly simplify it):

D is the difference between the scores of team 1 and team 2. The standard deviation is set to and the mean is 0. As promised, the integral mentioned above simplifies to:

where erf(x) is the Gaussian error function. That's basically it. Let's have a look at a small example. Team A (734) plays against team B (579). The difference is: D = 734 - 579 = 155. Now we just have to insert the numbers in the equation ... and P(D) = 0.708. What does this mean? It means that Team A will win the game with a probability of 70.8%. The probabilty for Team B to win is the counter-probability: 1 - P(D) = 0.292.
Side information: In case the difference D should be greater than 400, the system will take 400 as the maximum. Otherwise, the score gain or loss would be either too significant or absolutely irrelevant.


Calculating the new HeLO Score

For that I copied the formula from chess, but adjusted a few factors (as mentioned earlier):

is the new HeLO score of team n and is the current HeLO score Let's have a closer look on k:

  • a: The "Number of Games" factor. a = 40 for less than 30 games played, a = 20 for more (or equal) than 30 games played
  • c: The "Competitive" factor. Off seasonal time is during Christmas and New Year's eve, easter time and during the summer (1st of July until 31st of August).
    • friendly match (off seasonal): c = 0.5
    • friendly match (on seasonal): c = 0.8
    • competitve match: c = 1
    • competitve match (extra sweaty): c = 1.2
  • N: The "Number of Players" factor. Why is it logarithmic? For me it was not an option to scale the number of players linearly, because it is a huge difference of missing a full squad in a 50v50 game and missing a squad in a 25v25 game. Therefore, this factor decreases even heavier the more players are missing. Fun fact: there have to be at least 3 players on each side. Otherwise the logarithm will be negative (and that is something we don't want to happen).

are the points your team holds at the end of the game normalized to 5.


Guessing the HeLO Score of a new Team

New teams start with a HeLO score of 600. To be honest, there will be exceptions to this. In order to reduce the "settling time", I will guess the strength of a team and give them a score between 550 and 650. The affected team will be informed about that.


Full Example

Let's have a look at a realistic example. Team A (746) plays a competitive match (extra sweaty) against Team B (613). They play with 45 players on each side. Team A played more than 30 games, but Team B is relatively new on scene (played less than 30 games). Team B (everyone sympathizes for the underdog) wins with a score of 4-1.

  1. Calculate the difference: D = 746 - 613 = 133
  2. Calculate the probability of winning for Team A: P(121) = 0.681
  3. Calculate the probability of winning for Team B: 1 - P(121) = 0.319
  4. New HeLO score for Team A:

5) New HeLO score for Team B:

So Team A loses 16 score points while Team B gains 32 score points for beating a better team.

About

An Elo-System for the WW2 shooter "Hell Let Loose".

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%