Here all the frequently asked questions are answered. Since I had to invent quite a few terms, to better explain what is happening in ranking, you might want to look these up, to get my drift ;).
The 'quality' of ranking can only be as good as the statistics. Let me explain this...
If you have players that play a lot and thereby score many frags, then Æstats will be able to judge these players very accurately. The calculated average player ability will then be very much the player's real ability. These stats try to say something about how a player is doing on average, no attempt is being made to determine the day to day fluctuations.
If you have players that don't play much, and want to compare them with the above frequent players, then this will not be very fair, since there is not sufficient data available to calculate the average behavior of these infrequent players. E.g. a player enters a game gets 'lucky' with his rocket launcher and frags 5 (even 1 frag is enough) players without getting hit and then leaves the server. This player will have a rank of 100. A perfect player in other words. But this rank is meaningless, because he did not play many other players and did not play much!
Therefore I try filter out players that have not played much.
As mentioned above not everyone gets ranked. For good reason as I hope you will agree after reading the next few paragraphs.
All players seen on this
Quake III Arena server (currently
7
with unique names), are sorted by their number of
incidents in the 1st step.
In the 2nd step, from this list the top 90 * 2 players are picked and sorted by their netto% scores. Provided there are that many players in the logs, if there are less, then all are picked.
In the 3rd step, those top 90 players left are then ranked. E.g. their data is collected and copied into the ranking matrix.
In the 4th step, those players
are compared against the so called incident barrier
(as defined in the AEstats.cfg). If they have less incidents than
the barrier's
20 value, then they are removed from the matrix. this makes things a bit
complicated, since the player who was just kicked will 'take his frags
with him', leaving less frags for the remaining folks. Recursively the
barrier is checked against players, until the player with the least incidents
has more incidents, than the barrier requires.
If no player makes it past the incident barrier, then all players in the matrix are ranked. This is to ensure that there is at least some data to show.
What this means: Play a lot to ensure that your incident counts are high. Then try to be good, frag a lot, without getting hit much, and avoid suicides. This will lead to high netto% (efficiency) values. If you are then among the top 90 you will very probably be seen in ranking.
As mentioned above, players are picked in 4 steps for ranking.
Why has it got to be so complicated? Because through 3 generations of parsers, I have come to understand how 'rank possessed' players tick and how they will do anything to be N° 1 in ranking.
In step 1 I try to make the rank as fair and 'significant' as possible, and this can only be done for those players that have played enough on this server. This translates to picking players with high incident counts.
In step 2 only players with high netto% are picked. The netto% values are a primitive sort of ranking, that lets me find those players that play pretty well.
In the very beginning I did not check for this. This led to situations where good players along with weak players that got fragged a lot (both have high incident counts) where ranked against each other. What happened then was this: The strong players expressively picked out the weak players and ripped them off so badly, that the weak (I am not saying bad) players, lost all fun in playing. Personally I hate that! Gaming should be fun and not spoiled by a few idiots that always have to win and be on top. Therefore to avoid such a situation, now only the strong players are ranked against the other strong players.
In step 3 only those players that are left are actually placed in the ranking matrix.
In step 4 i had to add an incident barrier since, the matrix still had plenty of players in it, that had really low incident counts. Using the barrier helps to ensures 'good' statistics (as good as possible with the provided data, that is) meaning high incident counts.
As you can see I have given the matter a lot of thought... and this is the reason why I call my ranking a real ranking. Most other rankings are something like the netto%, I also use here.
To be able to calculate real ranking, Æstats uses 2 dimensional arrays (matrices) that contain the data for each ranked player in form of frags and deaths.
There are 2 matrices: One is the ranking matrix, that lets you see in absolute counts how many frags you scored against other players, and how many deaths got the better of you.
The second matrix does not really contain new data, it just displays the above matrix's data in a different way, to make frag comparison a bit easier. See the difference matrix for this. Shown are not absolute frag counts but relative counts. The difference was calculated between, the frags you scored against one specific player, and frags he scored against you. Positive values will mean you scored more frags against him. You'll want that to be the default :).
Suicides are no longer shown, since these are redistributed among the other players (those that fragged you), as virtual frags.
Using the
ranking matrix data - for each pair of players i and j,
we calculate:
For all i <> j (frags/deaths) the difference matrix[i][j] - matrix[j][i]
(Frags i scored against j minus the frags j scored
again i) is calculated. We then devide by matrix[i][j] + matrix[j][i] to
calculate an efficiency. This is done for all possible other players j, telling us
how good player i has been doing against all these other players.
Summing up these quotients we get a 'netto performance sum'. The latter is finally divided
by the number of i's contacts (e.g. the N° of possible other j players that
fragged i).
This yields values from -1 to 1. I then shift the range by +1
and multiply by 50, to get the ranking range you know from 0 to 100.
The above rank calculation yields normed
rank values, that
run from 0 to 100. A rank of 50 is
thereby considered as average. E.g. a player that does not suicide much
and gets hit as much as he hands out.
So you will want to have values way above 50... trust me ;).
You may have noticed that the frag and death counts along with the netto% values on the ranking page differ from those shown on player stats pages?
Incidents are things that can happen to a player during multiplayer gameplay. To be exact they are the sum of frags, deaths and suicides:
Incidents = Frags +
Deaths +
Suicides
So far I had been able to track frags, deaths and suicides. Now i am also tracking events. To express all the things going on in one term i 'invented' the term happening. A happening can be a frag, death, suicide or an event:
Happening = Frags +
Deaths +
Suicides +
Events
The so called netto% values are a primitive sort of ranking.
The advantage of this value is that it can be calculated for each player, without having to take all the other players into account. The disadvantage: It's sorta wish washy :)... the netto% value only hints at the player's real in-game quality. The latter can only be properly estimated if one uses the data of the other players that interacted with you. So done on the ranking page.
How is the netto% value calculated?
Incidents = Frags + Deaths + Suicides
Nettos = Frags - Deaths - Suicides
netto% = ( Nettos / Incidents ) * 100
This yields values from 0 to 100%.
These are the abbreviations that are used in tables:
| F | Frags, you scored 'em. |
| D | Deaths, you got hit. |
| S | Suicides, you did it unto yourself. |
| E | Events, all the other stuff you did. |
| I | Incidents, (F,S,D). |
| H | Happenings, (F,S,D,E). |