[ About ]
[ FAQ ]
[ Manifesto ]
[ Specs ]
[ Playing ]
[ Defeating ]
[ Fun & Games ]
[ Stills ]
[ Banning ]
[ Credits ]
[ Download ]
[ Utilities ]
[ Resources ]

Quake Utilities

Accessories ForYour StoogeBot

The Demo Proxy

While WinQuake is more general, Quake 1.06 only allows a networked game to be recorded if the recording is done on the server hosting the game. The demo proxy, a tool based on the proxy code used for the StoogeBot, allows us to record a client-side demo of a networked Quake game. The basic operating principle behind the demo proxy is that the packets transmitted across the network are encoded in the same manner as packets stored in demo files, with the exception of some differences in the formats of the network packet headers and the demo file record headers. Because of this similarity, it was fairly easy to modify our proxy code to store all network packets using the demo file format.

The Demo Proxy In Action

We combined our demo proxy technology with our QuakeBot technology and recorded a pair of StoogeBot demos showing a client view and a server view of a bot-assisted massacre. To make the demos, we used two simultaneous invocations of our demo proxy: one to record the client-StoogeBot data stream, and the other to record the StoogeBot-server data stream.

Download The Demo Proxy

The demo proxy is distributed as an SGI IRIX 6.2 binary, as a Linux binary, and as a Windows .EXE. Select your demo proxy from the following list:

How It Works

For those interested in the technical details, a typical demo proxy recording session begins by pointing the proxy at a server and telling the proxy to wait for a client connection. A Quake client is then started, and a command is given to connect the client to the proxy. At this point, the proxy negotiates a connection between the client and a server. Once the connection has been established, a demo file is created by writing a simple, three character header to a file. The proxy then enters a state in which it passes packets back and forth between the client and the server.

Whenever the proxy receives a packet from the client, the packet is parsed to extract the current client orientation, which needs to be stored in the demo file. Packets received from the server are stripped of their headers and are written to the demo file with new headers derived from the most recently received client orientation. The resulting file is a valid demo file.

Quake 1.06 can't handle level changes within demo files. For this reason, the demo proxy detects level changes and starts a new demo file for every level played. In addition, the demo proxy detects when a connection has been terminated and exits gracefully when such a condition has been detected.