![]() |
![]() |
Welcome News Downloads Log Standard Supporters Mail/Mailing List GibStats |
Why?
I have been working on a statistics program, GibStats, for the past year. Many problems were created as there was no standard for logging events of mods and their special scoring systems in Quake. This meant that for each mod I had to add many special addidition to support it. Many mods could not be taken care of at all. According to the mail I receive, many people enjoy playing Quake and setting up some kind of public or private league. But this is only possible if one can store and display statistics about past Quake games. This is what GibStats was made for. But the problem with Quake is that no one ever established a standard which events should be logged and how. Now, I am trying to prevent the same problem coming up in Quake 2 and to set a standard for Quake. The proposal I am making is to set the standard for the logging of at least the dedicated servers and preferable also the listen server / client. If you want to support this standard by adapting it in future version of your mod (or in some other way) then send an e-mail to gibstats@usa.net with the link to your site. I am going to set up a page with everybody supporting it.
You can always obtain the newest version of this standard at my site or a link to the newest version, even though there should not be any changes from now on. 1. Definitions 2. Start of Log "//StdLog/[Vers]" StdLog = indicating that now a standard log is going to follow [Vers] = the version number of the implemented log standard (Ver. 1.2 of 26.01.1998) Occurrence: once or at beginning of logging or every map change 3. Patch Name "//PatchName/[PatchName]" [PatchName] = name of the patch, for example "CTF ThunderWalker", "PainKeep", "Expert Quake". Log a short and clean name, eg not sfköl 1.3. The patch name comes one to one into the stats. Do not specify sub versions like 1.2, as each new version the parser thinks it is a new patch. Occurrence: once or at beginning of logging or every map change 4. Log Date "//LogDate/[CurDate]" [CurDate] = current date of the computer ("DD.MM.YY") Occurrence: once or at beginning of logging or every map change 5. Log Time "//LogTime/[CurTime]" [CurTime] = current time of the computer (not of the game) ("HH:MM:SS") Occurrence: once or at beginning of logging or every map change 6. Log DeathFlags "//LogDeathFlags/[DeathMatchFlags]" [DeathMatchFlags] = value of the the deathmatch flags setting of the server Occurrence: every map change 7. Map Names "//Map/[MapName]" [MapName] = long name of the map (not the file name like "base1", but the level name like "Outer Base" Occurrence: whenever a new map is started. Example: "//Map/Basewalk" 8. Player Names "//Player/[PlayerName]/<Team>/[Time]" [PlayerName] = the name of the player, but stripped of any chr(9) characters. <Team> = the name of team the player is playing on, but stripped of any chr(9) characters. [Time] = the time in full seconds since the begining of the map (level) at which this is loged. Occurance: After the map name follows the list of all players currently connected to the server. In case a patch with teams is played, the team name follows the player name separated "/"=chr(9). If no teams are available only the "/" is printed to the file. Example: "//Player/Fritz/Red/5" "//Player/Thomas/Blue/6" "//Player/Rasmus/Red/7" No Team Example: "//Player/Fritz//5" "//Player/Thomas//5" 9. Scores and Frags "[Killer]/<Target>/[Type of Score]/<Weapon>/[Score]/[Time]/<Ping>" [Killer] = the name of the player to whom the score is added or subtracted (without chr(9)). <Target> = if the score was a frag, empty if there has not been any target (suicides, deaths, CTF, etc). [Type of Score] = what caused the score. Predetermined values: This should be the type of score that was made, whatever according to the patch that might be. This is absolutely essential. This is besides the [Score] logging the heart of the standard. Here the mod programmer can add whatever he would like to have counted. If this is logged any program can count the occurance of his special scoring categories, be it Heads (like HeadHunters), Flag Captures or for example Gaining Control of the Hill: what ever! As there will be no adaptation for these categories on the stats program side, the category will come out in the stats exactly as it is named in the log. Therefor it is advisable to keep the names short and to a maximum of two words: use instead of long descriptions like Capture of the Flag, Flag Capture or F. Capture. Any [TypeOfScore] without at least a killer will be ignored. <Weapon> = which weapon, if any, was used to score. If you are logging non standard weapons then please log the weapon as the pickup name of standard weapons is written = start with capital letter and continue in small letters = Rocket Launcher, Blaster The Quake2 Weapons for "Kill" and "Suicide" (whenever applicable) are: For suicides either state the name of the weapon or the cause of the suicide. If you are not sure you can leave the weapon blank: [Score] = how many points are added or subtracted from the score of the player. Predefined values: Kill = 1, Suicide = -1. You can insert here the score for whatever category your patch supports, eg. the score for "President Kill", "Hill Capture", etc. [Time] = the time in full seconds since the begining of the map (level) at which the score happen. <Ping> = the ping of the Killer. At the moment the ping can still be manipulated very easily. Logging does therefor not make much sense. Occurrence: each time a score is added to the score of a player Example of a kill: Fritz/Thomas/Kill/Rocket Launcher/1/5/165 Example of suicide: Fritz//Suicide/Grenade Launcher/-1/8/178 Example of Capture of Flag: Fritz//Flag Capture//15/17/210 Example of a team score for team-mates capture: Rasmus//TeamScore//10/17/134 Fritz//TeamScore//10/17/134 (for each player receiving points one message) Example of Head to Altar: Fritz//Heads//16/19/350 Example of Team-mate Kill: Fritz/Rasmus/TeamKill/Shotgun/-1/78/69 10. Player disconnected / left the game "//PlayerLeft/[PlayerName]//[Time]" = whenever a player leaves the game. Occurrence: each time a player leaves the game. 11. Start Counting Frags "//GameStart///[Time]" = for mods like clan mods, were the game starts at a certain point and only frags after this moment should be counted. Occurrence: once in a map, when the scoring starts. 12. Stop Counting Frags "//GameEnd///[Time]"= as before just indicating the end of the game. Occurrence: once in a map, when the scoring stops. 13. Player Connecting "//PlayerConnect/[PlayerName]/<Team>/[Time]" = whenever a player joins a game which has already started. Occurrence: each time a player enters a running game. 14. Player Changes Team "//PlayerTeamChange/[PlayerName]/[Team]/[Time]" = whenever a player changes team in a running game. Occurrence: each time a player changes teams. 15. Player Changes Name "//PlayerRename/[OldPlayerName]/[NewPlayerName]/[Time]" [OldPlayerName] = the player whos name is changed. [NewPlayerName] = the new name of the player. Occurrence: each time a player changes name. 16. Further additions to Logging Standard Further enhancements and additions are possible. The format published here is the base of this standard. Any furthr addition will be compatible with this standard. Therefor you can implement this standard into your patch, which already enables any log parser to extract a huge amount of information. If you want to follow later enhancements is up to you. Your implemntation will stay compatible. 17. Summary Here is a summary of all keywords of the Logging Standard: |
![]() |
Function | Tab1 | Tab2 | Tab3 | Tab4 | Tab5 | Tab6 | optional | GibStats | GSLogMod |
LogVers | StdLog | [Vers] | no | yes | yes | ||||
Patch | PatchName | [PatchName] | no | yes | no | ||||
Date | LogDate | [CurDate] | yes | no | no | ||||
Time | LogTime | [CurTime] | yes | no | no | ||||
Deathflags | LogDeathFlags | [DeathMatchFlags | yes | no | no | ||||
Map Name | Map | [MapName] | no | yes | yes | ||||
Player Name | Player | [PlayerName] | <Team> | [Time] | no | yes | yes | ||
Scores | [Killer] | <Target> | [TypeofScore] | <Weapon> | [Score] | [Time] | no | yes | yes |
Player Left | PlayerLeft | [PlayerName] | [Time] | no | yes | yes | |||
Start Game | GameStart | [Time] | no | yes | yes | ||||
GameEnd | GameEnd | [Time] | no | yes | yes | ||||
PlayerConnect | PlayerConnect | [PlayerName] | <Team> | [Time] | no | yes | yes | ||
Team Change | PlayerTeamChange | [PlayerName] | <Team> | [Time] | yes | no | no | ||
Rename | PlayerRename | [OldPlayerName] | [NewPlayerName] | [Time] | no | yes | no |