As an exercise in keeping my programming skills up to date, I recently wrote the game of Go as a Facebook application. Right now, the game has a few hundred members who can play against their friends or practice against a GnuGo bot.
I'd like come up with a way of rating how well the players do against each other. After a bit of research, it seems that some kind of Elo system is the way to go.
I have a number of questions:
The
wiki article on Elo gives a formula for calculating a new rating based on the result of a contest, but it assumes both players had a rating to begin with. If I'm starting in a vacuum, should I just assume a player has an Elo of X at their first game? What's a good value for X? Will this affect what the K-factor should be?
Also, the players may be playing each other with handicaps. How do you calculate an Elo change when one player has elected to play with a handicap (which will be common)?
If someone can point me towards some pseudo-code (or better yet, php code) implementing Elo, that'd be great, too.
Last time I looked at how the USCF did Elo ratings, your first 20 games or so were ranked under a different system as a provisional ranking, to seed your eventual Elo rating.
This subject can be as complicated as you want to make it.
posted by Nelson at 3:30 PM on October 3, 2007