A rough guide to the varieties of Quake. This is not a step-by-step recipe, but rather some info to help you decide what you want to do.
This guide is also hosted at the Steam community site: Quake Engines, Old and New
If you have comments, questions, corrections, or additions, please post a comment on the guide over there. Or, you can send me an email at my address at the bottom of this page.
When you install Quake from Steam, and you try to launch it, you will be given four options: Quake, QuakeWorld, GLQuake, or GLQuakeWorld. These are the four original Quake “engines” provided by id software. A Quake engine is just a program that can understand and use Quake game data files – it's a program you run in order to play Quake.
The engine that Steam just calls “Quake” is more usually known as “WinQuake”, because it is a version of Quake rewritten to use the Windows operating system rather than DOS. Just FYI in case you see references to WinQuake elsewhere.
Steam doesn't give you the original DOS Quake engine, but there's not really any reason to use the DOS version these days.
The motivation behind this variety of Quakes is that there are two major divisions in Quake technology: multiplayer protocol (NetQuake vs. QuakeWorld) and graphics rendering (software vs. OpenGL).
In Quake multiplayer as it was first released, the client (the player's computer) would tell the server what it wanted to do, the server would tell the client what happened as a result, and the client would then show those results. This is a straightforward arrangement, but it becomes frustrating when there is a long network delay between client and server. This delay made people observe that movement in the original Quake could feel like “ice skating”.
QuakeWorld was a dramatic revision of Quake that incorporated client-side prediction. The client was allowed to immediately show the results of player action; if it happened to be mistaken, the server could correct it later, causing the client to “jump” to comply with the correct state of the world. Client-side prediction makes QuakeWorld multiplayer feel more responsive, but the occasional correction from the server can make it seem more erratic or flaky than the original Quake (now sometimes called NetQuake, to differentiate it from QuakeWorld).
QuakeWorld also introduced some changes to player movement, most significantly allowing you to reach higher sustained speeds when strafejumping.
Over time many players eventually gravitated to QuakeWorld, but there are still multiplayer communities that prefer NetQuake.
Quake was originally released with a software renderer. An OpenGL renderer was added in a later release, providing hardware-accelerated graphics with texture filtering and other effects.
The OpenGL versions of NetQuake and QuakeWorld were very popular, to the point of single-handedly boosting the adoption of addon video cards like the 3dfx Voodoo. However they did change Quake's look: textures smoothed, lighting changed in certain ways, water and sky effects different, and rendered pixel colors (after applying texture filtering and lighting) no longer restricted to be exactly on the Quake palette. Not everyone was a fan of these changes, so the use of the software renderer didn't die out.
Quaddicted demonstrates some of the issues with some OpenGL Quake engines. As will be mentioned below, some of the modern engines make an effort to preserve the look of the original lighting/texturing.
The four original Quake engines cover all the combinations of those variations:
Which one you choose depends on what style of multiplayer (if any) and graphics rendering you prefer. The content you wish to play can also drive your choice; for example, most singleplayer maps and mods are developed with NetQuake engines in mind rather than QuakeWorld. In fact, the original QuakeWorld engine cannot even play the out-of-the-box Quake singleplayer campaign; it's multiplayer only. Multiplayer mods may be made with either NetQuake or QuakeWorld in mind.
So it's handy to have all of these engine choices available.
With the release of the Quake source code, enterprising developers started work on their own versions of Quake almost immediately. These new versions of Quake are generally focussed on bug fixing, increasing the limits on the number of things supported in a Quake map, tackling usability problems, supporting the use of other textures/models/sounds, and adding new visual effects.
Also many of these new engines can play music files in OGG and/or MP3 format. This is especially useful if you only own a digital download of Quake and you don't have the soundtrack as it was originally provided (music tracks on the Quake CD). If you can obtain the Quake soundtrack in OGG/MP3 format, then using a modern Quake engine you can once again hear it while you play. More details about soundtrack file support in this guide: Quake Soundtrack Solutions
There is very little reason to stick with the original Quake engines instead of using a modern engine. If you intend to play third-party content a modern engine may actually be required.
Each engine mentioned below has a long development history and many features, but I'm going to do my best to describe its intentions and “selling points” very briefly. There are also many other Quake engines out there, but I want to limit this section to those that are most widely used. If you're a superfan of a particular engine and notice that I've gotten something wrong, please let me know.
The Quick Start section of the Quake Owner's Manual guide has some recommendations: Quake Owner's Manual
But if you want to really dig in and pick the best Quake engine for you, here's a few criteria to keep in mind:
Whichever engine you choose, you're going to end up getting a new Quake executable. There may be some other files or folders along with it, but at a minimum you're getting a program that you will run to play Quake.
When you run this program, it will look for an “id1” folder in some location. Usually, at least on Windows systems, it will expect the “id1” folder to be placed right next to the Quake engine program. (But consult the docs for your Quake engine if you want to be sure.) So create the “id1” folder if it doesn't yet exist.
Quake requires two files inside the “id1” folder: “pak0.pak” and “pak1.pak”. You can get those two pak files from your Steam copy of Quake, or any other Quake installation.
So if you own Quake on Steam, you can use any of the engines described below. Some of the engines have related file-bundles or other installers that can make the process easier, and I'll mention some of those, but none of those installers/bundles are required.
If you prefer launching Quake through the Steam UI, that works just fine when using a modern Quake engine. You have a couple of options:
Most simply, you can use Steam's “Add a Non-Steam Game” feature to create a shortcut to launch the Quake engine of your choice. Done. Enjoy having Quake in your common game launcher, and use the Steam community overlay if the engine supports it.
However you may want to launch the modern Quake engine of your choice when you click Play for Steam's normal “Quake” entry in your game library. This approach is helpful if you want to upload screenshots to Steam's Quake “community hub”, make use of the Steam Cloud for your config and savegames, or track how many hours you've spent in the game. And it's also easy to set this up, because when Steam launches a Quake engine all it does is find an executable with a particular name and run it. You can replace those files and Steam won't care (unless Quake gets an update someday, which is… unlikely).
If you choose “Play Game…” from Quake's context menu in Steam, or you choose “Play Quake” from the Play menu, then Steam will run whatever program is in the Steam Quake folder (“steamapps\common\quake”) that is named Winquake.exe. If you choose “Launch QuakeWorld”, Steam will run qwcl.exe. “Launch GLQuake” will run GLquake.exe. “Launch GLQuakeWorld” will run glqwcl.exe.
So, steps for making Steam launch the engine of your choice when playing Quake:
Finally: you may need to disable the Steam community overlay. Don't do that right away, but if launching Quake through Steam fails, then the first thing you should try as a fix is to open Steam's properties dialog for Quake and disable the overlay.
DarkPlaces (Windows, OS X, Linux) is the most popular engine for changing the look ‘n feel of singleplayer Quake. Organizationally-speaking it probably belongs in the “Singleplayer Focus” section below, but for various reasons it requires some extra commentary that comes up against Steam’s limits on section sizes. So let's tackle it here in its own section:
DarkPlaces uses an OpenGL renderer. It adds many optional visual effects, as well as support for several other mapfile formats (including bsp2) and 3D model formats. While it is most popular for singleplayer use, it also supports NetQuake and its own multiplayer protocol (client or server), and QuakeWorld (client only). It's also the only Quake engine I'm aware of that has support for playing with an Xbox 360 controller.
The downloads for the Windows and Linux versions of DarkPlaces provide both an executable that uses SDL and also one that doesn't use SDL. Either or both may work well for you. According to a post on quakeone.com, the SDL variety is better-tested.
The “Ultimate Quake Patch” (UQP) bundle collected by MenaceInc incorporates the DarkPlaces engine. That download is described in this guide: Ultimate Quake Patch
The UQP is a Windows installer that replaces two of the Quake engine executables that were provided by Steam. After installation, if you run “Quake” or “GLQuake” from Steam, you will now be running DarkPlaces instead of the original engines. The UQP has been popular in the Steam forums, but keep in mind these issues:
If you are interested in using DarkPlaces, and you are comfortable with “computer tasks” like opening zip archives and moving/copying files, you should consider not using the UQP. Instead you could get the DarkPlaces engine yourself. If you want to launch DarkPlaces through Steam, just put the various DarkPlaces files into the Steam Quake folder, and replace Steam's Winquake.exe and/or Glquake.exe files with copies of darkplaces-sdl.exe (or darkplaces.exe if that works better for you). You can also download and install the soundtrack files as described in the “Quake Soundtrack Solutions” guide linked above.
(Note that you should download the DarkPlaces engine, not the “DarkPlaces mod”. The mod is a different thing from the engine, and it changes gameplay in various ways… you can try it later if you want, once you have the engine working.)
If you have already installed the UQP and you would like to upgrade to the most recent version of DarkPlaces, there's a forum thread that can help.
The Quake HD and Quake Epsilon bundles also each include the DarkPlaces engine (more up-to-date than DarkPlaces in the UQP, but not necessarily the most recent version) and a great deal of new media. Those two bundles are probably the most extensive collections of replacement textures, models, music, and effects for Quake.
(top: images from Quake HD on Mod DB; bottom: images from the old Quake Epsilon website)
QuakeSpasm (Windows, OS X, Linux) is a crossplatform descendant of the classic Fitzquake engine; it uses an OpenGL renderer. It supports NetQuake multiplayer (client or server) but is primarily used for singleplayer content – many Quake singleplayer map releases these days require (or at least are primarily tested with) an engine from the Fitzquake family. It supports the bsp2 format. QuakeSpasm is faithful to GLQuake's original look while still providing bugfixes and usability improvements.
Most of the Quake videos from the “Custom Gamer” YouTube channel use QuakeSpasm, e.g.:
A QuakeSpasm installer for Steam Quake owners is available for Windows. It will place the QuakeSpasm engine and libraries in your Steam Quake folder; it doesn't replace any of the Steam-provided Quake engines, but it can access the .pak data files in Steam with no need for file copying. An uninstaller is provided that will clean up all of its files without harming your Steam installation.
Note that QuakeSpasm has at least one library in common with the files installed by the “Ultimate Quake Patch”. If you use both the “Ultimate Quake Patch” and the “QuakeSpasm for Steam” installer at the same time, the operation of DarkPlaces and/or QuakeSpasm may be affected. And uninstalling the QuakeSpasm files will remove a library used by DarkPlaces. It's probably best not to use both of those installers at the same time; if you want to use both of those engines, then you will need to manually set up one or both of them in their own folder(s). If you want to continue to share the .pak data files, then the “Engine Coexistence” section below has some relevant tips.
The “QuakeSpasm for Steam” installer can however co-exist happily with the “ProQuake for Steam” installer described below.
Fitzquake Mark V (Windows) is another OpenGL-using branch of Fitzquake, therefore similar to QuakeSpasm (see above) in most aspects, including bsp2 support. It has a particular focus on bugfixing, providing debug tools for content creation, and code cleanup/documentation for the benefit of engine hackers. If you like Fitzquake/QuakeSpasm and you Quake exclusively on Windows, Fitzquake Mark V is a good tool to have in your Quake Engine Toolbox. In some cases it may perform better than other Fitzquake-based engines, or have a key feature or bugfix that you need. It's also nicely portable as a single executable that doesn't rely on external libraries.
DirectQ (Windows) as the name implies uses Direct3D 9. As one of the few engines with a primary focus on a written-from-scratch Direct3D renderer, on some systems it may be the Windows engine with the best performance – although with standard Quake content, performance is only likely to be an issue on a low cost/power system (e.g. a small netbook with integrated graphics hardware). DirectQ is aimed at providing a cleaned-up renderer, with even more usability improvements than QuakeSpasm/Fitzquake, and it supports NetQuake multiplayer (client or server).
Engoo (Windows) uses a software renderer (and so does not support the Steam community overlay). Engoo is intended for singleplayer; NetQuake multiplayer support is present but untested. Out of the box it has a faithful WinQuake appearance, but unlike WinQuake it has widescreen support. It also provides many menu-driven options for different rendering modes and effects. Engoo even provides presets for mimicking the appearance of Quake 1.01, Quake 1.07, GLQuake, or Quake64 … either an amusing feature or maybe an essential one, depending on how deep down the Quake rabbit-hole you've fallen.
qbism Super8 (Windows) also uses a software renderer. It supports NetQuake multiplayer (client or server) but is primarily used for singleplayer content, including bsp2 support. Unlike many of the above engines, Super8 isn't concerned with replicating a “faithful” Quake experience. Along with modern conveniences like widescreen support and good in-game menus, Super8 also alters Quake's visuals to aim for what its author calls a “meta-nostalgic” effect… not Quake as it actually was, but something else low-fi and gritty (maybe “Quake like you remember it”?).
If you would rather try to tune Super8 to look like WinQuake, you can read its docs to get a recommended configuration for that purpose, and also delete or move aside the “pak88.pak” file which contains Super8's custom palettes and models. But Super8's strong point is its unique aesthetic – you should give its default setup a try. The video below shows clips of Super8 gameplay on the custom map “honey” by czg:
ezQuake (Windows, OS X, Linux, FreeBSD) is the most popular client for QuakeWorld multiplayer. It also has some limited support for singleplayer content (playing the original Quake campaign or other maps that don't require a mod), and can act as a server to host QuakeWorld games. It comes in software-renderer and OpenGL varieties.
You can learn more about it at the ezQuake site; however to install it I would recommend using the nQuake package, which includes the ezQuake engine along with popular addons and graphics presets, along with AI bots for playing skirmish deathmatch.
nQuake will install to its own folder on your computer, separate from your Steam files. After installation you should manually copy the pak1.pak file from your Steam copy of Quake into the id1 folder of nQuake.
If you don't like the solid-color player skins that nQuake configures, a forum thread has solutions for you.
More info about the AI bots included in nQuake can be found in this guide: Deathmatch With Bots (on hundreds of maps)
FTE (Windows, OS X, Linux) is another QuakeWorld client currently in use; it can also act as a server to host QuakeWorld games. Along with an OpenGL renderer, its Windows version also supports Direct3D 9; the Direct3D renderer may perform better on Windows systems that have weak OpenGL support. FTE is something of a “swiss army knife” that also provides support for NetQuake multiplayer (client only), singleplayer, bsp2 format, many extra features for mappers and mod developers, and even Quake 2/3 multiplayer (client only). It provides a selection of graphics presets ranging from fancy-eye-candy to nearly-WinQuake-faithful.
Unlike most of the Quake engines in this list, FTE's “stable” build is quite old and not recommended. You should instead try the latest build. There's a chance that a recent change will have broken something, but overall the latest build should give you a better experience. Any FTE-related documentation in these guides was written in reference to a recent “latest build”. (Note that the OS X builds lag behind the Windows/Linux builds… sometimes by a lot.)
Fodquake (Windows, OS X, Linux, FreeBSD) completes the trifecta of currently-popular QuakeWorld clients; it uses an OpenGL renderer. It's less feature-stuffed than ezQuake or FTE, with a focus on technical improvements in areas like rendering and network protocol. It does not support singleplayer, and also cannot host multiplayer games.
ProQuake (Windows, OS X, Linux) has been a popular NetQuake multiplayer client, which also supports playing singleplayer content and can act as a server to host NetQuake games. ProQuake's main selling points are multiplayer oriented, such as more precise aiming, a server browser, ping display in the scoreboard, and support for the location markers used in teamplay communication. ProQuake provides both OpenGL and Direct3D 8 renderers, although the OpenGL renderer appears to be the primary focus.
A ProQuake installer for Steam Quake owners is available for Windows. It will place the ProQuake engine and libraries in your Steam Quake folder; it doesn't replace any of the Steam-provided Quake engines, but it can access the .pak data files in Steam with no need for file copying. An uninstaller is provided that will clean up all of its files without harming your Steam installation.
Note that ProQuake has at least one library in common with the files installed by the “Ultimate Quake Patch”. If you use both the “Ultimate Quake Patch” and the “ProQuake for Steam” installer at the same time, the operation of DarkPlaces and/or ProQuake may be affected. And uninstalling the ProQuake files will remove a library used by DarkPlaces. It's probably best not to use both of those installers at the same time; if you want to use both of those engines, then you will need to manually set up one or both of them in their own folder(s). If you want to continue to share the .pak data files, then the “Engine Coexistence” section below has some relevant tips.
The “ProQuake for Steam” installer can however co-exist happily with the “QuakeSpasm for Steam” installer described above.
Qrack (Windows) is another OpenGL client that some prefer as a NetQuake multiplayer client. It also can play singleplayer content and act as a server to host NetQuake games. Unlike ProQuake, Qrack supports the use of alternate textures and additional visual effects.
Qrack has not had a build blessed as “stable” since 2011 even though it is still undergoing development. If you're interested in using Qrack, you may want to try out the post-2011 builds, but it can be hard to track down the current build; your best chance is to go to the Quake Clients forum at quakeone.com and look for threads discussing Qrack.
Here's a survey of a few more Quake engines currently in use. (This still isn't all of them!) I'm not familiar with most of these, so this is just a quick collection of blurbs to let you know what's out there. The other Quake guides don't cover the specific details of configuring the engines listed below, but there's a lot of commonality among all Quake engines that will still apply to these.
The bjp engines (Windows), also called aguirRe's engines, are cleaned-up versions of glquake.exe and WinQuake.exe (NetQuake, OpenGL or software rendering) with some raised limits for supporting modern maps (but not bsp2). Good choice if you demand the exact original WinQuake or GLQuake experience, but want to play new maps.
TyrQuake (Windows, OS X, Linux) has NetQuake and QuakeWorld versions, using OpenGL or software rendering. This is another cleaned-up, raised-limits engine project. Has bsp2 support if you use one of its builds from 2013 or later.
JoeQuake (Windows, Linux) is a NetQuake engine using OpenGL. It has added visual effects, and a focus on capturing and watching gameplay demos. JoeQuake is still used by speedrunners.
reQuiem (Windows, Linux) is a NetQuake engine using OpenGL. It's a descendant of the JoeQuake engine with more features and fixes, including soundtrack file support. Current distributed builds (as of Feb 2015) are missing some significant bugfixes, so ideally you'd build it from source if you can.
QuakeForge (Windows, Linux) has NetQuake and QuakeWorld versions, and options for OpenGL or software rendering. It has bsp2 support and soundtrack file support (but see the documentation). Note that development focuses more on the Linux version; the Windows version (as of Feb 2015) has problems with the OpenGL renderer.
Any modern Quake engine has its own instructions for installation, but they all share a few things in common. It's useful to know that each engine follows the same general rules for working with config files, pak files, and other “loose” files not contained in pak files – which could be maps, 3D models, sounds, etc.
Why do we care about this behavior?
For one thing, it's good to know this stuff if you want to manually tweak your config, or whenever you are adding new third-party content that you downloaded.
The Quake Owner's Manual guide goes into lots of detail about working with your config: Quake Owner's Manual
With addon content usually there will be a readme file to tell you exactly where to put the files you downloaded and how to use them, but a general knowledge of what's going on is always helpful. negke's guide to playing custom maps and mods expands on this: Custom Singleplayer Levels
And specifically on-topic here: it's good to have these rules in mind if you are going to be using more than one Quake engine, so that you can keep them from “stepping on each other”. If you are only ever going to run one Quake engine then you can pretty much ignore the rest of this section… otherwise, read on.
Most obviously, if you have multiple Quake engine executables placed in the same directory, anything you put in the “id1” subfolder of that directory can be seen by all of those engines, since they all use the same rules for finding content. Anything you put in the “qw” folder can be seen by QuakeWorld-capable engines. Etc.
So for example let's say you've downloaded a singleplayer map file named “foo.bsp”. Any loose bsp file needs to be placed in the “maps” subfolder of one of the folders that your Quake engine sees; so if you put “foo.bsp” inside “id1\maps” you will guarantee that all of your Quake engines can use it.
Some Quake engines consist of a single executable, but others include various dynamically-linked libraries along with the executable. These libraries generally expect to be placed in the same folder as the executable.
So if you have two Quake engines that are distributed with different versions of the same library – for example, some Windows engines have conflicting versions of “zlib1.dll” – then you won't be able to dump all their files into the same directory and expect both engines to work.
This problem can (sometimes) be solved, while still allowing shared content, with use of the “-basedir” command-line option. The “-basedir” option allows you to explicitly specify the directory that contains “id1” and any other data folders mentioned above, rather than just assuming that they are located with the engine executable.
For example you could stash all DarkPlaces engine files in a “C:\Games\QuakeEngines\DarkPlaces” folder and QuakeSpasm files in “C:\Games\QuakeEngines\QuakeSpasm”, then put your game data under “C:\Games\QuakeData” – i.e. your “id1” folder would be at “C:\Games\QuakeData\id1”. If you always launched DarkPlaces or QuakeSpasm using the “-basedir C:\Games\QuakeData” option then they would run correctly.
The “-basedir” option ideally would be something that any Quake engine supports.
However, just experimenting with this option shows that it seems to not currently work for at least the Windows versions of Fodquake, DirectQ, or Qrack. And for Engoo and qbism Super8, “-basedir” will only work if the specified path has no spaces in it.
The saving grace for Fodquake, DirectQ, and Engoo is that they are just single-file executables without any library baggage, so use of “-basedir” is less likely to be necessary.
Command-line options can be passed to a Quake engine executable by various methods. See the “Command Line” section of the Quake Owner's Manual guide: Quake Owner's Manual
Sharing maps and other content between engines can be great, but sharing config files is… less great.
With the original Quake engines, both Quake and GLQuake read/write “id1\config.cfg” (note that this file is saved to the Steam Cloud if you launch Quake through Steam), and both QuakeWorld and GLQuakeWorld read/write “qw\config.cfg”. This is fine because Quake/GLQuake use the same set of config options, and QuakeWorld/GLQuakeWorld use the same set of config options.
When you start using modern Quake engines however, each one can have its own special config options – or worse, its own interpretation of common config options. This is perfectly fine if the engine stores its configuration in its own special directory that no other engine will see. However many of the engines will just tend to dump their config.cfg file into “id1”.
If you are using two or more engines that want to put their config file in the same place, then you may just need to create completely separate Quake installation directories for them – don't share any files at all.
Another possible solution is to launch each engine with its own unique “-game” command-line option, like “-game quakespasm”, to force it to use a special subfolder to stash its config. This solution gets in the way though when you want to run a mod using the “-game” option.
If you have burning questions about a particular Quake engine and Google has failed you, the sites below are good starting points for finding knowledgeable folks:
The most recent date that I checked out these engines' features was May 03 2015.
The latest stable version of each engine was:
2015
2014
2013
This guide is also hosted at the Steam community site: Quake Engines, Old and New
If you have comments, questions, corrections, or additions, please post a comment on the guide over there. Or, you can send me an email at my address below.