Hey guys.

Elo is now live on UK1 – please check it out and let me know if you see any problems.

Your Record is still based on all games played, but currently your Elo is only based on games which took place on UK1. I’ll be trying to find the best way to address this, and I know it’s not ideal, but there’s been a huge demand for Elo and this should be most of the way there.

For those interested in the maths of my Elo implementation, we have:

Initial Elo rating of 1200

Max “game score” of 32 units

Games are proportionised into [-100,100], in an attempt to rate all the modes fairly. I’m open to all feedback on this.

EDIT: As usual we have lots of conflicting opinions about the relative merits of some of this. We’ll be discussing it at length with our advanced userbase and coming up with the best system.

EDIT 2: A bug has been fixed and the base rating moved to 1200. And the rankings look very different!

Here’s the code in case anyone’s interested (or can spot a bug!) (%k us 32):

function eloExpectedScore(%myRanking, %hisRanking)

{

return 1.0 / (1 + mPow(10, ((hisRanking – myRanking) / 400.0)));

}

function newRanking(%myOldRanking, %hisRanking, %myScore, %k)

{

return %myOldRanking + %k * (%myScore – eloExpectedScore(%myOldRanking, %hisRanking));

}

function postEloScore(%p1, %p2, %score)

{

// some code

%newElo1 = newRanking(%p1Elo, %p2Elo, %adjscore, $eloGameScore);

%newElo2 = newRanking(%p2Elo, %p1Elo, 1 – %adjscore, $eloGameScore);

// some more code

}

function eloAdjScore(%score)

{

return propise(%score, -100, 100);

}

function propise(%n, %low, %high)

{

if (%n <= %low)

return 0;

else if (%n >= %high)

return 1;

else

{

return (%n – %low) / (%high – %low);

}

}

Next up – two week timeout!