Quake
46 ratings
[2021 Re-Release] Make your own mod
By JPiolho
Where do you begin to make your own mods for Quake?
3
   
Award
Favorite
Favorited
Unfavorite
Introduction
This guide is aimed at people that don't know where to begin about modding Quake or existing modders that might want to mod specifically for Quake Enhanced. It will not tell you exactly how to mod things, but will point you in the right direction.

One thing you need to realize as well, is that there are a lot of different source ports of Quake out there, each have their own modding capabilities and abilities. However in this guide, we're going to focus specifically on the official Quake Enhanced.
Mod types
Quake in general is very moddable. So there's different things you can mod in Quake (from easiest to hardest):
  • Modify map spawns
  • Add / modify bot navigation
  • Modify existing map entities (ammo, weapons, monsters, spawns, doors, ...)
  • Custom sounds / models
  • Custom maps
  • Custom gameplay

Server-side vs Client-side
The way Quake works, you can actually have 2 types of mods: Server-side and Client-side.

A client-side mod is the usual mod that you're used to. You download something, you install it, and then you can play it. If other people want to play with you they also need to download this mod and install it themselves. This usually applies to big mods with maps.

A server-side mod however, only the game host (lobby creator) needs to have it installed and all the players that connect to it will be able to enjoy it. This is more restrictive since you cannot use custom assets like custom models, maps or sounds. On the other hand, all players can join your server even when playing with crossplay.

Understanding file overriding
Quake modding is all based around modifying files in some way or another.

Inside your Quake folder, each folder is a 'game' (or a mod). By default you'll find 5 folders, and these correspond directly to each episode:

  • id1: Quake
  • hipnotic: Scourge of Armagon
  • rogue: Dissolution of Eternity
  • dopa: Dimension of the Past
  • mg1: Dimension of the Machine


However, one of these folders is special. This is the case with id1.

Overriding
Whenever Quake launches, it goes into id1. This is the default Quake gamemode.

However, one special thing about id1 is that all other mods will include the files from this folder as well. So for example, hipnotic, rogue, dopa, etc.. they all include the files from here automatically.

You can test this easily by creating another folder. Call it.. 'mymod' for example. Launch the game and then type
game mymod
and you'll see that the game continues just fine and plays like Quake. This is because it automatically included all files from id1, and you didn't make any changes.

This is where overriding comes in. By placing your own file with the same name, it will override whatever file is contained inside id1. So if you want to just mod a single sound, just place your own sound file with the exact same name in your mod folder and voilá.

Pak files
Another thing you might realize is when you open the folders, you'll see a .pak file and nothing else. What gives?!

Pak files are similar in concept to a zip file, in which they contain a bunch of other files inside. This is where most of the files for a mod are contained.

However, they are not required

You can just place plain files in the mod folders and it will work just fine. As long as you mirror the same folder structure inside the pak file.

You've probably experienced this before. When you download a custom map, you place it inside the folder "maps". Well, the official maps are also inside a folder called "maps", it's just that they're contained inside the pak file.

'Saved games' folder
This is a special folder for Quake Enhanced. It is located in
%userprofile%\saved games\Nightdive Studios\Quake\
Here you will find save files, config and some logs for Quake. You will also find the q64 folder, if you've downloaded Quake 64 from the addons list.

Folders here will act the exact same way as mod folders in the /rerelease. If you were to move the 'mg1' folder to here, you'd be able to play the new machine games episode just fine as well.

So this is the folder where downloaded addons are placed. But wait, theres more!

What happens if you place a folder called 'id1' here? Well, something special happens!

Whenever you type 'game' in the console in the game, you can see the full path that it's using for the mod. When you open the game and type 'game', you'll see the full path for id1 in your /rerelease folder. However, if you now change to q64 (via 'game q64') and then change back to id1 (via 'game id1'), you'll notice that now suddenly the path is for id1 in Saved Games.

You can exploit this to override 'id1' files while not changing the original game. This is useful for server-side mods in multiplayer. The only drawback is that for the override to work, it needs to be placed inside a .pak file.
Modding map spawns
Difficulty: Very Easy
Server-side only: Yes

Quake Enhanced comes with a built-in spawn editor which lets you change the spawns around the map for players.

  • Open the game and start the map you wish to modify spawns for
  • Enable cheats by typing in the console:
    sv_cheats 1
  • Enable spawn editor by typing in the console:
    spawn_edit 1
  • Now you are in the spawn editor mode. It should be easy to understand how to work with it.
  • To save your spawns type in the console:
    spawn_save

After you save, a file will be generated at the following path: 'Quake/rerelease/id1/spawns/<mapname>.spawn'. This is the file that contains the saved information.
Whenever the game loads a map, it tries to look this file up and replace the existing spawns with the ones from this file.


Modding bot navigation
Difficulty: Easy
Server-side only: Yes

Just like the map spawns, the game comes with a built-in editor to edit bot navigation. If a map is to be compatible with bots, it needs to have bot navigation done. Alternatively, if you wish to change existing navigation you also use the same editor to do so!

