Quake Engines & Source Ports: A Beginners Guide

What even is a source port anyway?

A source port is a port of the source code for the Quake engine (originally only available for DOS platforms) to other platforms. Often times, these new source code ports will upgrade the capabilities of the game engine, granting mod developers the chance to expand the original game's content and compatibility to what was originally intended.​
In more general terms, a Source Port is just what us people in these retro game communities call a new engine derived from the original.
Since the old engines no longer run on modern systems / weren't ported by the developers to consoles / etc, you'll need to have one of these bad boys to play Quake in all of it's glory on modern hardware.​

Right so I need a Source Port then, any recommendations?

Uh, yeah! Glad you asked. Below, we will go over the generally agreed upon best Source Ports to use when playing Quake, with a focus on compatibility with custom content, along with a short recommendation blurb to sum-up the overall perception of the source ports.


QuakeSpasm by Ozkan, Eric, Sander and Stevenauus.

QuakeSpasm is a multi-platform engine that aims to be an improved successor to the original Quake engine, focused on keeping the classic gameplay and graphics. It it is currently the most used source port within the wider community, and has many forks (engines that use QuakeSpasm as a base) that improve optimization, add new features, and generally have higher compatibility than this base version of QuakeSpasm.​

A Saint Nobody Has Heard Of (udob4.bsp) by Lunaran, showing the crisp and clean visuals of Quakespasm.Features include a large set of graphical refinements that can help hardware rendered Quake look as faithful as it can to the original, emulating many software-only rendering techniques that were sadly left out of the original hardware rendered Quake, and has many modern comforts including support for high-resolutions, ultra-wide resolutions, Xbox controllers and numerous bug-fixes done to the vanilla engine.

+ Current community standard, resulting in high compatibility with modern releases
+ High-quality emulation of software rendering features, resulting in a modern but faithful look and feel (Pictured)
+ Lowest system requirements
+ Supports lightmapped water
- Below average performance
- Framerates above 72 will break physics
- Infrequently updated
- Surpassed by its forks




While still the most popular port used within the community,
this port is not explicitly recommended only due to the
many forks (listed below) that simply improve it.

Quake Re-release / KexQuake by ID Software / Nightdive Studios

Released by ID Software in 2021, this updated Quake engine is included when purchasing Quake on Steam, as well as on consoles (PS5, Xbox Series, Switch). It is a faithful port of the engine using the original code to new platforms, wrapped up in a more presentable package with limits increased to support some modern map and mod projects.
While not using any of the code from QuakeSpasm, it offers a majority of it's features. Including hardware representation of originally software-only graphical features, enhanced dynamic lighting for muzzle flashes and maps that support it, and a suite of UI improvements to make using a controller less jank.​

KexQuake supports up to four players in easy-to-setup cooperative modes.
+ Modern mouse-controlled UI
+ Supports high framerates (>72 without breaking physics)
+ Features a new campaign created by Machine Games
+ Features ID-vetted community content with an easy-to-use in-game download system
+ Easy Multiplayer and Cooperative mode server creation, crossplay with console players
+ Optional high-quality refinements of all enemy and weapon models
+ Native controller support including auto-aim and a weapon wheel
~ A visually touched-up original campaign, with mixed results
- Paid software / Steam DRM
- Slightly inaccurate physics
- Can have poor performance on highly detailed levels
- Installing custom content is a pain
- Requires a GPU with Vulkan support
- Limited community mod/map support
- No CSQC support


While being a good port in it's own right, the community tends to favor
compatibility with QuakeSpasm derivatives over this official port when playing community
releases, as it has many game-breaking bugs when playing custom content and lacks
features that QuakeSpasm has improved over it's long development.



VkQuake by Novum

VkQuake is a QuakeSpasm fork that runs entirely using the Vulkan graphics API instead of OpenGL. It includes many new features derived from Quakespasm Spiked (listed below), aiming to be a soft upgrade for QuakeSpasm, supporting things such as custom particle effects, support for moddable huds, and decoupling physics from framerate.​

Building on the feature set of QuakeSpasm, this port is somewhat of a middle child of
Quakespasm's innacurate waterwarp effect alongside VkQuake's more accurate offering.
regular QuakeSpasm and QuakeSpasm Spiked, and has progressed to the point where it is seen as a straight upgrade to QS for players with a Vulkan-capable graphics card.
Popular among players, it is a well-rounded port that is regularly being updated by its author.

+ Based on QuakeSpasm, offering familiarity
+ Supports high framerates (>72)
+ Very good performance (comparable to Ironwail)
+ Mod selection UI
+ Emulates original game's underwater screen warp effect (Pictured)
+ "Software Emulation" mode uses a palletization filter for more authentic visuals
+ Supports CSQC huds and the Arcane Dimensions particle system
+ Supports lightmapped water
- Requires a GPU with Vulkan support


This port is recommended due to simply being Quakespasm
with clean, tasteful additions, high framerate support,
and improved performance on cards that support Vulkan.


Ironwail by Andrei Drexler

A relative newcomer to the scene, Ironwail is a fork of Quakespasm that overhauls the rendering API, with a focus on high performance instead of broad compatibility.​

Ironwail r_softemu in action (left) and disabled (right)
Capable of handling even the most ridiculously demanding maps at very high framerates, it is a great port for those with more recent (~2009 and onward) GPUs, or integrated graphics that have a hard time running modern graphically-intensive levels at an acceptable framerate. It gains a great deal of frames (anywhere from 50 to 500% more) over regular Quakespasm and its other less-performant forks.

+ Based on QuakeSpasm, offering familiarity
+ Supports high framerates (>72)
+ Very good performance (comparable to vkQuake)
+ Enhanced menu (mouse control, mod/level selection UI)
+ "Software Emulation" mode uses a palletization filter for more authentic visuals (Pictured)
+ Expanded options menu, featuring many console-only options in an easy-to-understand format
- Requires a relatively modern (~2009) GPU to run



As with VkQuake, this port is recommended due to being a
straight upgrade to QuakeSpasm for compatible hardware,
with the added benefit of an expanded options menu and
a classy software emulation mode.
Author's personal choice.


QuakeSpasm Spiked by Spike

QuakeSpasm Spiked is a popular fork of the QuakeSpasm engine that aims to improve the QuakeSpasm engine further, expanding limits and features even past the default QuakeSpasm, and as such has amazing compatibility for modern levels and several mods that utilize CSQC to extend Quake's modding capabilities.​

The portal to Tears of the False God by Bal, showing off the custom particle support of QSS.
Building on the feature set of QuakeSpasm, Spiked has introduced a lot of new features that have become standard across ports (Enhanced Particles, Extended Hud Modding Support) since it's inception.

+ Based on QuakeSpasm, offering familiarity
+ Supports high framerates (>72)
+ Supports CSQC huds and the Arcane Dimensions particle system (Pictured)
- No noticeable performance improvements over QuakeSpasm
- Features occasional game-breaking bugs that other QS forks don't
- Suppresses precache crashes, resulting in unforeseen crashes on other forks if used for map/mod testing.





Offering similar upsides to the other QuakeSpasm derivatives listed here,
it is worth noting that during regular gameplay there may be map breaking
b
ugs that do not exist on other forks of QuakeSpasm.
As such, this port is only explicitly recommended if you want the new particles
and do not have a VkQuake compatible GPU.


JoeQuake by Jozsef Szalontai

Popular within the speedrunning community over at SDA, JoeQuake has seen significant updates that help it stand on it's own as a port for the general Quake userbase.​

A player attacking a vore with a rocket launcher, showing off the new coloured explosive lighting effects in JoeQuake.

While not being a descendant of Quakespasm, JoeQuake still features all of the common modern limit-removing features of the other ports on this list, and stands on it's own as a port for modern releases and old classics alike.

+ Supports high framerates (>72)
+ Supports lightmapped water
+ Has new optional effects, such as coloured dynamic lighting and new viewmodel options (pictured)
+ Expanded options menu, featuring many console-only options in an easy-to-understand format
+ Enhanced menu (mouse control, mod/level/demo selection UI)
- No CSQC support
- Performance can be an issue in larger, more detailed community levels.





This port is highly recommended to players interested in speedrunning
in the SDA community.
However, it is still a sufficient choice for playing modern releases and is
constantly being updated to fix bugs and improve compatibility.


Other ports
Ports that have significantly different goals to typical community engines, featuring new and interesting ways to play Quake, while not having a focus on broad compatibility with modern releases.​
[QuakeVR] by Vittorio Romeo
A version of Quake with upgraded locomotion and QOL improvements for playing Quake maps in VR. Features a large amount of VR-standard locomotion methods, dual wielding, a grappling hook, positional damage and full room scale. Certainly worth checking out if you have a VR headset.
[Super8] by Qbism
With the goal of bringing 8-bit Software Rendering into the modern era, Super8 allows you to play Quake in a faux-nostalgic gritty software palette while keeping support for modern large-scale maps and hundreds of monsters. Requires a beefy CPU to run properly, and has some mouse input issues, but can run the majority of modern Quake mods with ease.
[RetroQuad] by Mankrip
Self-described by the author as "The most advanced realtime 8-bit color software renderer on Earth." Utilizing many features of modern source ports, RetroQuad is notable mostly for an oddity, being unable to play many modern releases in it's current state. The author goes into more detail as to their methods on pages linked through their [Patreon], which you can also use to aquire the engine- as the latest releases are not free.
[FTE] by Spike
A featurelist powerhouse, FTE is the pet project of QSS creator Spike, and is somewhat of an anomaly within the community. Featuring support for everything under the sun, the port does everything in one way or another, but not anything particularly well. As well as Quake, the port runs Quake2, Quake3, Hexen2 and various FTE-exclusive games. Other than it's broad feature set, the port is also the choice of many indie game developers, featuring a powerful scripting engine that allows you to break the limits of what any given Quake engine on this list can do. Worth a look-see just to marvel at all of the features.
[Darkplaces] by Ladyhavoc
The undisputed king of the HD texture pack, and the choice of many developers who look to build their own game on top of the Quake engine (Wrath: Aeon of Ruin, Doombringer, Xonotic). While the engine has fallen out of favor of the community, many still use it to play the exclusive Quake 1.5 mod, and to utilize HD textures and effects that are otherwise impossible without the engine. Not reccomended, but hey, I'm not stopping you.
Historical Ports
Ports that have fallen out of compatibility with contemporary custom content, or have simply been surpassed by a port and no longer receive updates.​

[MarkV] by Baker​
Once a side-by-side compliment to Quakespasm, this port has been deprecated and is no longer updated.
Poor mouse input, no OGG music compatibility and limited custom content support make this a tough one to recommend over it's peers.​

[FitzQuake] by John Fitzgibbons​
The pioneer of many groundbreaking and current standard features, FQ has been succeeded directly by the QuakeSpasm engine family.​
 
Last edited:
I am considering changing the 'current community standard' tag from Quakespasm to Ironwail. It's been a while since I've seen a large portion of people using QS, and it'd be good to keep this info relevant. I'll do a bit of surveying.
 
