
looking for background information?
|
the faq
log parsing, stats calculation and output are not always that simple to do. here i
try to explain some things you might as yet not be aware of.
the history of æstats++?
why does the æstats++ package have three parts?
what are the meta log files for?
what's the policy on supporting new games?
how do i send in bug reports?
what's with the copyright?
is the source code available?
the history of æstats++?
ages ago... about 5-6 months after quake was released, a few friends and i
thought it would be nice to have, ranking and player statistics for quake. as it
is my habit ;), i did not look around if there where other parsers out there
(gibstats was here i think), and wrote my own log parser. the main things i wanted
were: 1. html stats output, 2. automated as much as possible, 3. modular, to
make enhancements easy, 4. portable code... and some other things.
the 1st generation parser was written for quake and
coded in amiga arexx (a script interpreter language, a bit like perl, only that
with this language you can control an editor or graphics applications). the
stats where nice, i even had ranking progress plots (done with gnuplot)...
something even the 4th generation parser does not have, but i am finally planning to add
in the 5th...
the 2nd generation
parser aeqs was written for quake ii (lithium mod and
rocket arena ii support). i changed a lot of things in this generation. the code
base migrated to ansi c (using lcc under w95 and gcc under linux). html output
became completely automated, and due to the c code, it was pretty fast.
the 3rd generation parser was an adaption of the aeqs
parser, this time for unreal and called aeus. nothing
much was changed, well sorta ;)... i re-wrote most of the code, to make it even
more modular. unreal differed from quake/ii in the point that it did not support
frag information output to consoles. i therefore had to write an unreal script
module called aeonsdmmod.u to make things work. for
the first time i could control *what* information a game should output. the info
included: time, date, mapname, weapons both players had in hand just when the
frag happened, health for both players, items in hand (extras), if they where
using the weapons in alternate mode, ...
the 4th generation parser
package was called æstats. what made this
generation different is the support for just about every game that runs on quake
ii, quake3arena or unreal engines *and* was a death match type of game. this
package worked fine for many many years. but there comes a time when a programmer
has to move on, to support even more cool stuff.
this 5th generation parser package
is called æstats++ and is written in
d. it will be even more modular, support ctf and other mods, have log history (via mysql),
completely new html output design (php), be skinable (of sorts via style sheets),
have improved support for player names (banning, ip-tracking, prohibit faking), be extensively
configurable e.g. obituaries are now in an external file and... much much more. for
an overview be sure to check out the features page on this site.
why does the æstats++ package have three parts?
after serval generations (1st to 3rd) of parsers with only one executable, it
became quite clear that cramming everything into one source tree would soon lead
to code hacking on my part, just to add that one more feature. this became very apparent
with aeus that would not let me add quake 3 arena
support, without totally re-writing the code.
with æstats i started
to separate the preparser code from the stats calculation and html output. this
separation into two modules worked fairly well, since the aestats package is
even today, after so many years, useful. but there is nothing
that could not be improved on.
now with æstats++
i separated the code base even further. this time into three distinct modules:
the parser module, the stats module and the output module.
the parser will read just about any log file format
(e.g. id software and epics engines,...) and convert it into the so called
"meta log" format. this very strictly defined format is more or
less the same for all games.
the stats module will then read the 'simplified' meta
logs and calculate all the stats. this time round all the infos will not be held
in memory, they will be saved into files (probably mysql database). this way each player will build up a
gaming history, that can then be plotted.
note: once the data is in the history files, you will no longer need the original
log files or the meta log files. this should save some disk space.
the job of the output module is to read the
pre-calculated data provided in the history files (mysql database) and
generate nice html output. this will be done by php code. the main
reason why i am separating this module now, is that it will force me
to write cleaner code, more modular tables etc. this will make it
easier to enhance the output on the fly.
so you see, i use three modules to improve the adaptability of the source code. to
make future enhancements less time consuming.
what are the meta log files for?
as long as each game comes along with slightly different log output for
in-gaming frags and other infos, there is always a lot of 'unsound' hacking
involved in the code base, to make things work. if on the other hand a new log
file 'intermediate' format is used (like my 'meta
log' format), then when a new game appears, i merely need to change the
parser code. the other two modules will not need to
be changed, so that stats and output will be available for that game practically
right away.
the other advantage... the parser filters out all the junk that server log files
include and that is of no use for stats. thus slimming down the amount of logs
you might want to collect.
furthermore since the 'meta log' format (as seen in æstats) is plain ascii
(the [t] is a tab or ascii 9):
[date time] [t]
[mapname] [t]
[player1] [t] [player2] [t]
[damagetype] [t]
[weapon1] [t] [weapon2] [t]
[altweap1] [t] [altweap2] [t]
[health1] [t] [health2] [t]
[item1] [t] [item2] [t]
the format will make it possible to use powerful database programs, to calc
stats. there is one line of log per frag/death/suicide, which makes it a lot
easier to parse as compared to the original log files. most games will not
provide that much information alas... :(
for more details on the meta log format, see the parser page on this site.
note: under æstats++ the meta log format will be a lot more
complex, adapting more readily to the data that the games provide.
what's the policy on supporting new games?
well it's quite simple. you send in log files for a game you
deem worthy of stats support and i will see what i can do about
it :).
so far i have been supporting just about every game that uses
id software or epic engines. since half-life and especially
counter-strike are still very popular, supporting cs will be a
priority.
if you would like a certain game supported, send me an email from the
requests or directly from the send logs page.
how do i send in bug reports?
well anything that gets programmed is likely to contains bugs. this is
also true for æstats++, so if
you find any, don't hesitate so send me an email on the subject.
check out the bug reports page for details.
what's with the copyright?
copyright is with me (christoph 'aeon' loewe (c) 1998-2009). all rights
reserved.
may the template pages for html output be changed?
yes. that's the reason i made them editable. but it would be
nice if you would reference this site (aeons.poweredbylasers.com/aestats++),
e.g. keep the last 'advertising' line on each page. this let's me help others that might
also be interested in æstats++.
see the legal page for more details.
is the source code available?
at this time the source to the æstats++ package is not
publicly available. i would like to keep control of the project.
if you are missing something then send me an email from the
requests page.
 |
last updated on wednesday, may 18th 2005
up since: sunday, october 23rd 2000
re-design: monday, may 16th 2005
|
|