news forum live chat wiki

We’re Updating ioquake3’s Graphics Renderer

Posted on September 11th, 2016 by TimeDoctor

Quake3 tango

The Short Version

Our OpenGL 2 renderer will be the default starting this November. You can skip the rest of this post or read on for why we’re making this change, a timeline for the change, and instructions for trying it out today.

Why we’re changing the default.

If you want to play Quake 3: Arena, make your own games using the absolute best free-software FPS engine, run your own dedicated game server, or play other great games then ioquake3 is for you.

ioquake3 was founded on the notion of retaining the great gameplay and technology of id software’s Quake 3: Arena, while keeping the code portable, clean, and operational on modern platforms for players, developers, and server administrators.

That goal has put our team, and so many more contributors, to work for over a decade.

ioquake3 introduced a pluggable rendering subsystem in response to the desire for graphical renderers to support new technologies for new and updated platforms.

This allows a great degree of flexibility that isn’t found in most game engines. It also meant that we could retain the original OpenGL rendering pipeline alongside more modern rendering processes.

James Canete took up the challenge of putting together what has become the OpenGL 2 rendering system in 2010. These days it requires OpenGL 3 for the latest features but the name has stuck. James’ OpenGL 2 renderer has become the most obvious big feature we can point to when people aren’t wowed by a 17 year old game working on their computer anymore.

When Quake 3: Arena shipped in 1999 I picked up a copy of the game at Linux World Expo in New York City after chatting with the old Slashdot crew and played it with a 3DFX Voodoo graphics card.

It’s been 17 years since Quake 3: Arena shipped, over a decade since the source code was released by id, and my son will probably never know what a 3DFX Voodoo 3 3300 is or why his dad once thought about flying to another Linux convention just to win a Voodoo 5 5500 in a rigged contest run by a (now) defunct software developer. Those cards have less rendering potential than the phone in my pocket.

Why do we still maintain an outdated graphics rendering system that was written with that era of graphics accelerator in mind when we have a better alternative that fits the original goal of supporting modern systems while still offering optional new features to players and developers?

We must enjoy maintaining twice the code and making it more challenging for people to access the newer features of ioquake3 by adding additional barriers.

That’s going to change. In early October we will begin the transition to a default OpenGL 2 renderer.

This is a big change for a project that has sought to always deliver a vanilla experience by default. We’re giving everyone some extra time to get used to this change, and to give us feedback about it.

October 1, 2016: The default for new ioquake3 installs is OpenGL 2.

November 1, 2016: Disable the original renderer in configuration files for all ioquake3 installs.

Get Involved

This will get more players enjoying our improved rendering engine, which will be better for everyone as we continue to develop improvements to it. As with so many free software projects, it is by no means finished, we are aware that performance may suffer with certain hardware configurations, but it is capable of displaying Quake 3 as you see it today and improving that look.

By default OpenGL 2 does not include any intentional changes to the look of ioquake3, those will remain optional. Although contributions will focus on the new rendering system. the old rendering code will remain in source control. It’s not going away and you will continue to be able to use the old renderer after we change the default.

We still have much more that needs to be done with ioquake3, but if you have any questions or comments about this change please let us know now. The month of September is your opportunity to give us your feedback before we start the transition to the OpenGL 2 renderer, and we hope that by the end of October you will be as happy with the new renderer as we are.

If you would like to try the new renderer out now, then please follow these instructions for installing ioquake3 and a test build, these instructions for enabling the new renderer, and these tips for how to enable or disable the new rendering features. You can connect to our server at to play with others or play locally using the /map and /devmap console commands with regular Quake 3 maps like q3dm17 or third-party maps and mods. Some features of the new renderer are cheat protected because they might give players an advantage, so you will need to use the /devmap command to see them.

Servers don’t have to make any changes to support the new renderer. Developers making their own games should read the OpenGL 2 readme and contact us via the forums, live chat, or via reports on Github or Bugzilla with any feedback. Pull requests are particularly helpful 😀.

If you’d like to help ioquake3 out, please check out the Getting Involved page on our wiki.

Discourse Made Our Forums Great Again

Posted on August 4th, 2016 by TimeDoctor

A screenshot of our discourse forums

The subdomain to access the forums has changed from to Please update your bookmarks and note that you might see some error messages in your browser during the transition if you visit the old URL. We’re still working out the best method to redirect old traffic to the new site.

Here’s why:

Back in 2013 we moved our forums to the new open source forum software on the block, Discourse.

It has been easier to maintain these forums than our old ones which used phpbb 3. With phpbb we got so much spam that we had to routinely shut down registration, manually approve users, and resort to bringing new moderators on board to team up for spam account deletion parties.

With Discourse, we get so much less spam, practically none in the almost 3 years since we switched.

Discourse forums are also much easier to read on modern browsers and mobile devices. It’s a flat design that doesn’t overwhelm new users with categories at first glance. Replies can be in the topic or you can create a new topic if you don’t want to derail the current one. Topics update in real-time so you are less likely to post the same thing as somebody else. Replies to an individual post can be read without losing your place in the topic.

The news today is that we’re in the process of moving from our self-hosted installation to Discourse’s official hosting. It took just a few moments to pull the levers to upload our backup from the old forums and switch. The forums should be more reliable, faster to access, and despite the transition we have retained all of the posts on the forums since we moved to Discourse in 2013. We are extremely thankful to the Discourse team for providing this service to our project as well as other open source projects.

If you have any questions, issues, or just want to chat post to the forum or feel free to email me directly We’re also on twitter where you can ping me or the ioquake3 project.

The id Master Server is Back Online (Updated)

Posted on May 19th, 2016 by TimeDoctor

Update: the id master server is back online, the in-game server browser is working again. We will continue to look for a way to work around it in the event of future extended downtime. Our original post appears below.

Master server If you’ve tried to play multiplayer Quake 3 using the original id Quake 3 binaries or ioquake3 in the past few months you might have had a difficult time finding a game with the built-in Server Browser. You would have seen the error message in the screenshot above:

No Response From Master Server

The master server is what game servers that you play on talk to, in order to communicate their availability to your copy of Quake 3: Arena.

Since at least March 11th the official Quake 3: Arena master server offered by id software at has been offline and that is why there is an error displayed instead of a list of servers.

We operate a master server at that has been up for years, and fortunately servers using ioquake3 are still reporting in to it, but there isn’t a quick fix for the in-game server browser at the moment. We have repeatedly reached out to id software to notify them of the issue, suggesting resolutions for it, and received no response.

You can watch for the resolution of this issue on Gibhub, but even when we resolve the issue for ioquake3 players, people using the original id binaries will be out of luck unless they switch to ioquake3 or id software brings their server back online.

There are third-party server browsers such as Qtracker and XQF will continue to work if directed to our master server.

Our Quake 3 server is still online and you can connect to manually by typing /connect in the console. This same methods works for connecting to other servers when you know their address.

ioquake3 on OS X El Capitan & Windows 10

Posted on September 30th, 2015 by TimeDoctor

El cap win 10

Two major updates have come to desktop and laptop computing recently. OS X 10.11 El Capitan and Windows 10. Big news for users of each platform, and we’re excited that ioquake3 continues to work with both platforms for players updated to the latest build.

Check out our Players Guide and Sysadmin Guide, or just go ahead to the test builds, to get started with playing ioquake3 or running a server today!

If you run into any issues with either this new operating systems or old ones, let us know on our community forums. Thanks to our community of contributors for helping us keep Quake III, mods, and new games going for TEN YEARS now, wow. That is a lot of fragging!

ioquake3… in Docker?!

Posted on June 26th, 2015 by TimeDoctor

The folks from the open platform for building, shipping, and running distributed applications called Docker demonstrated a containerized version of ioquake3 at Dockercon. Not just the server, but also the client. Docker’s Arnaud “icecrime” Porterie even called ioquake3 “The best game ever” in their dockerfile description. I don’t think I could be more proud. They were already my favorite container project when I started using Docker for our Discourse forum installation.

ioquake3 updated to SDL 2

Posted on August 25th, 2014 by TimeDoctor

If you’ve been following along via github, twitter, facebook, and our new discourse-powered forums, you might have noticed that we’ve been working on updating ioquake3 to Simple DirectMedia Layer (SDL) version 2. SDL 2 is already in use in lots of games, and we’ve been using it internally for over a year now, which is why we felt that it was finally appropriate to bid farewell to SDL 1.2.

The SDL upgrade won’t make a huge difference to the experience of playing Quake 3 and the assorted games that have been built with this engine, but if you’ve got a copy of Q3A please try out the new test builds. Your testing will give us a chance to see if everything checks out OK on more systems than the ones we have access to.

Once in-game you can /connect to our new test server at

Please report any issues you find with the test builds on the forums, in IRC, or on bugzilla.

