Rating

Rating aims to be a quantitative measurement of your skill compared to others in multiplayer games and is loosely based off the Elo Rating System common in Chess. Players start with a rating of 1000 on account creation, which increases or decreases as games are played. Rating is affected only when you play rated games. The changes in the players' ratings depend on the results and on their ratings before the match. Winning rated games increases rating, while losing decreases the rating. Unlike in Chess, draws in Arcanists 2 result in no rating loss. Additionally, if you are in a team game and resign but your team still wins, you will lose rating.

Rating is intended as a means to match players with other players of similar skill, so that matches would be balanced and interesting. However, some players value rating highly and as a result there is competition for the highest rating.

## Rating Formulas

### The Rating Formula for 1v1

In 2 player games, the amount of rating gained or lost depends upon the difference in rating between the 2 players. A maximum of 38 rating can be gained if a player beats another who has a much higher rating. the minimum gain is 1 point for beating a player with a much lower rating. The inverse applies for losing games and -38 rating is lost for losing to a player with a much lower rating, 1 is lost for losing to a player with a much higher rating. The gain/loss is approximately 20 for players with equal ratings. The 1/38 min/max is achieved with a rating difference of 1000. If the rating difference is greater than 1000 between two players, they will not be able to queue versus each other.

The formula for rating gains and losses in 1v1 games can be calculated by the following python program (rough version):

```
def r():
    winner = int(input("1st Rating: "));
    loser = int(input("2nd Rating: "));
    print("1st Wins: " + str((40.0\*(1.0 - (1.0 / (1.0 + 10.0 \*\* ((loser-winner)/700.0)))))));
    print("2nd Wins: " + str((40.0\*(1.0 - (1.0 / (1.0 + 10.0 \*\* ((winner-loser)/700.0)))))));

```

### The Rating Formula for 3 Player Free-For-All

For a 3FFA, you can use the same formula above to calculate the Winner's rating. The 2 Losers would have their ratings averaged for the calculation and share the loss of rating.

For example, if the winner's rating was 631, and the loser's rating were 775 and 1041, you would average the loser ratings, so 908, then plug them into the formula (40.0\*(1.0 - (1.0 / (1.0 + 10.0 \*\* ((loser-winner)/700.0))))) to get 28 (rounded down). This would be the winner's rating gain, and the loser's rating would be (28 / 2) for a loss of -14 each.

The formula for rating gains and losses in 3FFA games can be calculated by the following python program (rough version):

```
def ffa():
    winner = int(input("Winner Rating: "));
    loser1 = int(input("Loser 1 Rating: "));
    loser2 = int(input("Loser 2 Rating: "));
    loser = (loser1+loser2) / 2;
    calcWin = str(math.floor(40.0\*(1.0 - (1.0 / (1.0 + 10.0 \*\* ((loser-winner)/700.0))))))
    calcLoss = str(math.trunc(int(calcWin) / 2));
    print("Winners Rating: " + calcWin);
    print("Loser's Rating: " + calcLoss);

```

### The Rating Formula for 4+ Player Free-For-All

For a 4 Player or greater FFA, you can use a similar formula to the one above to calculate the Winner's rating. The caveat however is that you must multiply the winners rating like so: ratingWon\*(playerCount-2). Then the Losers would have their ratings averaged for the calculation and share the loss of rating.

For example, if the winner's rating was 827, and the loser's rating were 779, 657, and 603, you would average the loser ratings, so 679.667, then plug them into the formula (40.0\*(1.0 - (1.0 / (1.0 + 10.0 \*\* ((loser-winner)/700.0))))) to get 29 (rounded down). This would be the winner's rating gain, and the loser's rating loss would be 29 (winner) / 3(losers) = 9.667 rounded down to a 9(rating loss) for each of the 3 losers.

The formula for rating gains and losses in 4FFA games can be calculated by the following python program and works for 5 or 6 FFA games as well (rough version):

```
def players(num):
    players = [];
    for i in range(num):
        players.append(int(input(f"Enter Rating {i+1}: ")));
    winner = players[0];
    loser = 0;
    for j in range(1, num):
        loser += players[j];
    loser /= len(players) - 1;
    calcWin = str(math.floor((40.0\*(1.0 - (1.0 / (1.0 + 10.0 \*\* ((loser-winner)/700.0))))) \* (num - 2) - 1));
    calcLoss = str(math.trunc(int(calcWin) / (num - 1)));
    print("Winners Rating: " + calcWin);
    print("Loser's Rating: " + calcLoss);

```

### The Rating Formula for Team Games

Average of Red Team and Average of Blue Team, inserted as ratings 1 and 2 in the Python Program.