Hosting and domain costs until October 2024 have been generously sponsored by dumptruck_ds. Thank you!

Getting Started Modding

From Quake Wiki

This is intended as a basic, nonspecific engine guide to getting the resources needed to start making a quake mod, some suggestions on first mods to make to learn the language and nature of Quake modding, and links to discords, forums, websites, older IRC channels, and other resources relevant to Quake modding.

Making your mod directory[edit]

The first step is to make a directory inside your quake directory, for instance, mymod (you can rename it later), all files inside this directory will be loaded at a higher priority than the ones in the id1 directory, but files you did not replace will come from the id1 directory. In this wiki it's common for people to refer to your mod directory as mymod, do not take this literally, it simply means whatever you named your mod directory, and most filenames mentioned in Quake modding discussion are inside a mod directory.

Then make a /quake/mymod/src directory to hold the QuakeC code you will be working on, you can name this directory whatever you want.

QuakeC sources[edit]

Now choose a quakec code base to work from. A good recommendation is shpuld's cleaned up vanilla qc based on Quake's v1.01 QuakeC with fixes from 1.06, but also fixes the monster fish bugs. It is properly licensed under the GPL. The same goes for Jason's qc, but you can read up on everything on their respective GitHub. Choose your poison:

QuakeC Compilers[edit]

There are only a few modern compilers and a bunch of older ones. FTEQCC & GMQCC are the most modern up-to-date compilers currently still being maintained, but FTEQCC seems the go-to for a lot of modders. The current Linux & windows precompiled FTE compilers can be found on the FTE download page.

For Windows, there is also a version with a basic built-in GUI IDE for coding named fteqccgui64 and a version for older win32 windows versions fteqccgui

GMQCC requires the user to compile it from src and that is beyond this wiki page, but their website has build instructions.

The much older FrikQCC can be used, but it is no longer recommended.

An important note on pak archives in the various Quake engines:
Quake behavior: paks override files (meaning if the pak contains a default.cfg, the user can not make their own default.cfg as it will be ignored), sequentially numbered packs named pak0.pak, then pak1.pak, and so on (if there is a gap it stops looking for higher-numbered paks, so pak2.pak will not be loaded if pak1.pak or pak0.pak is missing), a limit of 7 open pak archives (this counts both id1 and your mod, so be careful not to have too many pak archives).

DarkPlaces/FTE behavior: files override pk3 archives which override pak archives, anything with a .pak or .pk3 extension is loaded (.pk3 is a renamed zip archive and is smaller because it is compressed), with no limit on the number of paks. Most other engines use the Quake behavior.

Recommended external links[edit]

Web sites:
InsideQC
Quake One

Discords:
Quake Mapping

IRC channels:old & not super active
irc://irc.anynet.org/qc (modding)
irc://irc.anynet.org/darkplaces (modding, darkplaces engine)
irc://irc.quakenet.org/terrafusion (level design)

For a quick crash course in QuakeC modding, try modifying a weapon to fire something different, or at least change the damage values, the relevant code can be found in weapons.qc, for instance, T_MissileTouch is the function called when a rocket hits something, spike_touch and superspike_touch are the functions called with nails or super nails hit things, launch_spike is the function that creates a nail... W_Attack contains refire times and calls the weapon fire functions, explore and have fun.

Basic tips about weapon code:
.touch is the function called when a projectile hits something (in this function self and other refer to the projectile and the hit entity, respectively), T_Damage and T_RadiusDamage are functions to call to do damage to other entities, sound plays a sound effect, the WriteByte and related function calls create network messages describing an explosion or other effect message that the client understands.

Good luck, and have fun :)


A footnote about "borrowing" content from other games: Yes the big mods like Arcane Dimension and Alkaline do it, but please don't, it's better to see some originality in the art in Quake mods. It can be possible to be sued for copyright infringement if you do this, as the owner of the copyright controls the distribution terms, and games typically don't have License Agreements that allow this. If you must borrow content, it is best to borrow it from legitimate sources such as LibreQuake, Xonotic, or OpenQuartz which use the GPL license which allows redistribution and modification under the terms of the GPL.
You may also ask other mod teams if you can get a license agreement for use of some of their files that are not under GPL, chances are good that they will say yes (remember however that yes is not enough, you need to include a license agreement regarding their copyrighted works).