How to accurately track rankings?

chrisofutah

New member
Joined
Jul 7, 2009
Messages
1
I have a risk game website where people can come to play the board game RISK against each other online.

I would like to start tracking the rankings of players.

It would be easy if everybody played everybody else...

Now I'm sort of stumped.

I want to have a really advanced ranking system to rank how good players are in relation to each other. I can see in my mind how this would work sort of...

So the simplest form of this system would be: Player A beats Player B so the rankings are:
A
B

Now say Player A beats Player B and Player C beats Player A so the rankings are:
C
A
B
It is inferred that C is better than B because A beat B and C beat A.

Now I think I could make a system when it's that simple pretty easily, where it gets harder is what happens when I have things like:

A beats B twice. C beats A once. B beats C once.
What would I do in a situation like that?
I want to factor in something like how should I say "inertia" maybe.

So if a really highly ranked player loses once against a low ranked player it doesn't automatically mean the low ranked player is better than the higher ranked player. Or say two people have been playing games against each other and one beats the other 80% of the time. I want that to be reflected even though the one who won 20% of the time may have won the latest game between the two or something. Do you see what I mean?

Anyway, I know this is really random and I probably haven't explained it very clearly, but any ideas are welcome, I'll be checking this thread on and off today and the next day or two.

P.S. something else I was thinking about is maybe since like 5 people can play a game at the same time although 4 of them will lose in the end, they won't lose at the same time, there will be an order to their loss, so i don't think you should punish the first and last ones to lose the same.

Anyway, thanks a lot!

I did look up something about how chess rankings can be done, but that wouldn't work very well for this at least not directly because more than two people can play in a game and I would like to factor in the order of loss like I said above so that the first loser is punished more than the last loser.

Here is the link about how chess rankings are done, I believe this is also how they rank sports teams sometimes:
http://en.wikipedia.org/wiki/Elo_rating_system
 
The chess rating system is not based on win-draw-loss, but on expected points versus actual points. Therefore, as long as you can come up with a way of allocating 'points' in a game (I would suggest, at first, you don't display these points to users), you can apply the ratings system.

computing expected scores is trickier, wikipedia gives \(\displaystyle E_A=\frac{1}{1+10^{(R_B-R_A)/400}}\). Perhaps, instead, you could use

\(\displaystyle E_A=\frac{1}{n-1+10^{(\bar{R}_B-R_A)/400}}\)

where \(\displaystyle \bar{R}_B\) is the average rating of the opponents of A. This assumes that if a player plays against a group of players of equal strength, their expected score is 1/n.

Whatever scheme you do, you should put some code in to look for players who consistently do better or worse than their ratings say they should, or situations (like 'coming second' that happen consistently more or less often than they should). Then you can modify your scoring system, or the whole ratings system to fix the problem...
 
Top