AllegSkill - Player's ranking

From FreeAllegiance Wiki
Jump to navigationJump to search
Edit.png
Stub This article is incomplete

This is an article about a topic that should be covered in more detail by the FreeAllegiance Wiki, but is lacking in content.

You can help by improving it!


This article describes how player's ranks are updated after a game is completed and transmitted to ASGS. Note that your rank won't change until you log back in, though.

Defining the players

Imagine you have a bunch of people playing on the server, let's say n players. So we label them <math>\{1, 2, 3, ..., n\}</math>.

Now let's pretend the game had an arbitrary number of teams, we'll say <math>k</math> teams. The total population, n, is made up of <math>k</math> non-overlapping subsets - in maths terms:

<math>T_{j}\subset \{1,...,n\}</math> where <math>T_{i}\cap T_{j} = \empty</math> if <math>i\ne j</math>.
  • <math>\subset</math> means "Comprises from", <math>\cap</math> means "intersects".
  • i and j are math terms that can refer to any given team - could be the 1st and 2nd, the 3rd and 6th, whatever.

In layman's terms

  • No player can appear on more than one team at the same time.


There are three variables associated with each player, <math>i</math>. (Similar to before, <math>i</math> now refers to any given player).

  • <math>\mu _i</math>, their average skill.
  • <math>\sigma _i</math>, the uncertainty about their <math>\mu _i</math>.
  • <math>f_{i}</math>, the fraction of the total game played for their team.

There are also three more variables - however these are global variables; in other words are the same for everyone in the game. See here for more details on how they're calculated.

  • <math>\beta</math>, standard variance around performance;
  • <math>\gamma</math>, the dynamics variable that keeps sigma from reaching zero;
  • <math>\epsilon</math>, the draw factor.

Forming the teams

Each team, <math>j</math>, has a total μ and a total σ which is derived from the ratings of its players. Henceforth we will use capitalization to distinguish between players and teams.

Player Team
Mu <math>\mu</math> <math>\Mu</math>
Sigma <math>\sigma</math> <math>\Sigma</math>

So team <math>j</math> 's Mu and Sigma are calculated as below:

<math>\Mu _j=\sum\limits_{i \in T_j}{\mu_i f_i}</math>
  • The average skill of the team is approximately the sum of the average skill of the players; each multiplied by how long they played for, of course.
<math>\Sigma _{j}=\sqrt{\left( \sum\limits_{i \in T_j}{\left( \sigma_i^2 f_i +\beta ^{2}+\gamma ^{2} \right)} \right) -\beta ^{2} -\gamma ^{2}}</math>


  • The uncertainty about the team is just that. Basically it's the players' uncertainties multiplied by the fraction of time played, and then a whole bunch of global variables thrown in.

Winners and Losers

Now that we have a value for the teams' Mu and Sigma we can deal with them as "single players" and use Microsoft's TrueSkill algorithms on them. Once the game is over the winner's and the loser's values are updated using exactly the same formulae as given on the Commander's ranking article, the only difference being we are using Μ and Σ instead of μ and σ.

The updated Mu and Sigma are referred to as Μ' and Σ'.

Note. The acute reader will notice that this is the point that keeps the current incarnation of AllegSkill from supporting multi-team games.


Dividing the spoils of war

Now that we have the updated Μ and Σ for the teams, we have to figure out how this will filter back down to updated μ and σ for the players.

So we calculate the total variance of all the teams:

<math>\beta _{total}=\sum\limits_{j=1}^{k}{\left( \sum\limits_{i \in T_{j}}{\left( \sigma _{i}^{2}f_{i}+\beta ^{2}+\gamma ^{2} \right)} \right)}</math>


Define two new factors for each team, <math>V</math> and <math>W</math>:


<math>V_{j}=\frac{\sqrt{\beta _{total}}}{\sum\limits_{i \in T_{j}}{\left( \sigma _{n}^{2}f_{n}+\beta ^{2}+\gamma ^{2} \right)}-\beta ^{2}} \cdot \left( \Mu '_{j}-\Mu _{j} \right)</math>


<math>W_{j}=\frac{\beta _{total}} {\sum\limits_{i \in T_{j}}{\left( \sigma _{n}^{2} f_{n} + \beta^2 + \gamma^2 \right)} - \beta^2 } \cdot \left( 1 - \frac{\Sigma_{j}'^{2}}{\Sigma _{j}^{2}} \right)</math>


Then each player, <math>i</math>, has their stats updated:


<math>\mu '_{i}=\mu _{i}+\tfrac{\sigma _{i}^{2}+\gamma ^{2}}{\sqrt{\beta _{total}}}f_{i}V_{j}</math>


<math>\sigma '_{i}=\sigma _{i}+f_{i}\left( \sigma _{i}\sqrt{1-W_{j}\tfrac{\sigma _{i}^{2}+\gamma ^{2}}{\beta _{total}}}-\sigma _{i} \right)</math>


Interpretation

Even though everyone playing on a team took part in the same battle, no two players receive the exact same change to their rank. You will notice the last two formulas, which are the ones that are applied to the players themselves, incorporate sigma - the uncertainty about the player.

If a newbie and a veteran play on the same team and win, then the newbie will receive more points for the game even though it was the exact same win. The more the system knows about you, the less will your rank change.


AllegSkill
About: AllegSkill · FAQ · Interim FAQ · Gaining ranks · Whore rating · more...
Technical Details: Commander's ranking · Player's ranking · Stack rating · AllegBalance