R1Q2

R1Q2 is a game engine modification of id Software's open source Quake II computer game. R1Q2 is developed by Richard Stanway and is presently the most widely used 3rd party engine modification on Quake II servers. The Primary design goals are high speed, increased security and improved stability whilst not affecting compatibility.

History

R1Q2 development began the night of the Quake 2 source code released in 2001 - the name R1Q2 comes from a combination of the developers nickname, 'R1CH', and 'Q2' (short for Quake 2). R1CH at the time was the maintainer of the Gloom Quake 2 modification and had run into various bugs and other shortcomings within the previously closed source Quake 2 engine that he wished to fix. Initially, R1Q2 started out as a bugfix-only modification of the engine but soon expanded with the addition of new features, most of them for the server portion of the game as the author ran several Quake 2 servers.

From 2001 through 2004, development continued and although no official release was made, many members of the Gloom community had received beta versions from R1CH and had begun circulating it. During the QuakeCon 2004 computer gaming event, the first official version of R1Q2 was released. It soon become one of the most widely used modifications for Quake 2 servers due to the security and stability fixes and additional features that made server administration easier. The following year, R1Q2 was selected as the official client and server for the 'Retro Quake 2 tournament' at QuakeCon 2005 and again for the 'QUAKE Quad-Damage 1v1 Tournament' at QuakeCon 2007. R1Q2 continues to be developed, now up to build number 7322 as of July 2007.

Main features

Security and bug fixes

R1Q2 was one of the first Quake II modifications to provide security fixes for various bugs that were discovered prior to and after the source code release. Many server admins were eager to update their servers to prevent any malicious users from exploiting these bugs which led to R1Q2 becoming as popular as it is now for Quake II server usage.

New server-side network code

During 2005, significant portions of the networking code were rewritten. The Quake II server previously had a fixed-length buffer into which all network messages for a client were placed - if too much data was added to this buffer, the client would be disconnected from the game server. R1Q2 changed this by allowing each individual network message such as a piece of chat text, an explosion, a muzzle flash, etc to be individually queued or optionally dropped by the server. This resulted in effectively eliminating the 'overflow' condition and allowing much higher levels of in-game activity without The Risk of a player being disconnected. zlib compression was implemented to allow packets that exceeded the UDP frame size to be compressed and retransmitted instead of dropped.
Further network code optimizations were made in the delta encoding of player state and entities by avoiding sending packets with values that were quantized to the same value as a previous update. In-game content downloading speed was also increased through the use of compression and an improved retransmission speed.

HTTP downloading

The R1Q2 client supports fetching content using HTTP instead of UDP. Since HTTP operates over a reliable protocol, downloading is much quicker than with UDP and allows clients to fetch game content an order of magnitude faster. HTTP downloading also supports a 'filelist' which the server can supply which tells the client the name of any additional content that it may wish to download that it otherwise would not know AbOUT, for example high resolution textures.

A full list of features in R1Q2 can be found on the R1Q2 website.