Understanding Your Quake Directory & Installing Custom Content

What is this guide and who is it for?

This guide is intended to provide people new to Quake custom content with a working understanding of how to install and run custom content of all types, as well as general setup of the game. There will be detailed instructions, but ideally anyone who has read this full guide will understand how things work well enough to not need step-by-step instructions every time they want to install things. This is not intended to replace documentation for each individual package, and I still recommend that you always read the readme. This guide should help in general in the absence of detailed instructions, and provide any knowledge assumed in vague instructions. It can also be helpful for creators to understand the general rules for installation, packaging and file structures.​

Contents




Wait, what's a Quake directory?

A "directory" refers to a location on a hard drive. It's a fairly old-school term that is pretty much interchangeable with "folder" nowadays, at least for the purposes of this guide. Don't let old readmes confuse you.


So where can I find my Quake directory?​

If you've installed Quake from Steam, you can find it by right-clicking Quake, then going to Manage>Browse Local files. In general this will take you to ...\Steam\steamapps\common\Quake. You can use this directory for custom content, or reinstall Quake in a separate one. Let's take a look at what you can see inside it from a fresh install from Steam*:​

There are four folders: id1, hipnotic, rogue, and rerelease.​
  • "id1" is the folder for the base game, and refers to id Software, the developer
    • This is the most important one to us, as it contains PAK0.pak and PAK1.pak, which contain all of the game's data.
  • "hipnotic" is Quake Mission Pack 1: Scourge of Armagon, and refers to Hipnotic Software
  • "rogue" is Quake Mission Pack 2: Dissolution of Eternity, and refers to Rogue Entertainment
  • "rerelease" contains all the content from the 2021 rerelease, including updated versions of the other three.
*If you've installed Quake from the Microsoft store, this should be the same other than the location of the Quake folder. If you've installed Quake from GOG.com, you won't have the rerelease content but the rest of this guide will still be the same.


Setting up Quake for the first time​

If you want to manually install Quake somewhere else, all you need to do is create a new folder, call it whatever you want, and copy the id1 folder into it. You can do the same with hipnotic and rogue if you want, but they're only necessary to play those mission packs. Then you'll just need a source port. Whether you're using the Steam install or creating your own, unzip your source port of choice into the folder, so that its .exe is in the same folder as (not inside) id1. Double clicking your source port's exe should launch Quake, and by selecting new game you should be able to play the base campaign, however there will be no music, as it was originally stored only on the CD and not in the game files. Modern source ports are happy to play it from ogg and mp3 files however, and the rerelease comes with exactly that, so we can find the "music" folder inside Quake\rerelease\id1 and copy it to Quake\id1. The mission packs have their own soundtracks so you can repeat this step for hipnotic and rogue if you want to. The final bit of folder setup we need to do is creating a new folder called "maps" inside id1. This is where we will put any loose .bsp map files that do not require their own mods, as well as some additional things like .lit and .ent files that the mapper may have included.
Note to creators: Do not include .pts files in your releases. These are meant to help you find "leaks" in your map. If you have one, make sure your map is properly sealed before releasing.
If you want your source port to launch from Steam, for example to track playtime, rename glquake.exe to openglquake.exe or something else you'll be able to recognise, and then rename your source port's executable to glquake.exe. Then, to launch it, select "Play Quake (Original)" when running Quake from Steam.
Now we can get to installing maps, mods, and all the other custom goodness provided by the community.


The Game Folder

Every mod is contained within its own folder in the Quake directory. In fact, the base campaign folder - id1 - and the mission pack folders function the same, so you could call them mod folders. Back in the day you'd have to use the -game argument in the command line when launching Quake to tell the game which one to use, however modern source ports allow you to switch this while the game is running using the... game command. For example, if you had a mod in a folder named "mymod", you would use the command game mymod to load it. As a result, the folder a mod comes in is often referred to as the "game folder" or "game directory". If a readme uses those terms it's most likely referring to the mod folder, not the Quake directory, so don't let it confuse you.​

