Connection ErrorBad RequestThis page went staleSession ExpiredSign in requiredForbiddenNot FoundToo Many RequestsServer ErrorBad GatewayService UnavailableGateway TimeoutHTTP Version Not Supported
Session Expired
Your session has expired. Please log in to continue.
Sign in required
You need an account to do that. Sign in or create one — it only takes a minute.
This page went stale
Your security token was rejected, usually because the page sat open too long or you signed in elsewhere. Nothing was saved. Reload the page and try again.
Request Failed
We encountered an issue while processing your request.
Please check your internet connection and try again.
Regarding the rating: the system has been changed periodically, but in the latest HD mod updates, obscure elements have been almost completely removed.
The rating in the lobby now is simply an ELO rating with a coefficient that depends on the map size.
The rule for changing the rating as a result of a game is now as follows: R1 += K*(RES - 1/(1 + 10^((R2 - R1)/400))) R2 -= K*(RES - 1/(1 + 10^((R2 - R1)/400))) Here, R1 is the rating of the first player, and R2 is the rating of the second player. RES is 1 if the first player wins; 0.5 if it's a draw; 0 if the second player wins.
The coefficient K depends on the size of the map being played: K = 60 * ([map width in cells] * (1.5 if with Dungeon) / (144 * 1.5)). For example: XL+U: K = 60 L+U: K = 45 XL-U: K = 40 L-U: K = 30 M-U: K = 20
By the way, there's a slightly different formula in HotA. Is there a difference?
Let R1 and R2 be the initial ratings of the players.
The player rating difference coefficients are calculated as follows: f1=max(-1, min((R1-R2)/400, 1)); f2=max(-1, min((R2-R1)/400, 1)); where min and max are functions that return the minimum and maximum of two numbers.
The points awarded for a win (WP) and a loss (LP) are calculated as follows: WP1=max(1, 16*(1+f1)); WP2=max(1, 16*(1+f2)); LP1=min(-1, 16*(-1+f1)); LP2=min(-1, 16*(-1+f2));
If the first player wins, then R1->R1+(int)WP2; R2->R2+(int)LP1;
if the second player wins, then R1->R1+(int)LP2; R2->R2+(int)WP1;
if the game ends in a draw, then R1->R1+(int)((WP2-WP1)/2+0.5); R2->R2+(int)((WP1-WP2)/2+0.5);
where (int) is a function that returns the integer part of a number.