algorithmratingrating-system

How to find rating in a 1v1 match based on the score?


So I am developing a game where there will be two players both having an initial rating.

Now, I want to calculate new rating based on their score.

For eg: if player1 scores 50(unitless) and player2 scores 30, then player1 rating should increase more then in the case where player1 scores 40 and player2 scores 30 and wins by a great margin.

The Elo rating system only takes account of wins and losses and not the margin of winning.

Any help would be appreciated.


Solution

  • A simple solution is: increase the winning players rating by abs(player1.score - player2.score) and decrease the loser's rating by the same amount.

    I would suggest modifying this method slightly to make it more robust, for example: 10*ln(abs(player1.score - player2.score))

    Edit

    Define: S(X) = score after X matches and E(X) = elo after X matches. We are interested in calculating S(X+1).

    S(X+1) = S(X) + k*(E(X+1)-E(X))*ln(abs(player1.score - player2.score)).
    

    Here, k is a constant that can be tweaked by trial and error. This model takes into account both rating difference (via elo) and score difference.