IMO Ironwail is the standard, with the caveat that I would keep Quakespasm immediately behind it for 2 reasons (both technical):
  1. Ironwail has not brought in several limit cap increases, the instruction one being the most prominent (aka if you try to thunderbolt 300 fish in water, like in Comfy's heel map). I've also run into the occasional framerate physics issue (Enyo's movement item will not function correctly if you run vsync on and don't cap your framerate to 72). This only happened in Ironwail. QS, vkQuake, and FTE were fine.
  2. Quakespasm easily runs on literally anything, including linux and video cards going back to 2009 (I have a machine I occasionally Quake on with a card that goes back to 2009 and I've poked at it with linux as well).
If I have any issues in Ironwail I immediately go to Quakespasm. IMO It's still the standard I measure by if you're not using special features from FTE, Ironwail just wins out due to it's added QOL features, auto-saves being an enormous one if you're like me and your Quake skills are mid 😅.

I'd bump FTE up since it's something people might run into for certain mods (Slayer's Testament comes with it). I believe vkQuake and FTE share some particle effect enhancements (like Arcane Dimensions weather stuff). FTE is also a "pretty" option that runs well under Linux, even with a 2009 potato card (though I ran into sound issues).

I'm not sure, but my impression (now I know he does both ports) is that Spiked might work on FTE over QSS now. I never test with or use QSS except in very rare occasions. I've run into some technical weirdness with it as well, though I could just be an outlier.

IMO my list would be:
  1. Ironwail
  2. Quakespasm
  3. FTE
  4. Kex (easy multiplayer including bots, the new campaign which was obviously designed to show off the lighting effects, and the additional survival map though they actually work in Ironwail as well if you copy the campaign over including in multiplayer)
  5. JoeQuake (I'd make a DSDA or Crispy Doom analogy, and specifically call out why it's a speedrunner engine. I really like it's underwater effects)
  6. vkQuake (I feel bad putting vkQuake at the bottom but it's no longer maintained. I still test with it however and things like AD use it's extra features)
As an aside, I kinda wish Quake had the equivalent of the MBF21 standard from Doom land for, "new features," across ports. Specifically to bring in skeletal animations, bumping model limits, and in general the ability to bring in other model formats to make creating new enemies not require doing vertex animation (even if that's getting us dangerously close to Skibidi-Quake). Tinkering with models is one thing I still use Darkplaces for since it has way higher limits.

Comedy dosbox and glquake entry might be interesting. I've done all of the original campaign and most of the expansions on nightmare in dosbox recently just for funsies.
  • You don't want to run above 848x480 or the software renderer gets horrible screen tearing
  • +mlook is the mouselook command which I've never been able to automate applying correctly in dos
  • Higher fovs will stop rendering your weapon in dos
  • Physics breaking down above 72 fps
  • The thing with glQuake full brights might be worth mentioning
  • And obviously that modern releases won't run in either of them.
I have no idea what people who deathmatch use since I only deathmatch with bots in Quake (Qrack?).
 
Last edited:
  • Like
Reactions: Mopey bloke
  • +mlook is the mouselook command which I've never been able to automate applying correctly in dos
  • The thing with glQuake full brights might be worth mentioning
+mlook you just put into autoexec.cfg like people did way back in 1996, it was always like the first line
besides fullbright pixels, glQuake also renders lightmap wrong (it has no overbright lighting)
a good alternative to dosboxing Quake can be WinQuake (with "fan restoration patch") or ChadQuake (based on Mark V)
 
+mlook you just put into autoexec.cfg like people did way back in 1996, it was always like the first line
besides fullbright pixels, glQuake also renders lightmap wrong (it has no overbright lighting)
a good alternative to dosboxing Quake can be WinQuake (with "fan restoration patch") or ChadQuake (based on Mark V)
I vaguely knew that but apparently I had fixed it in everything I've done in dosbox EXCEPT what I was poking at when I wrote this.

Hilariously I did czg07 in dosbox-x after writing this, which is a much better experience than vanilla dosbox if you're using a windows 95 compatible config. Almost as good as a source port.
 
Is there a trick to getting FTEQW running smoothly on an nvidia RTX 3xxx series video card? Compared to Ironwail, vkQuake or even the alpha Zircon, it feels choppy, especially when turning, as if vsync isn't enabled and there's tearing (but I tested all the vsync options and no joy). My FPS counter says it's a constant 120 FPS but that lack of smoothness compared to Ironwail or vkQuake makes it unpleasant to play. Was going to use it to play Nehahra.
 
How can there be tearing with vsync enabled?
It's not tearing but whatever it is it's just as annoying. The engine runs fast enough but there's just an ugly sluggisness about the movement - especially when turning - compared to Ironwail or vkQuake. Maybe it's not a fair comparison considering how fast these 2 source ports are, and that could be the problem - I'm so used to literally perfect smoothness with IW and VK anything else is negative transfer. I play at 4k/120 Hz.

Edited to add: I just tested the even older Mark V source port and even that runs smoother at 72 hz/72 fps than FTE at 120 Hz/120 fps. Must be a setting in options (and there are a bewildering number of them in FTE) that's causing this micro-choppiness, or possibly a driver/cfg issue with my rig.
 
Last edited:
Indeed. I think FTE has a discord server. Perhaps you can talk to them about it. I haven't run FTE in years, but I don't remember it lacking for smoothness.
 
Indeed. I think FTE has a discord server. Perhaps you can talk to them about it. I haven't run FTE in years, but I don't remember it lacking for smoothness.
I posted on their github's "issues" but yes; Discord will probably be faster in troubleshooting. I basically just wanted a fairly updated source port for Nehahra and thought this would be best, but I'm beginning to think FTE is a highly experimental source port with all those features and it might be at the expense of optimization, hence the perceived lack of smoothness. I decided to try Mark V and found it's still quite robust in doing exactly what I needed it to do. It feels quite smooth for 72 FPS (trying to avoid high framerate physics bugs), though obviously not nearly as smooth as iw and vk, but even at only 72 hz it feels better than FTE (which I ran at 120 hz (120 fps).
 
I don't know if that's a good idea because Nehahra I think doesn't run correctly on most engines. I think Marv V is the most recommended, but you should probably ask around. The Mark V homepage has a link to a Nehahra patch dll, and you load the mod with:

game nehahra -nehahara

And it should work well.
 
Mark V is old and has issues, like your mouse spontaneously going into auto-click, auto-firing mode if your polling rate is 1000 hz, but it's the only source port that works half-way decently with Nehahra for me. Would have loved to have used FTEQW but it plays like ass on my system, even at 120 FPS/hz. A developer on github yesterday told me it might be because it doesn't play nice with the power implementation of nvida RTX cards. I have an RTX 3070.