Quake 2 Modding

I am working on a Quake 2 mod.

This mod will be slightly different from Quake 2 mods of the past; previously, all you had access to was the source for gamex86.dll, but since Id open sourced the entire engine (including the rendering libraries), you can do things original Quake 2 mods couldn't (or at least, had to work VERY hard to do).

I've downloaded and printed off a lot of documentation for the Quake 2 engine, including documentation from pre- and post-open sourcing. My preference is to download and print things off and keep offline copies of them because I have problems with my internet connection at home, so I like to keep local copies handy

I have already developed quite a few features. The game I'm imagining is a 3rd person near-fixed camera type game. Something casual that someone with no time for games can play for a few minutes at a time. Kind of like Harvest Moon or Animal crossing.

The biggest hurdles I've encountered so far are all dealing with Quake's ancient asset formats, like .pcx and .md2. I've been able to essentially invalidate the need for .pcx files by modifying the refgl.dll code and basically discounting the software renderer entirely. Additionally, it took me a couple weeks to figure out how to export UV Mapped meshes to md2 successfully (hint: a mix of old and new tools).

Since Quake 2 is GPLv2, I'll be releasing the game in GPLv2, for a price. I'm partial to GOG, personally, but I'll release on steam as well. The source will probably be on github, but I'm exploring alternative methods of distributing source code (perhaps as DLC so that you're required to purchase the game to access the source. This also satisfies GPL's “same channel” requirement). The assets will be copyrighted to legally avoid having unscrupulous actors try to re-release my game for their own profit. I'm not going to do anything to prevent piracy because that's impossible. I'm trying to figure out whether or not game scripts and configurations count as derivative works and if they have to be GPL'd.


I chose Quake 2 because I'm a fan of old technology. Quake 2 is a very basic engine, and coded quite simply. I've read and re-read Masters of Doom by David Kushner. It's a really inspirational book to me because both Romero and Carmack achieved the success they did having taught themselves everything and not via traditional education institutions. Romero founded Ion Storm which produced one of my favorite games, Anachronox. The association of Ion Storm to Quake 2 is largely why I chose it. However, I later found out that coding for Quake 2 and modifying the engine is a lot simpler than for Quake 1 or Quake 3, as both have a VM for “Quake-C” (or something like that), so the code you write doesn't get directly linked directly via the DLL.

Overall, I'd say that I like working with old technology because it's a weird sort of LARP. Actually, I had initially began working on this using Visual C++ 6.0 which was a pain in the ass, but I eventually got the project files ported up to VS2017 and I'm pretty happy with this.

However, it's not just fake nostalgia (fake because I never actually played any Quake 2 engine games when they first came out; I was between 2 and 4 at the time); I personally believe that you don't need to use the newest or most beautiful tools available to make a good game. There's definitely something to be said for maintainability, but so far the Quake 2 code (though written in ANSI C) is very portable, very scalable, and very easy to understand, so I'd put a check mark next to “maintainability”. I'm currently working on bringing some of the assets into more modern formats as well, such as bone animations for models and not just static MD2 frames.

I think it was Satoru Iwata said that consumers are less interested in bleeding-edge technology as they are in good design. This thinking seems to have influenced the Wii: though it had the motion controls, the hardware in the Wii was relatively underpowered compared to the Xbox and PS3, only outputting analog Composite and not HDMI. Despite the technical shortcomings, the Wii sold nearly 20 million more units than the Xbox. Likewise, Gunpei Yokoi, the creator of the Gameboy, chose an older model processor (based partly on the Intel 8080 and the Zilog Z80) for the Gameboy, and described this philosophy as “lateral thinking with withered technology”. This is the philosophy I like to subscribe to, as well.