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:
Might be worth mentioning JoeQuake does not offer Linux binaries.

Also I agree with heliumlamb that "Quake Is For Everyone" and not just people with a new video card. Let me tell you a horror story:

1. You wake up one day and your graphic card driver subtracts a version from your Open GL support:

"Older Intel Graphics To Drop From OpenGL 2.1 To 1.4 On Linux"

Oh well at least you can still play Quake.

2. Then it seems like only the next day map jams for Quake (a 30 year old game) are requiring the newest / highest OpenGL version.

It could happen to you! 😱

I am being hyperbolic but it also would be helpful to mention (in the article) the best Quake engines for hardware limited to OpenGL 1.4 and 2.1. This way everyone can come to the deathmatch.

It would also be nice if there was a modern engine that supported the newest OpenGL that could gracefully degrade to lower OpenGL support levels on systems that with less powerful graphics cards. If there are unsupported graphics extensions or similar then just do nothing / spam the console instead of crashing and saying "unsupported!"
 

Attachments

  • quake_is_for_everyone_german_.jpg
    quake_is_for_everyone_german_.jpg
    188.9 KB · Views: 102
Might be worth mentioning JoeQuake does not offer Linux binaries.

Also I agree with heliumlamb that "Quake Is For Everyone" and not just people with a new video card. Let me tell you a horror story:

1. You wake up one day and your graphic card driver subtracts a version from your Open GL support:

"Older Intel Graphics To Drop From OpenGL 2.1 To 1.4 On Linux"

Oh well at least you can still play Quake.

2. Then it seems like only the next day map jams for Quake (a 30 year old game) are requiring the newest / highest OpenGL version.

It could happen to you! 😱

I am being hyperbolic but it also would be helpful to mention (in the article) the best Quake engines for hardware limited to OpenGL 1.4 and 2.1. This way everyone can come to the deathmatch.

It would also be nice if there was a modern engine that supported the newest OpenGL that could gracefully degrade to lower OpenGL support levels on systems that with less powerful graphics cards. If there are unsupported graphics extensions or similar then just do nothing / spam the console instead of crashing and saying "unsupported!"
To play JoeQuake on Linux I'm building it from this repo: https://github.com/matthewearl/JoeQuake-1
 
Yep me too!

(You do still need the "joequake" mod folder that comes with the download of the prebuilt Windows version.)
 
Yep me too!

(You do still need the "joequake" mod folder that comes with the download of the prebuilt Windows version.)
Yes, it is required, also I'm starting it like so (without -mem 512 game is not starting for me, gamescope/gamemoderun for performance, for multi games i"m not using FullHD but 800x600):

Bash:
#!/usr/bin/env -S bash -Eeuo pipefail
cd "$(dirname -- "$(readlink -f -- "$0")")"

# Press Shift+F12 ingame to show MangoHud
#export MANGOHUD_CONFIG="gpu_name,no_display"
# Use ATI Radeon RX 6500M in my laptop instead of integrated ATI Radeon 680M
export DRI_PRIME="1" MESA_VK_DEVICE_SELECT="1002:743f"

gamescope \
    --adaptive-sync \
    -r 144 \
    -f \
    --hide-cursor-delay 0 \
    --force-grab-cursor \
    -W 1920 -H 1080 \
    -- gamemoderun ./joequake-gl \
        -mem 512 \
        +set s_khz 44 \
        +exec joequake_autoexec.cfg \
        +playdemo demos/nh/all_5716.dz "$@"
 
Last edited:
I want to mention qrustyquake, a software renderer only port that is actively maintained, with some unique features.
Yesterday, I played Arcane Dimension iconic map "Grendel's blade" at 640x480 and it felt awesome (looks great and crunchy at 320x240 too!), like a trip back in pre-GLquake times, if you could have played modern maps then (although probably just at 320x240) and been blown away. It seems it can play most modern maps.
Software rendering is obviously not for everybody nor every situation, but it can bring back memories in unique ways. Some GPU hardware accelerated ports can do a good job at emulating software rendering these days, but it is not exactly like the real thing.
 
Last edited:
I want to mention qrustyquake, a software renderer only port that is actively maintained, with some unique features.

Yeah QQ is neat and fun! I got into it when I was in need of a Winquake-network-protocol engine for a project I got nerdsniped into (and running Winquake itself under Wine was giving me some grief). It's really staked out an interesting spot of bending over backward to keep that software-rendered visual while improving everything else. Next time there is some retro/vanilla map release I'll fire it up again.
 
Why is Kinn's The Marcher Fortress special enough to be mentioned in testing for engines?

From README_Marcher.txt:

This map was designed primarily for high capacity engines [...]
However, I have gone to great lengths to ensure that the map is at least playable in FitzQuake, and the original Win/GlQuake,
although packet overflow and sound loss may be abundant in the larger battles, and many ambient sounds throughout the level may not appear.
Other engines are not considered "supported", i.e. I cannot guarantee that the map will appear or function correctly in engines other than those mentioned.

To make things easy, with his permission, I have included Bengt Jardrup's latest Win/GLQuake variants inside the zip file.

Also if you download the map you need to rename Pak0.pak to pak0.pak (make it all lowercase) on Linux to prevent "Couldn't spawn server maps/marcher.bsp"
 
What about Quakespasm Spiked Multiplayer?

This list is focused on single player. For SP, you're better off picking one of these ports.

I noticed Quakespasm-Spiked Multiplayer has backported an extensive list of Ironwail's features:


In particular:

Rendering, Debugging, and Compatibility
  • Higher alias model frame/mesh limits for large mods
  • Corrected viewmodel interpolation for >10Hz animations
  • Fixed upright sprite rendering with Dutch-angle cameras
  • Signon buffer fragmentation and server buffer crash fixes for large maps
  • Larger single-player datagram buffer for complex maps
  • Particle trail emission-rate limiting
  • Particle trail state tracking for cleaner demo playback and rewinds
  • External HUD/menu texture clamp and padding fixes to reduce edge bleeding
  • Dynamic multi-segment hunk allocator so large maps load without needing -heapsize
  • Hunk_AllocNoFill skips zero-fill on hot allocation paths
  • Out-of-memory and size-overflow guards on previously unchecked malloc sites
This could make QSS-M a viable option for enjoying modern limit-busting Quake single-player content on machines that can not support OpenGL 4.3.

-----

EDIT: I no longer recommend Quakespasm-Spiked Multiplayer as it is LLM-generated code, which is incompatible with Quake's open source license.
 
Last edited:
  • Like
Reactions: Blake
Perhaps quakespasm-shalrathy is worth an inclusion in the other ports list? It's claim to fame is that you can easily check for secrets, monsters, shootables, buttons etc. As a source port proper, it was a while ago it was updated, so not recommended for normal playing.

 
Perhaps quakespasm-shalrathy is worth an inclusion in the other ports list? It's claim to fame is that you can easily check for secrets, monsters, shootables, buttons etc. As a source port proper, it was a while ago it was updated, so not recommended for normal playing.
Ironwail has this with r_showbboxes_filter. It doesn't have lines pointing to them but I don't think it's different enough to be worth booting up a separate engine.
 
Ironwail has this with r_showbboxes_filter. It doesn't have lines pointing to them but I don't think it's different enough to be worth booting up a separate engine.

Hm, I didn't know that - I'll try it out.

EDIT: I honestly don't understand how it works, so I'll stick with shalrathy, which I at least understand.
 
Last edited:
I honestly don't understand how it works



1. You soon will.

2. Quakespasm-Spiked-Multiplayer also supports r_showbboxes filter.

3. r_showbboxes_filter does nothing unless you also enabled r_showbboxes 1. once you do, re_showbboxesfilter can filter the bounding boxes by classname. Since secrets in quake have classname "trigger_secret" you can enter (after first entering r_showbboxes 1) "r_showbboxes_filter trigger_secret" and only the secret bounding boxes will be drawn.

here is a video showing its use.

 
Last edited:
  • Like
Reactions: arkngt
1. You soon will.

2. Quakespasm-Spiked-Multiplayer also supports r_showbboxes filter.

3. r_showbboxes_filter does nothing unless you also enabled r_showbboxes 1. once you do, re_showbboxesfilter can filter the bounding boxes by classname. Since secrets in quake have classname "trigger_secret" you can enter (after first entering r_showbboxes 1) "r_showbboxes_filter trigger_secret" and only the secret bounding boxes will be drawn.

here is a video showing its use.


Much appreciated. Thanks!
 
Considering what happened to vkQuake's developer on another thread (he seems to have left on his own terms) about his use of GenAI, will this thread be updated with such info?

I just wanted to say that I didn't intend for any of this to happen. I just shared my view on the GenAI tool taking code from everywhere. I didn't expect vkQuake's developer to be mad about it (maybe because I said it was immoral?). And I also didn't want to seem ungrateful towards him.

Still, I feel the need to apologize.

I respect people for their work, and I know that he contributed a lot to our community. I did use vkQuake a lot before knowing that he used GenAI to develop it (I'm back to using Ironwail now). I just questioned the way in which he was doing that. :(
 
like I said in that thread, using genAI makes projects GPL noncompliant, and makes it impossible to operate honestly or honorably within this hobby space. they are free to do what they want, but they are not free from the consequences, nor should they be shielded from valid criticism. you were doing the right thing, and you can't control how they will react to pushback.

but yeah the list should be updated to link to pre-contaminated versions, with a brief mention that newer versions use genAI. users have a right to make informed choices.
 
  • Like
Reactions: Muleke_Trairao
Considering what happened to vkQuake's developer on another thread (he seems to have left on his own terms) about his use of GenAI, will this thread be updated with such info?

I just wanted to say that I didn't intend for any of this to happen. I just shared my view on the GenAI tool taking code from everywhere. I didn't expect vkQuake's developer to be mad about it (maybe because I said it was immoral?). And I also didn't want to seem ungrateful towards him.

Still, I feel the need to apologize.

I respect people for their work, and I know that he contributed a lot to our community. I did use vkQuake a lot before knowing that he used GenAI to develop it (I'm back to using Ironwail now). I just questioned the way in which he was doing that. :(
To be clear, I don't believe anyone thinks you did anything wrong. I know I certainly don't. If anything, you brought things to light that we want to be aware of. In any case, thank you for contributing to the community and the site in a respectful and productive way.
 
using genAI makes projects GPL noncompliant
It does not, that claim is entirely baseless. See my comment. Stop repeating this nonsense.

nor should they be shielded from valid criticism
Nobody provided valid criticism. You all provided a mix of hypocritical moral judgements (have you all purists stopped using Windows and Linux now?), completely baseless "legal" opinions (see above), and then used the ultimate power move of "well it's the rule here so f- off" because that's actually the only valid argument so far.

The websites rule about not using generative AI is aging like milk. It cannot apply to software. That rule needs to be updated to reflect the reality: that using AI to generate art is horrendous and SHOULD be criticised and banned (I will happily die on that hill with you) but to use it to do programming is completely valid.
 
  • QThink
Reactions: Mopey bloke