DemoStat - version 1.00. - A DOS-based quake utility by Peter Risser. (c) 1997. - email: risser@group42.com * Special thanks to Uwe Girlich (Uwe.Girlich@itp.uni-leipzig.de) for detailing the structure of the demo files. And thanks to Alex Sherautin who gave me the idea in the first place with his utility QDD v6.30. Demostat scans through a deathmatch demo file and compiles stats on the game. Usage: demostat [/C] [/T] is the name of the demo to scan. The DEM extension will be automatically appended if not included. Output is written the file .TXT. cutoff - stop reading the demo after this many seconds. Useful for timed demos with ReaperBots as they continue to blast each other even after your time has run out. timeunit - use this number of seconds as the divisions for the graph. If not included, demostat defaults to an optimum number. ------------------------------------------------------------------------------- Description of the output: The first table is a quick overview of each player's stats. The stats are: Name - Player's name Frg - total frags (kills) Dth - total deaths (non-suicides) Sui - total suicides Scr - final score (frags - suicides) K-D - kills - deaths (including suicides) KDRatio - kill/death ratio (including suicides) Kills - the largest and average number of kills between deaths Deaths - the largest and average number of deaths between kills Gibs - The gib ratio for grenades and rockets The second table is a grid representation of each player's kills and deaths vs. each other player. Next comes the total time of the demo. Then comes a stat sheet for each player. The stat sheet begins with a line of stats after the player's name: K - total frags (kills) D - total deaths (non-suicides) S - total suicides Final - final score K-D - kills - deaths K/D Ratio - kill/death ratio kill/m - kills per minute death/m - deaths per minute Next is a table detailing the number of times each opponent was killed by the player and the percentage of total kills. Next comes a list of weapons, with stats for each after the weapon's name: Kills - kills with that weapon and the % of total kills Deaths - times killed with that weapon and the % of total deaths Dbl - Number of double kills (two opponents with one shot) Tpl - Number of triple kills (three opponents with one shot) Qd+ - Number of quadruple + kills (four or more opponents with one shot) Then, for grenades and rockets, the number and percentage of kills for that weapon that were gibs. For lightning, the number and percentage of kills that were discharges in the water. A streak is the number of kills before dying, or the number of deaths before making a kill. The chart lists the three highest streaks and the average for each catagory. Next comes a list of telefrags, given and received. Next comes the suicide report, detailing all the various ways a player managed to kill themselves. Finally, a graph detailing the kills (top) and deaths (bottom) including suicides (smileys) over the course of the game. Each block represents one kill or death. Guide lines are drawn across the graph at 5 units. Pluses in the center mark minutes, and vertical lines mark time deliniations (10 * the base unit of time). It sounds complicated, but the graph is pretty self-explanatory. That's it. ==== Future: There are no plans for the future. Currently this is it. I would have liked to have included detailed information about power-ups, armor use and especially ammo usage (ammo shot vs. actual hits) but this information is not available in a demo. Basically, demos keep track of only things that the recorded player could possibly see, so any action that takes place elsewhere is not included. Thus, I could try to hack it for the main player, but that would be pretty useless, especially since I'm never the one recording the demos. They say Quake 1.07 will have the ability to record demos client-side. If that's true, I'll work on it then. In the meantime, this is what you get. In case you are wondering, the information is all gathered from the messages that appear on the screen as the game progresses. (ie: x rode y's rocket.) So if your messages are different or you kill people with some patched in weapon, it won't work properly. Your score won't even be correct. I'm thinking about updating the program to use a .cfg file to handle new weapons, etc, but not today. I've also included DEMODUMP.EXE, which lets you examine a demo file up close and personal. Be warned though. It will easily create text files 150 Megs or more. Demos cram a lot of information into a little space. The usage is basically: DEMODUMP [1..33,i,e,b,all,-1..-33,-i,-e,-b] So, demodump the demo file, then tell the program which items you want included in the dump. 'all' includes all messages. 'i' includes invalid messages. 'e' includes entity information. 'b' includes block information. 1 - 33 includes that message. Adding a minus in front disables the message (ie, if you do 'all'). I've included a text version of the demo spec for edification. Good luck.