What is cl_guid?
It is a CVAR_USERINFO cvar that is used by Even Balance's Punkbuster software
in quake3 and deriviatives. It's a unique identifier that may or may not
be tied to a CD-Key. In games without a CD Key like Wolf:ET, it is
randomly generated and can be reset at any time by removing the file
full of binary garbage at etmain/etkey.
What use is it?
I use it in my Wolf:ET mod (etpub) to grant authentication for administrators,
store a player's gamestate information while that player is not connected, and
to store player statistics. There is also an option to append the cl_guid to
game log records since some log analyzers for Wolf:ET also use it for
more accurate player statistics (as opposed to netname). I'm in the
process of adapting the administration system to work with Tremulous and
it will obviously not work without a cl_guid.
Why add it to ioq3?
As the name applies, cl_guid belongs in the client engine, not cgame. It
is meant to be consistent no matter which client mod is loaded. There is
also the fact that cl_guid was in Id's quake3 binaries, ioq3 should be more
compatabile with any mods that made use of it.
How does it work?
On startup, the client engine looks for a file called qkey. If it does
not exist, 2KiB worth of random binary data is inserted into the qkey file.
A MD5 digest is then made of the qkey file and it is inserted into the
cl_guid cvar. This is essentially the same way it works on ET except that
pb uses some other secret voodoo to hide how it comes up with the MD5 digest.
How about authentication and duplicates?
Punkbuster authenticates each guid and keeps track of when they are created
and squashes generation of duplicates. It is obviously out of the scope of
ioq3 to do this so duplicates are possible, but very unlikely.
Setting a QA contact on all ioquake3 bugs, even resolved ones. Sorry if you get a flood of email from this, it should only happen once. Apologies for the incovenience.
--ryan.
Created attachment 880 [details] cl_guid