I've made a whole separate guide on it, even though it is easy, it can get quite complex and in depth depending on what you want to do.

https://steamcommunity.com/sharedfiles/filedetails/?id=2580864534
Modding map entities
Difficulty: Medium
Server-side only: Yes

Another type of modding you can do is modify the entities in existing maps. This lets you change a lot of about the map: Where ammo and weapons are located, how doors operate, where teleports lead a player to, monsters, and so on...

For this kind of modding, you'll need to use some kind of tool.



If you decide to use QEBSPEditor: First extract the map file (.bsp) from the pak file, and then Load it in QEBSPEditor.

Regardless of the tool you're using, in the end you'll get some definitions for entities.

Each entity looks like this:
{ "classname" "<entity classname>" "origin" "<entity origin>" "key1" "value1" "key..." "value..." }

The classname identifies what kind of entity it is (eg: item_shells, weapon_rocketlauncher). The origin is the coordinates where it should be placed in the map. You can find your in-game coordinates by typing in the console:
where

After you're done modifying the map entities, go ahead and save the file.

The map is now modified. To test in-game either start the map as you would normally or just type in the console:
map mapname

Modding custom sounds / models
Difficulty: -
Server-side only: No

If you've never done modelling or sound editing, then this is probably very hard and not something that's explained in this guide.

Models
Quake uses the MDL (MD1/Alias) format, however Quake Enhanced also supports MD5 models.
Existing models are located inside the pak file under the directory "progs".

Quake can also use maps as a model! This is the case for ammo and health packs, which are actually a .bsp file instead of a .mdl file.

Blender Quake model addon[github.com]
Blender MD5 addon[github.com]

QuakeWiki on modelling[quakewiki.org]

Sounds
Quake uses .wav format for sound. These are usually located inside the pak file under the directory "sound".

Sounds can contain a "cue point" which is used for looping part of the sound, most notably doors and lifts.

QuakeWiki on making sounds[quakewiki.org]
Modding custom Maps
Difficulty: Hard
Server-side only: No

Mapping is an art by itself, but it's something that everyone can try. There has been a bunch of different programs over the years that are used for mapping, but the latest new one that is pretty much used by everyone is called Trenchboom[trenchbroom.github.io]. This editor was also used to make the new episode released in Quake Enhanced.

There's a very good tutorial series by dumptruck_ds on Quake mapping.

Modding custom gameplay
Difficulty: Hard
Server-side only: Yes

If there's something that you can't do with just mapping, then it requires changing the gameplay. This is something that requires programming knowledge.

Quake is a mix between engine and game code. The Quake engine[github.com] is written in C, although in Quake Enhanced it was upgraded to C++ in some parts. (Quake Enhanced engine code is not public)

However, gameplay code is written in QuakeC[en.wikipedia.org]. This is a special language made specifically for Quake 1.

The game code is contained inside "progs.dat" file.

Here's a big list of QuakeC tutorials[quakewiki.org]

Here's a list of things you'll need:

QuakeC base code
This is the base source code of the game code. It's different from the engine. The game code contains all the game logic, like monsters, weapons and so on.

id Software released the QC source code that they've used here: https://github.com/id-Software/quake-rerelease-qc

However before this was released, a modified Quake 1.06 codebase was made. This was used by many of the mods before Update #3. You can find it here: https://github.com/jpiolho/QuakeEnhancedQC

Compiler
Next up, you're going to need something to compile the code. The best tool for the job is FTEQCC[sourceforge.net] (Download the gui version). It expanded QuakeC into containing lots of features that are present in higher level languages.

One thing you have to realize is that some features are not available in Quake Enhanced, as this compiler serves to work with all other source ports which add a lot of features.

Putting the two together
If you create a mod folder in your quake/rerelease folder, then create a folder called quakec (or source) and place both the compiler and quakec source code here. You can start compiling the code easily and the resulting compiled file will be placed in your mod folder called "progs.dat".

In Quake Enhanced, you can just reload the map to see your changes being applied immediately.
More
Last, I'd like to recommend the Quake Mapping discord server [discord.com]. It's full of helpful people that do mods, maps, etc.. so you can go in there and ask questions if you have anything or just lurk around and see what other people are working on.
4 Comments
󠀡󠀡󠀡⁧⁧1x5x7 Feb 4, 2022 @ 8:40am 
Great guide :mgh_17:
EclipseGST Dec 17, 2021 @ 11:08pm 
netRadiant is also a good mapping tool and has the same basic controls as Radiant for making Zombies maps for COD, as well as a separate 2D and 3D viewer that lets you view your changes in 3D from a nice angle while being able to zoom in in 2D for precise work. And it works for basically every open source engine idTech 1-4 game in existence.
alakoth Dec 3, 2021 @ 7:57pm 
great guide mate!
Harlequin Nov 5, 2021 @ 12:52pm 
Well done !:steamthumbsup: