gmod1.2 A Quake3 v1.29h Enemy Territory 2.56 server mod to support in-game ping sampling and client statistics 092404 version 1.2 (added support for Enemy Territory) 092701 version 1.1 090801 version 1.0 1. Introduction gmod1.2 is a server-side mod for QuakeIII 1.29h and Enemy Territory 2.56 that adds ping-time and client location logging to the standard server logging behavior. Pings are sampled at the frame rates of each client, and logged as histograms every 20-50 seconds. IP address and ports are logged for every client. This may (or may not) prove useful for people studying on-line game player demographics and characteristics. A post-analysis tool, gmodstat0.1, is also available to read logfiles generated by servers running gmod1.2. A ready-to-run qagame.qvm file is supplied that can be dropped into any existing clean 1.29h server installation. There is also a context-diff patch file, for people who wish to build their own vm file, build a dll version, or incorporate this functionality into their own mods. The patches are designed to be applied to a clean copy of the 1.29h source code tree released by idSoftware. If you're happy using the supplied qagame.qvm file, you don't need to worry about getting the source or doing any patching. A server startup-script is also supplied, with an example config file that I've found useful in my own Quake3 server trials. You may (or may not) find them equally useful. (You will not find them useful if you run a Win32 server, since the startup script assumes you're running a dedicated server under Linux or FreeBSD.) There is no such startup script for Enemy Territory. **added 24-9-04 A directory named "et" is present, containing a modified version of the gmod patch. The modifications enable gmod to be ported to Enemy Territory, which is based on the Quake 3 engine. The ported version of gmod to ET is referred to as "ETgmod". For using ETgmod please refer to the readme file in the et sub directory. ** 2. The files Given that you're reading this file, you've probably already un-gzipped, and un-tar'ed the original gmod1.2.tar.gz file and now have the following: gmod1.2/README.txt (this file) gmod1.2/demo.cfg (sample config template) gmod1.2/q3-129h-game-patch1.1 (patches to 1.29h source) gmod1.2/qagame.qvm-129h-gmod1.1.gz (precompiled vm mod) gmod1.2/qbegin (sample *nix startup script) gmod1.2/readme-newtokens.txt (details on new log file tokens generated by this mod) gmod1.2/readme-patching.txt (instructions on patching idSoftware's 1.29h source) gmod1.2/et/et-256-game-patch.diff (patches 2.56 ET source) gmod1.2/et/README-ETgmod.txt (instructions on patching the ET 2.56 source) gmod1.2/et/etgmod/cgame.mp.i386.so (precompiled etgmod library file 1/3) gmod1.2/et/etgmod/qagame.mp.i386.so (precompiled etgmod library file 2/3) gmod1.2/et/etgmod/ui.mp.i386.so (precompiled etgmod library file 3/3) 3. Using the vm mod as-is If you just want to use the modified vm file directly, use gunzip (or something like WinZip8.0) to uncompress qagame.qvm-129h-gmod1.1.gz, rename it qagame.qvm, and copy it to the appropriate location in your quake3 installation. If you plan to use the sample start-up script, create a directory tree ./quake3/dm/vm (a peer to your existing ./quake3/baseq3 directory). The qagame.qvm file should be copied into ./quake3/dm/vm and the server told to use the mod 'dm'. Note that under version 1.29h the quake3 dedicated server seems to need a command line option of "+set vm_game 2" before it will pick up and use a vm mod. 4. Using the 'qbegin' start-up script as-is The startup script qbegin will work out of the box if your quake3 installation is in /home/quake3, otherwise you'll need to tinker with some of the paths defined early in the script itself. The script contains notes identifying which sections need to be modified, fairly self-explanatory. (This is a *nix shell script, so you'll need some other mechanism to start quake3 dedicated servers under Win32 or Mac.) Place qbegin somewhere in your shell's current search path. The command line syntax for qbegin is: qbegin [] qbegin expects .cfg to exist in /home/quake3/baseq3, and contain a basic quake3 server configuration file. qbegin creates an actual server config file by prepending two lines to the configuration file template - one line specifies the rcon password, the other line specifies the log file name. A temporary configuration file is generated in ./quake3/baseq3 for the duration of the game, and is removed when the server quits (e.g. through a 'quit' command over the rcon interface) The quake3 server is started on port 27960, or if the parameter is supplied it starts on port 27960+ (for 0 <= <= 3). demo.cfg is a sample configuration file template. If you've copied demo.cfg into ./quake3/baseq3 you can start the server on port 27960 by entering: qbegin demo Starting the same server on port 27963: qbegin demo 3 By default qbegin assumes the mod is called 'dm' and the qagame.qvm file is located in ./quake3/dm/vm. Each time you run qbegin it will create a new logfile in ~/.q3a/dm with a unique name encoding the date and time at which the server was started. Currently logfiles have the form: -ddmmyy-hhmm-xxxxx.log Where ddmmyy is the date (day/month/year), hhmm is the start time (hours/minutes), xxxxx is the process ID of qbegin, and the start of the filename is the first parameter you supplied to qbegin. 5. Re-building the vm file, or building a dll You'll need to patch a clean copy of the 1.29h server source code. More details are found in the file readme-patching.txt. 6. So what's new? This server mod does NOT change any game playing characteristics, rules, etc. It simply augments the information currently logged by the dedicated server. One existing log line token has been modified: ClientConnect: Now supplies the clients ipaddress Three new log line tokens have been introduced: BaseTime: Specifies the start day/time ModVersion: Identifies the vm mod version CPhisto2: Dumps a histogram of ping samples See readme-newtokens.txt for information on each of these new log line tokens. Version 1.2 includes support for Enemy Territory. Version 1.1 differs from 1.0 solely in how it compresses the histogram samples. In 1.0 the encoding was base64 plus decimal 32 to make printable ASCII. In 1.1 the offset is 33 to ensure none of the characters are space characters. More importantly, the escape sequence is now "znn%" rather than "+nn%" (replacing the "+" with "z" removes a potential ambiguity when encoding buckets larger than 704). grenville armitage gj_armitage@yahoo.com