Note to creators: game folders cannot have spaces in their names, so use underscores instead where necessary.
As we've established, id1 is the default folder that the game will use, not just for playing the main campaign but for loading all assets by default. Technically, you can name a mod's folder whatever you want and the engine will treat it identically, just change the game command accordingly.


Pak Files and Hierarchy​

At this point your id1 folder will have two files inside it, PAK0.pak and PAK1.pak. These contain all of the game's maps, models, sounds, textures, and the game code (separate from the engine code*). The pak files have their own internal folder structure, however creating these folders oustide of the pak file will allow the game to read it just the same. They have their own maps folders, with the vanilla maps inside, and additional ones such as "progs" containing models, and "sound" containing sounds. It is possible to create your own pak files for custom content, and they can contain anything from a single model replacement to a total conversion. Most engines require that they are named PAK#.pak (not case sensitive) with # being a number in sequence - the engine will not read PAK3.pak if you do not have a PAK2.pak.
Any mod can access files from the id1 directory, so you don't need to copy maps over to your Copper or AD folder if they're already in id1.
Because sometimes you will have files with the same name in different locations, it can be helpful to know which one takes priority. The engine will read pak files in order, with the last one it reads taking priority in the case of a conflict. Mod folders are read after id1. Originally, paks would take priority over loose files - as is the case in the rerelease - however some modern source ports do the opposite to allow for easy asset replacement.
*The engine code was released to the public after Quake's release under GPL 2.0 license, allowing for all the free sourceports we see today, but the code that governs all of the gameplay (progs) is still subject to copyright, along with the assets and the levels. PAK0.pak contains the shareware (free) content, including the first episode of the game, while PAK1.pak is what you would pay for when buying a full registered copy.


What about the rerelease?​

Singleplayer modding for the 2021 rerelease follows similar principles, but works slightly differently. Installing mods directly in the base Quake directory will not allow them to be loaded in the rerelease. There is the "rerelease" folder previously mentioned, which contains its own id1, hipnotic, rogue, and more, and does in fact fuction the same in the rerelease engine as the main directory would for any other Quake engine, however, there is another location that is officially recommended instead, and will prevent things from being overwritten by updates. Navigate to Users\[username]\Saved Games\Nightdive Studios\Quake and install any custom content in there. It will not show up in the in-game menus, so like with other source ports, you'll need to use the game command to run mods. The rerelease engine does not have perfect compatibility with all maps and mods, so it's not strongly recommended, but you can run custom content in pretty much the same way.


Running Custom Content

The information so far should be enough to install and run a lot of big mods, however there are lots of things you can do to make your life easier.


Read me first!​

Most releases should come with a plain text file. This will sometimes be named something like readme.txt, but may share a name with the zip or bsp. Either way, it's recommended that you locate and read this file, as it will contain information about installation, running, and play that can sometimes be important. You may not always need it, but it's still helpful to check.


Launchers and Shortcuts​

While you can get around just fine loading maps and mods from the console with the map and game commands, there are cases where it can cause issues, and it's generally easier to have a graphical program to set these things for us along with other parameters. My launcher of choice is Simple Quake Launcher 2, which requires you to individually install content, but allows you to easily set the mod, map, and difficulty, any other custom parameters, and even play demos. Quake Injector automatically downloads, installs and runs content directly from Quaddicted's expansive database, however it doesn't support every entry because Quake Injector needs to be told how to run them all, and it won't allow you to play anything that isn't on Quaddicted. You can use the same trick as in the setup section to make Steam point to your launcher.
Before launchers were so common, you could still save time by creating a custom shortcut for common mods. To do this, right click your source port's exe, select "create shortcut", then right click that exe and go to properties. From there, you can add custom instructions like -game to the "Target" field. Commands beginning with "-" will be parsed as command line parameters with which to start the engine, while anything with a "+" instead will be put in the console once the game starts. You can use the latter to set a map or skill.


Configuration Files​

