|
Q3Master
Q3Master is a standalone master server for Quake3Arena servers (and derived games). It is
intended for local networks without internet connection (or firewalls
which block Q3A :(. It can also be used for larger private networks,
where more than one Q3A server exists.
Currently it is not usable for a real high number of servers or clients, so do not
use it as a worldwide master server. It should be possible to handle 1000
servers and 10000 clients at the same time - that should be enough for
LAN-parties... (see 'doc/performance' in the distribution)
Q3Master can also be used to query servers in a local subnet, using broadcasts.
The found servers can then be send to other (or a central) master server to
collect data from multiple subnets. That way the servers nned not to be configured to register
at the master server, and the clients can use it anyway.
|
Protocol documentation
For a documentation of the protocol used for communication betwenn games servers / game clients and the master server, see q3a_master_server_protocol.txt
I have used information available on the internet, and a self-written UDP-proxy for reverse engineering of the protocol.
|
current files
complete
sources only
binary files only
|
Change History
- enhanced documenation
- all supported games and versions
- installation and usage
- performance
- protocols
- wrote a load test suite
- performance enhancements
- added UDP proxy used for testing
- protocol handlers are now configurable in the config file. This way support
for new game versions, which are compatbile with old versions, is now
possible without a new q3master release
- testing with (hopefully) all releases of q3a, q3a:ta, rtcw, rtcw:et
- add ability to handle different heartbeat types (for RTCW / RTCW:ET)
- added support for ad-hoc server queries. Just run 'run_query', it looks for
servers in all configured networks and reports all it can found
- added support for protocol version 67 (point release 1.31), same as version 66
- restructured code - the protocol handler now have common base classes
- tested basic support for RTCW: the retail version seems to work
- now sending multiple answers (servers) in single packets. There is an
additional wait time between the packets. This fixes the problem with clients
not displaying all servers.
For this, the structure of creating the response packets has been changed
(ProtocolversionHandler now returns header, footer and response data)
- - fixed deployment bug: bin/q3master.jar has contained itself. This seems to be
a bug with the JBuilder archive builder :( The JAR is now always recreated.
- bugfix: sending broadcasts to other than port than 27960 does not work
- added support for querying servers w/ broadcasts, also in multiple subnets
- added broadcast queries to local subnets (see readme and config file)
- use this if you don't want to mess with the network configuration
- added registration of found servers at another master server
- if a server is found via broadcast (and only then) its address
can be reported to other master servers
- use this if you want to use broadcasts but have multiple subnets
- added own Util class
- added support for protocol version 66 (point release 1.29f beta)
- error msg instead of null pointer exception if request unknown protocol
is received
- logging used protocol during server add
- added support for protocol version 45
- Protocol43Handler has returned wrong protocol version
- tested with instagib - so mods not using other master servers should work
- the config file introduced in the last version is now actually read
and used :(
- corrected support for protocol 43 - GameSpy should work now
- added configuration for the filtering
- now queries the server for status
- now filters for protocol, empty and full servers
- servers are removed if there is a timeout during the status query
- if a timeout occurs during a server query, 2 additional packets are send
- timeout if no heartbeat is received for 11 minutes
- added support for older protocol versions via ProtocolVersionHandlerFactory
- Q3Master now supports protocol version 43 and 45
- created ant build file
- created jar file and distribution sets (bin, src, all)
- added logging via log4j - see cfg/q3master.lcf
- added configuration file - see cfg/q3master.cfg
- removed debugging code
|
|