R1Q2 - R1CHs Enhanced Quake II Client/Server

About

R1Q2 is an enhanced client/server for Quake II. Based on the id Software 3.21 source, rather than concentrate on fancy graphics, embedded MP3 players and other "gimmick" features, R1Q2 is focused on providing stability, security and speed whilst remaining fully compatible with existing mods and other clients. You may also be interested in R1GL, an enhanced OpenGL renderer for Quake II with the same design goals as R1Q2. Using R1Q2 and R1GL together is strongly recommended for optimum performance and stability (included in the R1Q2 download if you use the installer).

(2005-06-04) More Q2Admin:A review of the Q2Admin 1.17.xx code uncovered several critical security problems. Please update to 1.17.44 immediately if you are using the 1.17.xx branch. See the forums thread for more details.

Main Features

Security Fixes
Both the client and server are protected against crashes, buffer overflows, DoS attacks and other nasty things. All publicly known bugs and exploits as well as ones I have discovered that aren't so well-known are patched in R1Q2.

Stability Improvements
Some public R1Q2 servers have been up for over 360 days thanks to numerous bug fixes, integer overflow fixes and more that prevented servers from staying up for long periods.

New Server-side Netcode Management
All messages are packetized regardless of the source, giving the server much greater power to inspect each message. "Overflowing" is now no longer possible as messages can be queued, and the "Netchan_Transmit: dumped unreliable / SZ_GetSpace: overflow" messages are also gone since the server can simply drop the individual messages than do not fit rather than dump the whole buffer. Combined with improved delta state management and quantization optimizations, R1Q2 servers should provide a much better gameplay experience for mods that have heavy activity. The server and client are also able to make use of zlib compression on large packets and frames that exceed the standard 1400 bytes packet size.

HTTP Downloads
The R1Q2 client supports retrieving of mod content (maps, models, etc) from a HTTP server instead of over Quake IIs slow UDP netchan. Combined with support for a 'filelist' - a list of required files that the server can specify - this feature allows clients to obtain the complete mod with optional gzip transfer encoding from a HTTP server. No more slow UDP downloads!

Speed Increases
Substantial speed increases are the results of a file system cache, removal of redundant code, using binary trees for pak files and a streamlined dedicated-only binary for servers. The connection process to an R1Q2 server is also optimized for faster connection times as well as much quicker auto-downloading and a near-instant anti-proxy reconnect if desired.

Separation of Renderer and Network
The networking and rendering code in the client is now separate - no longer are you forced to run at 30 FPS to avoid flooding your modem! R1Q2 uses cl_maxfps control your network packet rate whilst the renderer still runs at full speed. This is also implemented in a different way to most other engines so that it doesn't cause your movement to appear jerky to other players.

Full 3.20 Compatibility
R1Q2 clients can connect to any normal Q2 server and normal Q2 clients can connect to an R1Q2 server. The Game DLL and renderer DLL APIs remain unchanged too - R1Q2 can run any existing mods and admin DLLs such as Q2Admin. Where R1Q2 clients are connecting to R1Q2 servers, a new protocol is able to be used that offers some bandwidth savings and other improvements such as faster observer movement.

Highly Configurable Server
There are lots of new cvars and commands to configure your server how you want it. From banning certain commands, checking userinfo variables to configuring the number of players allowed to auto download - see the full list of server cvars and server commands for all the details.

Improved Server-side Anti-Cheat Measures
The R1Q2 server has numerous cheat checking improvements. Client packets are inspected for values that a normal Quake II client would never send and speedbot prevention/detection is improved. The "visibility checks" from NCServer are also available in R1Q2 for those of you you that wish to use them. An anti-proxy reconnect is available that is much quicker than similar features found in Q2Admin or mods. R1Q2 is also able to make use of the r1ch.net anticheat to provide client authentication.

Support for Mod Developers
New cvars such as "sv_gamedebug" which will show if the Game DLL is doing things in an incorrect way help mod authors to debug problems. Memory allocation functions can also be turned to debug mode which will scan all dynamically allocated memory for consistency problems such as buffer overflows, double-free and illegal allocations. Thanks to the new server-side netcode in R1Q2, mod authors can also avoid having to queue messages in the Game DLL and just dump them all at the client - the R1Q2 server will handle the reliable delivery. The latest versions of R1Q2 track Game DLL allocated memory sources, allowing you to pinpoint the line that the bad memory allocation occured at. Usermode minidumps and crash reports are also generated on unhandled exceptions, allowing for easy debugging.

Hundreds of other small fixes, improvements, speedups that are too numerous to list here
Take a look at the ChangeLog for some example features that are updated.

First time user after the R1Q2 client? Grab the updater, R1Q2 and extract all files to your Quake 2 directory. Run R1Q2Updater.exe to get the latest version. You can now run R1Q2 just the same as if you were running quake2.exe but please be sure to read the readme!

Downloads

R1Q2 Installer for WindowsThe easiest way to install R1Q2! This web based installer will download and install R1Q2 and optionally install R1GL and the r1ch.net anticheat module. (r1q2-websetup.exe, 55KiB). Don't forget to read the README, especially if this is the first time you are using R1Q2.

Other Downloads

Please note that using "Download Accelerator" type programs that split the download into multiple requests will result in your access being blocked. And no, hiding the User-Agent doesn't stop it from being detected.

Win32 Client/Server
A combined client/server executable. Be sure to use the auto updater above after installing to obtain the latest version. Extract to your Quake II directory and use it as if it were quake2.exe. (r1q2.zip, 1MiB)

Win32 Dedicated Server
A dedicated only binary with no client. Be sure to use the auto updater above after installing to obtain the latest version. Simply download and extract to your Quake II directory and use it as if it were a normal Quake II. GameHost users, please read this. (dedicated.zip, 638 KiB)

GNU/Linux GlibC 2.x Dedicated Server (FOR NEW MODS)
A dedicated only server binary with no client. Very stable and secure, highly recommended for anyone running a GNU/Linux Quake II server. This binary was compiled with GlibC 2.1 with GCC 2.95.3 and is designed for running mods that are built with a modern compiler/glibc version such as Gloom or any mod you have built from source. If you encounter a Segmentation Fault either while loading the server or immediately after joining, please use the version below. (r1q2ded.zip, 191 KiB)

GNU/Linux GlibC 2.x Dedicated Server (FOR OLD MODS)
As above, but this binary is designed for running old mods such as Jailbreak, OSP, Tourney/TDM and the original Quake 2 DM/CTF that have binary-incompatible versions of gamei386.so. This binary was compiled with GlibC 2.1 with GCC 2.7.2. (r1q2ded-old.zip, 178 KiB)

GNU/Linux x86-64 Dedicated Server
An AMD x86-64 version of R1Q2 for use on the Athlon64 and Opteron processors. Note that you will also require a 64 bit gamex86_64.so file to run any mods. (r1q2ded-x86_64.zip, 109 KiB)

GNU/Linux Auto Updater (0.0.6)
If you run a GNU/Linux R1Q2 server keep it up to date with this statically linked updater. To use, just extract to your Q2 directory and periodically run it from time to time. (r1q2updater.zip, 663 KiB)

Source Code
This directory contains source code to all released versions of R1Q2. A Linux Makefile is included. Please note that if you choose to compile your own binary, you must use GCC 2.7.2 to maintain compatibility with old mods. The latest source releases should also build under FreeBSD with 'gmake'. The source code to the updater is also included and should build cleanly on Win32 and Linux. (source code)

You may directly link to the above downloads if you wish, if you do so it is a good idea to also include a link to the appropriate REAMDE threads in the forum and make a note to use the R1Q2 Updater. Linking to the R1Q2 installer is preferred over individual downloads.

Documentation

For server admins, it is strongly recommended you use the forums 'notify' feature to be informed of new releases. Simply create a forums account and click the notify icon at the bottom of the Changelog thread. There is also a separate security mailing list that will only be used if a serious security problem is found in R1Q2 that requires immediate attention.

Best viewed with a fully XHTML 1.0 / CSS2 compliant browser. View r1ch.net privacy statement. Please note that using certain types of download "accelerator" utilities that open more than one connection may result in your IP being blocked.