Sunday, December 30, 2007

Tournament website

I've been spending the last few weekends working on a new project, my Super Turbo Rankings Website. I've finally launched an alpha release. I haven't worked on any styling, right now it's just functionality over form.

I've also taken this opportunity to explore coding in ruby on rails. I could have done this in Perl, which is a language I've developed in professionally, but I thought I'd take this chance to try something new and learn a new language and framework. I was extremely impressed by Ruby, and by the Rails framework. I think it actually took me less time in RoR, even taking in the learning curve, than it would have taken me in Perl!

I want to describe the application a little bit. There are two main pages, the players page and the tournaments page. The tournaments page shows you a list of tournaments, and you can click on a tournament to view details about that tournament. Click on any player name you see to be taken to that player's information page. Right now I only support double elimination tournaments, and I plan on having support for single elimination, round robin, and just a random collection of matches.

On the players page, you can see a list of players ordered by handle. It also shows you the players' TrueSkill ranking. If you click on that player's profile, you can see more information about how their ranking came to be, including a history of all their matches, and how their ranking evolved over time. There's also a graph showing how their ranking has evolved over time.

Your ranking is defined by two numbers, your mu and your sigma. These two numbers define a probability curve. Your ranking is somewhere under that curve, with the most likely ranking being the mu value. The sigma is a representation of your uncertainty. If you have a small simga, your curve is tall and narrow (like the red curve below). If your sigma is high, you have a short and fat curve (like the greed curve below).

Your total level is mu - 3*(sigma). This is a conservative estimate of the actual level , meaning your actual level is probably much higher. This prevents people from winning one tournament, and then being at the top of the rankings forever. Such a player would have a high mu but a low sigma. We don't want that player to be more highly ranked than someone that does well consistently.

I plan to add a plot showing the distribution curve of their ranking.

I also show how a player's ranking evolves over time.

Here's a sample graph:

As expected, the red curve (mu), is always higher than the green curve (level). Also, as expected, as the player plays more games, the level approaches the mu more closely. This is because the player's sigma value goes down over time.

I think this should be a fun way to compare the skill of two players who have never played each other. It's also good to have a detailed record of tournaments. I don't think we have the full brackets for older tournaments (like old Evos), but we can enter the data we do have, and see how the numbers shake out. It is my hope that in the future, this will become the comprehensive site for ST tournament records.


David Boudreau said...

Whoa, congratulations at making the top of the rankings! :)

#1GeeseMaster said...

im da best playa

zass said...

Tokido is #1 now. As we get more data we'll see better players at the top :)

Julian said...

When are you gonna update, Julian? I've been beasting recently.

Jonah said...

HI - I'm writing a game playing site in Rails also.

I am considering using Trueskill as well. Would you consider sharing your ruby alogirthm?

If so - please conact me at :