We’re Updating ioquake3’s Graphics Renderer
Posted on September 11th, 2016 by TimeDoctor
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.
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 server.ioquake3.org 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.