All of the engine's settings are stored in a file called config.cfg located in the game folder. It can be opened in any text editor like notepad, but is saved every time you quit the game. This means that it's not ideal for editing, because the engine will overwrite it. Luckily we can create and execute our own custom configuration files. autoexec.cfg will be run automatically every time the game is launched, and is intended to be freely edited by players. You can put your custom binds and other settings in here, and they will be preserved even if the engine wouldn't normally save them to config.cfg. You can create a cfg file named whatever you want, and execute it at will with the exec command, which you can put in the console or in another cfg file. Like any other game file, you can create a separate autoexec.cfg in a mod's folder and the game will prioritise that over the one in id1.
quake.rc is a higher-level form of configuration file, and can be used by mods to include certain custom settings, binds and aliases (id1's quake.rc is found inside PAK0.pak). Among other things, it tells the engine to execute the other configuration files. As a general rule, config.cfg is for the engine, autoexec.cfg is for the player, and quake.rc is for the modder.
Note to creators: never include a config.cfg or autoexec.cfg in your releases, as this will overwrite the player's configuration. If your mod includes custom impulses that you want to bind, or other commands that you want to run, put them in quake.rc instead. Make sure that you put anything that the player might want to overwrite before the "exec autoexec.cfg", otherwise they won't be able to do so with their autoexec.


Running maps from a different mod​

Let's say you have two mods: one in a folder called "mod1" and the other in one called "mod2". mod1 does not have a progs.dat, it's just a map pack which is given its own folder, while mod2 is a gameplay mod which can be used to play vanilla maps. Normally there would be no way to play maps in mod1 using mod2's gameplay and/or assets, without moving the maps from mod1 into either id1 or mod2. In most modern engines, if you put game mod1 mod2* in the console you can do exactly that.
*Notably, QuakeSpasm (unlike its forks) and Darkplaces only support this format for hipnotic, rogue, and quoth. QuakeSpasm cannot do it at all for other dependencies, while Darkplaces will only do it in the format game mod2 mod1. Other engines vary in their support for the "game" console command itself.


Demos​

A demo is a recording of gameplay which is played back in-engine. Quake originally came with three demos, which would play when the game was launched. They're useful for sending gameplay recordings over the internet without uploading a video, especially for playtesting or speedrunning.
Putting record [demoname] [mapname], into the console will load mapname.bsp and begin recording a demo named demoname.dem, and then stop will stop recording. Demos can span multiple maps if you hit a level load trigger, but will stop if you die or load a new map in the console. Modern engines allow you to begin recording in the middle of a map. To do so, simply omit the mapname from the command.
To play back a demo, use the command playdemo [demoname]. Demos recorded in QuakeSpasm Spiked can only be played back using QuakeSpasm Spiked or FTE.


Installation Quick Reference

Below is a quick reference guide to show you exactly where to install different kinds of content. Most of this should be covered above, so read the rest of the article first to get a better understanding. If the location referenced doesn't exist in your quake directory, just create it yourself.
If in doubt, read the readme first! It'll probably tell you how to install. If not, the download page is also a good place to look.


Maps & Mods​

Vanilla maps go in id1\maps, and are loaded with the map command.
Mods go in their own folder in the Quake directory, and are loaded with the game command.
Maps made for specific mods go in mod\maps.
.lit and .ent files are part of the map and go alongside it.


Source Ports​

Source ports go in the root Quake directory, alongside id1. You can have a separate directory for each source port, which may help avoid conflicts if you intend to use multiple.


Music​

Music goes in mod\music.


Other Files​

progs.dat and csprogs.dat go in the mod folder.
Demos go in the mod folder, and are played with the playdemo command,
Configs and quake.rc go in the mod folder.
The following also support subdirectories:
Models go in mod\progs.
Skyboxes go in mod\gfx\env.
Sounds go in mod\sound.
External textures go in mod\textures.


Thanks to @Kebby for providing information about how pak files are loaded.
Thanks to @Joel B for the correction on running maps from a different mod.
 
Last edited: