gmod1.1
A Quake3 v1.29h server mod to support
in-game ping sampling and client statistics
092701 version 1.1
090801 version 1.0
1. Introduction
gmod1.1 is a server-side mod for QuakeIII 1.29h 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.1.
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.)
2. The files
Given that you're reading this file, you've probably
already un-gzipped, and un-tar'ed the original gmod1.1.tar.gz
file and now have the following:
gmod1.1/README.txt (this file)
gmod1.1/demo.cfg (sample config template)
gmod1.1/q3-129h-game-patch1.1 (patches to 1.29h source)
gmod1.1/qagame.qvm-129h-gmod1.1.gz (precompiled vm mod)
gmod1.1/qbegin (sample *nix startup script)
gmod1.1/readme-newtokens.txt (details on new log file
tokens generated by this mod)
gmod1.1/readme-patching.txt (instructions on patching
idSoftware's 1.29h source)
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 1.29h 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.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
               (
geocities.com/gj_armitage)