Test Builds are Back!

Posted on July 18th, 2013 by TimeDoctor

If you’ve been waiting to try out the latest features like the new renderer from our github, you don’t have to wait any longer. We’ve got our test builds page back online and updated with the latest builds from our continuous integration systems.

These builds aren’t tested, but you can file bugs against them on our bug tracker and let us know how they work out for you on our forums.

Go frag somebody today.

Continuous Integration with Travis

Posted on March 7th, 2013 by TimeDoctor

Ghost of shame

It’s been a long time since I last wrote about any kind of testing, and one of the most basic forms is making sure your build compiles as a step of continuous integration.

This has been added to ioquake3’s github with the Travis service.

What this means is that every time one of your friendly neighborhood ioquake3 team members makes a commit, travis will pull down a copy of the codebase from github to a fresh virtual machine, read our instructions, and follow them to compile our codebase with a script that we’ve created.

If the build succeeds, great!

If the build fails, then, oh no! Somebody screwed up and let me write code again. A bot is dispatched by travis to our irc chat compound ( #ioquake3) to let us know and will let everyone know which commit broke the build. The author will then receive the depicted ghost of shame in the mail within 64-128 weeks.

Currently we’re telling Travis to build for mingw (under Linux) and Linux itself with various options and it takes about 14 minutes to complete the operation.

In the future we hope to figure out a way save the builds Travis creates to the ioquake3 website so that we can offer you more expedited builds.

Travis’ website suggests a method that involves Amazon S3 but we are interested in other storage solutions.

Happy New Year, ioquake3 and github!

Posted on January 1st, 2013 by TimeDoctor

Hi All,

This August will be the 7th Anniversary of ioquake3!
Time flies when you’re fragging fools and breaking builds.
We still haven’t had a release since 2009. Don’t worry, we still have another 365 days to go until it has been 5 years since a release!
The real reason for this post is that I wanted to tell you all that we’re moving the project to github.
There is a new organization there, called ioquake.
But most importantly there is a project there that you can clone, fork, and send pull requests.
Bugzilla and other things hosted on will keep going, but the SVN repository is now deprecated and I don’t know if it will remain online or not. If possible, we may set up a thing to automatically slurp in changes from the github project. itself is not going anywhere
Thank you to everyone who has contributed and played ioquake3 since the project started on August 20th, 2005!

Make sure to join us on for some baseq3 fragging when you get a chance!

Here are your top-ten all-time contributors, by number of commits:

  1. Thilo Schulz
  2. Tim Angus
  3. Ludwig Nussel
  4. Zack Middleton
  5. Ryan C. Gordon (he beat me by 3 commits!)
  6. Zachary J. Slater
  7. Tony J. White
  8. Aaron Gyes
  9. James Canete
  10. Coyote

If you have any questions or suggestions let me know in the comments here, on our freenode irc channel #ioquake3, or on our twitter account and facebook page.


ioquake3 and OS X Mountain Lion

Posted on August 8th, 2012 by TimeDoctor

10imac27 photo

The latest version of OS X, Mountain Lion has been available for a little while and we have now confirmed that ioquake3’s latest SVN (revision 2306) compiles and runs smoothly on it.

If you already have ioquake3 installed on your intel Mac running 10.6 or greater please try a test build:

It should run fine under Mountain Lion, if you have Gatekeeper enabled with the default setting you will have to right click and then select Open on the .app.

Please let us know if it works well for you.

Quake 3 Source Code Review by Fabian Sanglard

Posted on June 30th, 2012 by TimeDoctor

Fabian Sanglard:

I was particularly impressed by :

  • The virtual machines system and the associated toolchain that altogether account for 30% of the code released. Under this perspective idTech3 is a mini operating system providing system calls to three processes.
  • The elegant network system based on snapshots and memory introspection.

Check out his entire code review here.

Open Source Tools for Game Development

Posted on June 21st, 2012 by TimeDoctor

Ryan spoke again at Flourish, and here’s the video:


Notes are here:

CVE-2012-3345 symlink attack in ioquake3 >= r1773

Posted on June 14th, 2012 by TimeDoctor

ioquake3 [IOQ] is a fork of the Quake III Arena (id Tech 3) game engine,
and has become the de facto upstream for that engine since id Software
ceased to develop it. It is also used (unmodified, modified or forked)
in various open-source and proprietary games including OpenArena [OA],
Reaction [REA], Smokin’ Guns [SGN], Tremulous [TREM], Turtle Arena [TA],
Urban Terror [URT] and World of Padman [WOP].
Access vector: local
Authentication required: local system
Impact: overwrite a file owned by the victim with a predictable integer
Since svn revision 1773, ioquake3 has written its process ID to the file
/tmp/ (or in a world-writeable location) under the
following circumstances:
* running on non-Mac Unix and TMPDIR not set, or set to a
world-writeable location; or
* running on Mac OS and FSFindFolder() for a temporary directory fails
or returns a world-writeable location
On a multi-user system, an attacker could create a symbolic link
/tmp/ pointing to any file owned by a user who plays an
ioquake3-based game. When the victim runs ioquake3, the target file will
be overwritten and replaced with the process ID of ioquake3.
The effect of this attack depends on the file being overwritten: it
could be simple vandalism (destroy one of the victim’s files), or it
could have further security implications if knowledge of the contents of
a target file is used for authentication (in a system similar to
pam_dotfile [DOT], for instance).
For the dedicated server, the process ID is written to,
but the attack is essentially the same. For forks of ioquake3, the
filename will typically include the name of the fork, e.g.
Affected versions
* ioquake3 >= svn r1773
* ioquake3 < svn r2253
* OpenArena 0.8.8
* Reaction beta 1.0
* Smokin’ Guns 1.1
* Tremulous “trunk” >= svn r2125
* Tremulous “gpp” >= svn r2140
* Turtle Arena >= svn r204 (all releases named Turtle Arena)
* World of Padman >= 1.5.2 beta
Unaffected versions
* ioquake3 1.36
* ioquake3 <= svn r1772
* ioquake3 >= svn r2253
* OpenArena <= 0.8.5
* Smokin’ Guns <= 1.1b4
* Tremulous “trunk” <= svn r2124
* Tremulous “gpp” <= svn r2139
* Tremulous GPP1
* Tremulous <= 1.1.0
* Turtle Arena <= svn r203
* TMNT Arena 20091211 (former name of Turtle Arena)
* ioUrbanTerror 2007-12-20 client
* ioUrbanTerror 2007-12-20 server
* World of Padman <= 1.5.0
The attached patches have been reviewed by two ioquake3 maintainers.
Please apply them to affected versions on or after the embargo date.
Patch 0001 fixes the vulnerability by writing the pid file into the
ioquake3 user’s home directory (e.g. ~/.q3a/ for an unmodified
engine with default configuration) instead of the temporary directory.
Patch 0002 is recommended, but not strictly necessary to fix the
vulnerability. It removes the functions to get the temporary directory,
as a precaution against other unsafe uses.

Calling all content creators!

Posted on June 2nd, 2012 by 8bit

Work has started on “baseio“, a project to create a small game to include with the ioquake3 engine download with Creative Commons licensed content. Work has already been started on textures, weapon models, and a player model, but there is still much to be done. Animations, mapping, and audio are most needed, but if there’s anything you can contribute, join the discussion. Any content contributed must be under a Creative Commons nonccommercial-by-sharealike license. The ioquake3 code base and any contributed code will remain GPL. We also need some people who have lead mods before since we’ve run out of beer so now we’re too sober to know what to do.

Turtle Arena 0.6 Released!

Posted on April 13th, 2012 by TimeDoctor

Boasting better than HD graphics, the Turtle Arena team have released version 0.6 of their Turtle-Powered video game.

Here’s what’s new:

  • Four player splitscreen!
  • The turtles now have tails, like in the original TMNT comics.
  • Added cel-shading to many 3D models (code from ZEQ2-lite)
  • Remade many images at higher resolution (most or all UI/HUD graphics are “HD”)
  • TrueType fonts are used by default and are rendered to screen size (always look nice).
  • Redesigned main HUD area.
  • Added joystick select menu.
  • Created new texture for Overload base.
  • Possible to play while hosting an internet server using the game client.
  • Team name is now colorized in team play messages.
  • Now uses dpmaster protocol, instead of quake3 master protocol, keeps the game separate on master server.
  • Automatically choose next map in multiplayer using scripts/arenas.txt (and scripts/*.arena), allows new maps to be automatically be added to map rotation.
  • Lots of fixes from ioquake3 contributers, updated from ioq3 revision 1794 to 2236.
  • …and many other bug fixes and improvement!

You can download Z Turtle Arena for Windows or Linux. Order some pizza while you do so.

next page