About Log_Anal
| Log_Anal is an
application that uses logs generated by HLDS (the
Half-Life Dedicated Server) to create pages of HTML
displaying statistics about your players. You can use
templates to customize and layout your stats pages
however you wish. Log_Anal is fully configurable and will
run on any platform. One of Log_Anal's more outstanding features is its cross-platform support. Log_Anal will run on any platform with a Java Runtime Environment (JRE) installed on it. Also, Log_Anal will work on any Half-Life mod (or Half-Life itself, of course). Another major feature is that Log_Anal is fully configurable. When I say fully, I mean FULLY. You can control every setting that Log_Anal uses. You can configure everything from which stats are generated right down to image sizes and whether or not to use graphical percentage bars. Don't be afraid, I have included a configuration utility that greatly simplies the setup process. One feature that sets Log_Anal apart from other stats packages is that the skill rating formula used to rank players is user-definable. To top even that, there are two basic forms of the equation to choose from. One just uses flat overall statistics to calculate a rating while the other uses map weighting to eliminate players from playing only a few maps they are good at to achieve higher ratings. The second form forces players to play all maps if they expect to compete for the top spots. Also, Log_Anal can take your opponents' skill into consideration. It does this kill by kill. The better your opponent that you kill, the higer your rating goes up. Conversely, the worse your opponent that kills you, the lower your rating drops. A nice feature to relieve administrative duties is Log_Anal's built-in timer to auto-update stats. You can configure Log_Anal to update however often you wish. Also, you can make Log_Anal update and immediately exit. This is useful especially for Linux admins because you can make Log_Anal work with cron. Log_Anal's output is configurable via templates. You can edit these templates to change the layout of the page in just about any way that you can imagine. The templates use special tags to tell Log_Anal to where place the various stats. You can define tags used by Log_Anal to change various attributes such as ALIGN, BGCOLOR, COLOR, CLASS, or any others. This allows for extreme versatility. You can even use style sheets. Another nice thing about Log_Anal is that for the amount of statistics it generates, it is extremely efficient. It will not lag your server while the stats are updating. You won't even notice that they are updating. Log_Anal accomplishes this by the use of a data file that contains your players' statistics. This eliminates the need to re-parse the same logs over and over again. Another advantage to this data file is that Log_Anal keeps lifetime stats for your players. You're probably thinking: 'Well, wouldn't that data file get pretty large after a while?'. If you are, you would be correct. It can get rather large. There is a variable that you can set to delete players that don't play very often on your server. If the player doesn't reconnect to your server within the time you specify, their stats get deleted. |
How does Log_Anal calculate ratings?
There is one basic formula that
Log_Anal uses:
rating=(kills/deaths)*kills/deaths + (kills/time)*kills/time -
(1/time)/time + (constant)
The parts of the formula in parentheses represent the definable
coefficients via the configuration utility or log_anal.ini. You
have the option of using the formula as it stands or
incorporating map-weighting to reduce players' ratings that only
play on a few maps. The map-weighting only affects the
kills/deaths part of the equation. It calculates a separate
kills/deaths rating for each map and adds them together. The form
for each map's kills/deaths rating is as follows:
rating=(kills/deaths)*kills/deaths*killPer
The (kills/deaths) is the definable coefficient for kills/deaths.
The kills and deaths are the number of kills and deaths just for
that map. killPer is a percentage of total kills on that map.
This number cannot be higher than that map's percentage of the
total number of maps. In other words, if a player has 80% of his
kills on a certain map and there are 5 maps in the rotation, his
killPer would only be 20% (or .2). This is used to limit how high
of ratings players can get by playing on a few select maps. With
the addition of the opponent skill aspect the formula becomes a
bit more complicated. As with the rest of the equation, you can
weight or completely eliminate opponent skill considerations.
These opponent skill considerations are done kill by kill. Each
player has an opponent skill rating that is completely
independent of any other stats. Kills/Deaths, frags/minutes, or
any others do not affect this rating. The only thing that affects
this rating is your oppenent's opponent skill rating that you
kill or are killed by. Each time a player is killed, a
probability of winning is calculated for each player. Here is the
form of the probability equation:
probability=1/(1 + 10^[(opponentSkill - yourSkill)/400])
As you would imagine, the higher an opponent's skill, the lower
your probability of winning a fight. The other major part of the
equation is what you might call a development coefficient. The
higher your skill, the harder it becomes for your skill to keep
going up. The lower your skill, the easier it becomes to raise
your skill. This formula is very simple:
dev_coeff=(eq_1/skill)/skill
The "eq_1/skill" is a user defined coefficient. The
higher you set it, the more skill points you get for each kill.
"skill" is your opponent skill rating. There are two
different formulas for the killer and the killee. The person that
won:
skill=skill + dev_coeff*(1 - probability)
The person that lost:
skill=skill - dev_coeff*probability
If your probability of winning is high but you lose, you lose a
lot of points. If your probability of winning is low but you win,
you gain a lot of points. This part of the formula can be
weighted with the eq_skill variable. The opponent skill rating is
simply added to the rest of the overall rating.