ioq3

Added support for Ouroboros to the ioq3 game engine.

As a demo, we have added Ouroboros support to the ioq3 game engine. ioq3 is a fork of ID software’s Quake III Arena GPL Source Release. The port is available as a patch. The servers currently only work in dedicated mode (there is no way yet to start a server from the client).

To get the demo, first get the latest ioq3 sources:

$ git clone https://github.com/ioquake/ioq3.git
$ cd ioq3

Copy the patch via the link above, or get it via wget:

$ wget https://ouroboros.rocks/patches/ouroboros-ioq3.patch

Apply the patch to the ioq3 code:

$ git apply ouroboros-ioq3.patch

With Ouroboros installed, build the ioq3 project in standalone mode:

$ STANDALONE=1 make

You may need to install some dependencies like SDL2, see the ioq3 documentation.

The ioq3 project only supplies the game engine. To play Quake III Arena, you need the original game files and a valid key. Various open source games make use of the engine. We wil detail the procedure for running OpenArena in your ioq3 build directory.

Go to your build directory:

$ cd build/<release_dir>/

To run OpenArena, you only need to the game files. First download the zip archive (openarena-0.8.8.zip) from the OpenArena website (or via wget) and then extract the baseoa folder:

$ wget http://www.openarena.ws/request.php?4 -O openarena-0.8.8.zip
$ unzip -j openarena-0.8.8.zip 'openarena-0.8.8/baseoa/*' -d ./baseoa

Make sure you have a local Ouroboros layer running in your system (see this tutorial).

To test the game, start a server (replace with the correct architecture extension for your machine, eg x86_64):

$ ./ioq3ded.<arch> +set com_basegame baseoa +map aggressor

Bind the pid of the server to a name and register it in the local layer:

$ irm bind proc <pid> name my.ioq3.server
$ irm name reg my.ioq3.server layer <your_local_layer>

To connect, start a client (in a different terminal):

$ ./ioquake3.<arch> +set com_basegame baseoa

When the client starts, go to the console by typing ~ (tilde) and enter the following command

connect -O my.ioq3.server

The client should now connect to the ioq3 dedicated server over Ouroboros. Register the name in non-local layers to connect from other machines. Happy Fragging!

Last modified October 6, 2019