Scoring system

Started by
3 comments, last by Wai 10 years, 1 month ago

I am designing an algorithm for computing the score of a player who plays 1v1 matches against other players.

The current algorithm is this:

  1. Each player starts with a score of 0
  2. When two players play against each other for the first time, each player gets 2 points from nowhere, and 1 is put at stake from nowhere.
  3. Before a match starts, if one of the players has a higher score, that player puts 1 point at stake. Then each player puts 10% of the score of the player with the least points, rounded up, at stake. (This is done so that if two players alternate in winning, their scores will settle separately.)
  4. The winner of a match takes all of the points at stake.

Effects of this scoring system:

  1. The lowest score a player could have is 0 points.
  2. Even if a player has a score of 0, if a player plays against a new player and win, they will always have a score higher than the new player who has just lost. This effect eliminates the awkward situation in some scoring system where a player who wins against a new player still has a lower score than the new player.
  3. The maximum score a player have depends on the number of pairs of player who have played. A league where each player plays against one another has more points in circulation than a league where only some players had played each other. For example, a 3-player league where A and C only play against B would only have 10 points to circulate, as opposed to 15 points when all three players have played against one another.
  4. When two leagues that normally play exclusively (member of each league only plays against other members of their own league) each sends a representative to play against each other, the amount of points that a league could lose only depends on the score of their representative. This eliminates the unfair situation in some scoring system where the amount the loser loses depends on the difference in their scores. This can result in an unfair advantage when a league intentionally sends a strong player with a low score to take more points from the other league. In the proposed system, a league cannot gain more points than what they risk.

    Example: A has 200 points, B has 100 points. If A loses, A's score becomes 189 and B's score becomes 111. A's score decreases by 11. If they play again and A loses again, A's score becomes 176. This time A loses 1 points because B could put more points at stake. If they play again for the third time, the stake for A would be 14.
  5. If two players with different scores play each other repeatedly, each winning every other game, their scores will settle instead of equalize. (This eliminates the issue in some scoring system where the history of the score could be forgotten.)

    Example: If both players started at 100 points and A wins 5 games straight, the scores would be 143 for A and 57 for B. After that, if B and A only win alternately, the scores will not equalize. A's score will fluctuate between 136 and 128, and B's score will fluctuate between 64 and 72. For B to bring A's score down to 100, B has to win 4 additional times to cancel A's lead in the beginning.

Comments?

Advertisement


Example: If both players started at 100 points and A wins 5 games straight, the scores would be 143 for A and 57 for B. After that, if B and A only win alternately, the scores will not equalize. A's score will fluctuate between 136 and 128, and B's score will fluctuate between 64 and 72. For B to bring A's score down to 100, B has to win 4 additional times to cancel A's lead in the beginning.

So if player B loses 10 games initially and then plays a 1000 games winning alternately the difference between player A and B is still the same as 1000 games ago? If so, those 10 games, which are a tiny fraction of the total amount of games, weigh more than the 1000 after that. Is that the behavior you're looking for? What are the scores supposed to represent?

I am sorry to say that I have no idea about ranking systems, so I cannot comment on yours right now.

However, let me give you a link to the one Halo uses, in case you find it interesting for your purposes: http://research.microsoft.com/en-us/projects/trueskill/details.aspx .

“We should forget about small efficiencies, say about 97% of the time; premature optimization is the root of all evil” - Donald E. Knuth, Structured Programming with go to Statements

"First you learn the value of abstraction, then you learn the cost of abstraction, then you're ready to engineer" - Ken Beck, Twitter

I agree that the score should reflect the winning ratio instead of the lead. Two scores should stabilize when they approximates the winning ratio between the two players. If A has 9 points and B has 1 point, one would expect A to win 9 games out of 10 against B.

Attempt 2 of the design:

  1. Each player starts with a score of 0.
  2. When two players play against each other for the first time, each gets 10 points from nowhere.
  3. Before a match starts, each player sets aside a portion of their score at stake.
    a) If your opponent has 10 times or more points than you have, you put 0 points at stake.
    b) Otherwise, put the 10% of your score, rounded up, at stake.
  4. The winner of a match takes all of the points at stake.

Effects:

  1. The lowest score a player could have is 0 points.
  2. Even if a player has a score of 0, if a player plays against a new player and win, they will always have a score higher than the new player who has just lost. This effect eliminates the awkward situation in some scoring system where a player who wins against a new player still has a lower score than the new player.
  3. The maximum score a player has depends on the number of pairs of player who have played. A league where each player plays against one another has more points in circulation than a league where only some players had played each other. For example, a 3-player league where A and C only play against B would only have 40 points to circulate, as opposed to 60 points when all three players have played against one another.
  4. When two leagues that normally play exclusively (member of each league only plays against other members of their own league) each sends a representative to play against each other, the amount of points that a league could lose only depends on the score of their representative. This eliminates the unfair situation in some scoring system where the amount the loser loses depends on the difference in their scores. This can result in an unfair advantage when a league intentionally sends a strong player with a low score to take more points from the other league.
  5. Regardless their starting scores, if two players play against each other repeatedly, their scores will fluctuate around their winning ratio against each other until the winning ratio exceeds than 9:1. In that case, their scores will not diverge further.
  6. If a 4-player league has members with skills like this: A>B>C>D, then the final distribution would be 110, 10, 0, 0. If the scores are not rounded off, the distribution is 108.26, 10.66, 0.99, 0.09. The multiplier between each gap is about 10.
  7. If a 4-player league has members with skills like this: A>B=C>D, then the final distribution would be around 101, 10, 9, 0, where the score of B and C would alternate.

I am sorry to say that I have no idea about ranking systems, so I cannot comment on yours right now.

However, let me give you a link to the one Halo uses, in case you find it interesting for your purposes: http://research.microsoft.com/en-us/projects/trueskill/details.aspx .

I looked at ELO system but it seems complicated and the meaning of the score is not intuitive. In the system I am describing, the math is arithmetic, and there are almost no formulas to remember. The scores can be easily updated if the players know their own score and who they have played against. Also, the scores directly show the approximated winning ratio. (If A's score is 19 and B's score is 40, it means that the odds are 19:40.)

This topic is closed to new replies.

Advertisement