Quake
Not enough ratings
Quake on Linux
By almos
A detailed guide on how to set up the Quake trilogy on a Debian-based Linux distribution.
3
   
Award
Favorite
Favorited
Unfavorite
Preparation
Steam ships the Quake trilogy as they were released in the 1990s, without any updates. It's a shame, since all three versions of the Quake engine were open-sourced a few years after their release, and the community has been playing around with the code ever since. It is thus possible to run these games updated with bug fixes and other improvements, we just need to get the data files from Steam.

The first step is to install the games in Steam. There are two ways of doing this:
  • Install the native Linux client of Steam, find Quake in your library, in the Manage menu (⚙ icon) select Properties, go to the Compatibility tab, and enable any Proton version. Now Steam will let you install these Windows-only games on Linux.
  • Install the Windows client of Steam in Wine, install Quake, extract the data files from ~/.wine/drive_c/ProgramFiles/Steam/SteamApps/common. Add the -no-dwrite option to the command line if the text doesn't appear in the login window, and add the -no-cef-sandbox option if you only get blackness in the main Steam window.

You need to install the base games and the mission packs separately.

You could stop here, and play Quake with Wine or Proton (which is a fork of Wine), but this guide will show you how to play without a Windows emulator.
Quake
The only files that are needed from the installed game are the .pak files in the id1, hipnotic, and rogue directories. Copy them (with the correct directories) wherever you want, and change all of them to lowercase. It should look like this:
quake1 hipnotic pak0.pak id1 pak0.pak pak1.pak rogue pak0.pak

QuakeSpasm

The basic Quake engine in Debian is QuakeSpasm. It is a multi-platform port of the FitzQuake engine, which in turn is the original GlQuake with several bugfixes.

apt-get install quakespasm

Run the game as quakespasm -basedir /where/you/have/your/id1/directory. The mission packs are started with adding -hipnotic or -rogue to the command. QuakeSpasm doesn't play the demos on startup, and doesn't show a confirmation dialog when quitting -- If you want these features, start the game with the -fitz option. The configs and saves are in the ~/.quakespasm directory.

I like to set gl_texturemode GL_NEAREST_MIPMAP_LINEAR, because it perfectly combines the aesthetics of the good old software renderer (which the game was designed for) and the miracle of hardware acceleration.

Music

For whatever sick reason the Steam version of Quake is missing the original CD audio music. Modern Quake engines support playing music from files, if you can obtain them. Take a look at this post. Quakespasm wants the music in Ogg Vorbis format, and the file names should be like id1/music/track02.ogg. The music of the mission packs must be installed separately in their own directories in the same pattern.

Transparent Water

The original software renderer of Quake didn't support transparency (what a stepback from Doom!), and the visibility data in the map files takes this into account. This means, that if you do r_wateralpha 0.6 in the console you see the void when looking through water, lava, and portal surfaces. To fix this you need to use the VisPatch utility[vispatch.sourceforge.net] on the pak files. You need to put vispatch, the original pak, and the corresponding patch file in the same directory, and run vispatch to produce a patched pak. Warning: transparent water makes it easier to find some underwater secret areas.

DarkPlaces

Unlike QuakeSpasm, the DarkPlaces engine aims to improve the visual quality of Quake as much as possible with advanced lighting and shading effects. If you ask me, it's ugly (especially the water reflection), but lots of young people like it, so I list it here.

apt-get install darkplaces

Boring history lesson: DarkPlaces was originally developed for a free shooter called Nexuiz. Later, one of the main devs sold the Nexuiz name, and a totally different game was released under this name, which used CryEngine 3. The original Nexuiz community had to change the name of their game to Xonotic.

HD Texture Pack

If you are one of the heretics that despise the raw and brutal look of the original Quake, you might be interested in a package of high resolution textures, improved models, and other nonsense things. Perhaps the most comprehensible package is Quake HD Pack. It also contains the DarkPlaces engine (only for windows), the missing music, and the VisPatch utility, so it's not completely useless.

Enhanced Version

In August 2021 Bethesda released a new, enhanced version of Quake 1 with soundtrack, new graphics, new mission packs, achievements, multiplayer cross-platform with console peasants, and so on. It uses the KEX engine that was designed to emulate other game engines, and thus port old games to new systems. It doesn't support Linux, of course, but it runs fine with Proton.

By default KEX uses Vulkan rendering. If you have trouble with Vulkan, find the config file at steam/steamapps/compatdata/2310/pfx/drive_c/users/steamuser/Saved Games/Nightdive Studios/Quake/kexengine.cfg, and change r_rhirenderfamily. The supported values are vulkan, opengl, d3d11. By default Proton uses DXVK to translate D3D11 to Vulkan, so if you really have to turn off Vulkan, you can either select OpenGL, or instruct Proton to use Wined3d for D3D11. To do that, open the game properties window, and on the General tab set the Launch Options to PROTON_USE_WINED3D=1 %command%. Note that Wined3d is not officially supported by Proton.
Quake II
Again, the only files that are needed from the installed game are the .pak and .cin files, with their corresponding directories, in lower case.

Yamagi Quake2

