Q3 master server source code? Where?


(SiliconSlick) #1

Given the crash of etmaster.idsoftware.com and the potential
4096 server limitation, I was wondering if anyone knew where
I could get the sources to the Q3 master server so I could
set one up for our users/servers at www.nd80usa.net.
That way our users would be able to set their games
to use our master until the problem is resolved.

Anyone know if it is available and if so where?

Actually, a Linux binary for the ET master would be
fine, but if the Q3 source is avail it would probably
be more useful.

TIA,

SiliconSlick


(CooperHawkes) #2

A friend of mine and me wrote a small master server for lan parties a few years ago… I think it should still do its job… at least i hope so :wink:

you can grab it here (runs on win32/linux/irix/whateverUlike):
http://www.vis.uni-stuttgart.de/~rose/stuff/MugMaster_0_31.zip

IIRC there is no reason why it should not work also with ET and other cool ID based games…


(Rain) #3

The in-game server browser can not be configured to use a different master server.
The official master server implementation is written in Java and is not publically available to my knowledge.
Mathieu Olivier wrote a small master server implementation in C that’s available from :pserver:anonymous@cvs.icculus.org:/cvs/cvsroot (password ‘anonymous’.) It will work fine with ET, although you’ll need to change GAMENAME_Q3A to “et” or disable the gamename check entirely by leaving the string empty for Q3 requests (commenting out the else section around line 942 will do that.)

I have a master running on warped.bluecherry.net if you want to play with it. You can change the masters that the server announces to with the sv_mastern variables, but you can’t do anything with the client, I’m afraid. I don’t even know of any third-party browsers for Windows that still let you add alternative masters.


(CooperHawkes) #4

well… you could add an entry with etmaster.idsoftware.com and the ip of your own master server to your “hosts” file… but that’s a dirty hack :bash:


(Rain) #5

Fair enough. I hadn’t thought about cheating in that way.

BTW, in your master server implementation, you should sleep in select(), not with usleep()/Sleep(). The last argument to select() is the maximum amount of time to sleep if no packets are received, or NULL if you don’t want a timeout. The call to select() may modify the contents of the timeval you pass it (on Linux, the time remaining is filled in), so you’ll need to reset the timeout before each call.


(Sauron|EFG) #6

Pathfinder lets you change the master.


(CooperHawkes) #7

thanx for pointing that out… It was my first try (llame excuse, I know) with sockets when I hacked this thing back in 2000 IIRC… and to be honest, I didn’t look into the code before I posted it here… didn’t touch it in the last 3 years… my fault :bored: so, I should better fix this… :wink:


(Rain) #8

Aha. I haven’t tried Pathfinder, so I didn’t know that.

Well, people are welcome to use the master I put up as an example if they like, although I suspect etmaster may be back up soon…


(SiliconSlick) #9

Thanks everyone. I assumed there was a cvar or command line
option that would allow the client to be redirected to another
master (short of editting /etc/hosts :)).

So much for that idea.

SiliconSlick