The default Quake 2 engine in Debian is Yamagi. It is a multi-platform engine with focus on single player, trying to be as close to the original as possible. If you want multiplayer, you might be interested in r1q2[old.r1ch.net], which is only available for windows.

apt-get install quake2

The startup script quake2 expects the data files in /usr/share/games/quake2/. If you want to put your data elsewhere, you'll need to start the game as /usr/lib/quake2/quake2-engine +set basedir /where/you/have/your/baseq2/directory. The mission packs are started with adding -xatrix or -rogue to the command. The configs and saves are in the ~/.yq2 directory.

Music

For whatever sick reason the Steam version of Quake 2 is missing the original CD audio music. Modern Quake 2 engines support playing music from files, if you can obtain them. Take a look at this post. Yamagi-quake2 wants the music in Ogg Vorbis format, and the file names should be like baseq2/music/02.ogg. The music of the mission packs must be installed separately in their own directories.

HighRes Texture Pack

Now, unlike the first Quake, Quake 2 desperately needs higher resolution textures, because the original ones are really blurry. A good texture pack can be found at the Yamagi[deponie.yamagi.org] website, but there are several others at ModDB. Extract both zip archives into the baseq2 directory, and it's done.

Quake III Arena
Again, the only files that are needed from the installed game are the .pk3 files, baseq3 and missionpack directories.

IoQuake3

The default multiplatform Quake 3 engine is IoQuake3. It is fully compatible with the original Quake 3 content, and AFAIK it can run some of the popular mods as well.

apt-get install ioquake3

The game is started as /usr/lib/ioquake3/ioquake3 +set fs_basepath /where/you/have/your/baseq3/directory. The configs are in the ~/.q3a directory.

The only problem with IoQuake3 is that it doesn't support PunkBuster, so only play with people whom you trust not to be cheating.

Improving Visuals

If you're not satisfied with the texture quality of the game, there is a good HighRes Texture Pack at IoQuake3[ioquake3.org]. Just put the .pk3 into the baseq3 directory.

For widescreen resolution you need to edit the config file ~/.q3a/baseq3/q3config.cfg: set the r_customheight and r_customwidth parameters, and set r_mode to -1. To fix the field-of-view set cg_fov to something like 115.

The game uses a geometry LoD feature to reduce the complexity of distant polygon meshes. Its threshold values were calibrated for extremely low screen resolutions (or extremely slow computers), so the objects already get jagged at 5 meters or so (check the health orbs). This can be improved by setting r_lodbias to -1.

Team Arena

The only official mission pack for Quake 3 is Team Arena, which is in the missionpack directory. IoQuake3 will initially refuse to run it, because Steam only supplies the pak0.pak, but not the point releases (they are like service packs that fix certain files in the pak0.pak by overriding them). Get the point releases from the ioquake3 website[ioquake3.org] (read the big wall of legal text, and click on agree at the bottom), and put the .pk3 files in the missionpack directory.

Team Arena can be started either from the main menu of Quake 3, or by adding +set fs_game missionpack to the command.

Warning: Team Arena initially starts as 640x480 full screen, which may not be supported by modern monitors, so it might be a good idea to edit its config file beforehand.
Credits
Guide icons are from Th3 ProphetMan (Jose)[www.iconarchive.com].
7 Comments
Rich Cat Sep 3, 2021 @ 6:23pm 
The Quake 3 Arena "hi-res" pack sucks imo (kills the original experience of the game). I'll have to stick to the deault low-res textures.
afogl001 Feb 22, 2019 @ 1:13pm 
Totally agree with the author about not being deprecated. Personally, I think nothing is quite like playing Quake on Darkplaces with some properly tuned real-time lighting. All the shadows, dark corners, and flickering lights makes feel and even play on a deeper level than the original release.

Plus, by not running it through Steam, you can avoid all your friends complaining that your playing a game from 1996 instead of Rocket League with them :D
almos  [author] Sep 23, 2018 @ 2:30pm 
Steam ships the Quake series with their original executables from the 90's (just like all old games). Proton runs them with a windows emulator.

This guide is not deprecated, because it tells you how to run these games on the latest and greatest version of the game engine. Natively. With music. With improved visuals.
xdshot Sep 22, 2018 @ 5:12pm 
With new Steam Proton being a thing, this guide is kinda deprecated.
L3X Apr 18, 2018 @ 3:34pm 
Impressive work! Thank you very much!
JLaw Feb 7, 2017 @ 1:47pm 
Pizel, the basedir argument needs to specify where your id1 directory is.

For example if your id1 directory is at /home/pizel/quake/id1 then you would do:
quakespasm -basedir /home/pizel/quake/id1
JLaw Nov 6, 2015 @ 8:27pm 
Good info.

Something you might be interested in: on Linux (and on OS X) you can still download a Windows game's files from Steam without needing to use Wine. See post #25878 in this thread: http://www.celephais.net/board/view_thread.php?id=1&start=25878

Unlike what I was thinking in that post, you do NOT need to already have Steam installed.

When you do this on Linux the files will end up in the ~/Steam/steamapps/common/Quake directory.