Recent from talks
Nothing was collected or created yet.
Quake engine
View on Wikipedia
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
| Quake engine | |
|---|---|
| Developers | id Software (John Carmack, Michael Abrash, John Cash) |
| Final release | 1.09
/ December 21, 1999 |
| Repository | github.com/id-Software/Quake |
| Written in | C, Assembly (for software rendering & optimization) |
| Platform | DOS, AmigaOS, Microsoft Windows, macOS, Linux, Nintendo 64, Zeebo, Xbox One, Xbox Series X/S, PlayStation 4, PlayStation 5 |
| Predecessor | Doom engine |
| Successor | Quake II engine, GoldSrc |
| License | GNU GPL-2.0-or-later |
| Website | www |

The Quake engine (part of id Tech 2) is the game engine developed by id Software to power their 1996 video game Quake. It featured true 3D real-time rendering. Since 1999, it has been licensed under the terms of GNU General Public License v2.0 or later.
After release, the Quake engine was immediately forked. Much of the engine remained in Quake II and Quake III Arena. The Quake engine, like the Doom engine, used binary space partitioning (BSP) to optimise the world rendering. The Quake engine also used Gouraud shading for moving objects, and a static lightmap for non-moving objects.
Historically, the Quake engine has been treated as a separate engine from its successor, the Quake II engine. Although the codebases for Quake and Quake II were separate GPL releases,[1][2] both engines are now considered variants of id Tech 2.[3]
History
[edit]The Quake engine was developed from 1995 for the video game Quake, released on June 22, 1996. John Carmack did most of the programming of the engine, with help from Michael Abrash in algorithms and assembly optimization. The Quake II engine (id Tech 2.5) was based on it.
John Romero initially conceived of Quake as an action game taking place in a fully 3D polygon world, inspired by Sega AM2's 3D fighting game Virtua Fighter. Quake was also intended to feature Virtua Fighter-influenced third-person melee combat. However, id Software considered it to be risky, and it would've taken longer to develop the engine. Because the project was taking too long, the third-person melee was eventually dropped.[4][5]
Derivative engines
[edit]
On December 21, 1999, John Carmack of id Software released the Quake engine source code on the Internet under the terms of GPL-2.0-or-later, allowing programmers to edit the engine and add new features. Programmers were soon releasing new versions of the engine on the net. Some of the most known engines are:
- GoldSrc – The first engine to be created by Valve. It was used in the Half-Life series, and gave rise to the Source and Source 2 engines. The Xash3D projects, as well as the FreeHL and FreeCS ports,[6] use Quake source code in part to recreate this engine, even with a wrapper for running the game.[7][8]
- DarkPlaces – A significantly modified engine used in several standalone games and Quake mods.[9][10] Although the last stable release was on May 13, 2014, it has received numerous updates through its SVN repository since then.[11] Its home page was hosted on Icculus.org until 2021, when the engine switched to a Git repository hosted on GitHub.[12] The developers of Xonotic provide mirrors of DarkPlaces source code on various social coding platforms[13][14] since the game is built on and distributed with the development version of the engine.
- QuakeForge - One of the earlier major community ports.[15]
- NPRQuake - Fork of Quake featuring non-photorealistic rendering giving it a pencil drawn look.[16][17]
- Tenebrae - Custom Quake engine with real time lighting and bumpmapping among other features.[18][19][20][21]
- TyrQuake - A conservative focused source port.[15]
- Fisheye Quake - Custom Quake engine with fisheye distortion by the author of PanQuake.[22]
- WinQuake
- Fruitz of Dojo - Source port aimed at Mac OS X.[26][27][28]
- NehQuake - Custom engine for the Nehara mod.[29]
- GLQuake
- FitzQuake (Derivative of GLQuake) - Seminal port whose SDL version was later forked into numerous others.[30]
- MarkV (Derivative of FitzQuake, successor to DirectQ) - Came in both GLQuake and WinQuake derived versions.[31]
- Quakespasm (Derivative of FitzQuake) – Commonly used source port.[32]
- Quakespasm-Spiked (Derivative of Quakespasm) - Limit-removing fork. [33]
- vkQuake – (Derivative of Quakespasm) – Uses Vulkan API for rendering programmed by id Software employee Axel Gneiting, released under the GPLv2.[34][35]
- Ironwail - (Derivative of Quakespasm) – An engine aiming at maximum performance.[36]
- FitzQuake (Derivative of GLQuake) - Seminal port whose SDL version was later forked into numerous others.[30]
- FTEQW (Derivative of QuakeWorld) - A modern client for online multiplayer.[37][25]
- FuhQuake
- ezQuake (Derivative of FuhQuake) - Multiplayer focused port often paired with the nQuake launcher.[38][39]
- JoeQuake (Derivative of FuhQuake) - A port popular with speedrunners.[40]
Games using the Quake engine
[edit]Games using a proprietary license
[edit]| Year | Title | Developer(s) | Publisher(s) |
|---|---|---|---|
| 1996 | Quake | id Software | GT Interactive |
| 1997 | Quake Mission Pack No. 1: Scourge of Armagon | Hipnotic Interactive | 3D Realms |
| Quake Mission Pack No. 2: Dissolution of Eternity | Rogue Entertainment | 3D Realms | |
| Hexen II | Raven Software | id Software, Activision | |
| Malice | Ratloop | Quantum Axcess | |
| Shrak | Quantum Axcess | Quantum Axcess | |
| X-Men: The Ravages of Apocalypse | Zero Gravity Entertainment | WizardWorks | |
| 1998 | Hexen II Mission Pack: Portal of Praevus | Raven Software | id Software Activision |
| Abyss of Pandemonium - The Final Mission | Impel Development Team | Perfect Publishing | |
| 2000 | Laser Arena | Trainwreck Studios | ValuSoft |
| 2001 | CIA Operative: Solo Missions | Trainwreck Studios | ValuSoft |
| Urban Mercenary | Moshpit Entertainment | Moshpit Entertainment |
Games based on the GPL source release
[edit]| Year | Title | Developer(s) | Publisher(s) |
|---|---|---|---|
| 2000 | OpenQuartz[41] | OpenQuartz Team | SourceForge |
| 2001 | Transfusion[42] | Transfusion Project | SourceForge |
| 2002 | Eternal War: Shadows of Light | Two Guys Software | Two Guys Software |
| 2005 | Nexuiz | Alientrap | Alientrap |
| 2007 | The Hunted[43] | Chris Page | ModDB |
| 2011 | Xonotic | Team Xonotic | Team Xonotic |
| Steel Storm | Kot-in-Action Creative Artel | Kot-in-Action Creative Artel | |
| 2012 | Forced: Leashed[44] | Kepuli Games | Kepuli Games |
| RetroBlazer[45][46][47] | Hydra Game Works | Hydra Game Works | |
| 2013 | Chaos Esque Anthology[48] | Chaos Esque Team | Chaos Esque Team |
| 2015 | Rexuiz[49] | Rexuiz Team | Rexuiz Team |
| 2017 | FreeCS[6] | FreeCS Team | GitHub |
| 2018 | FortressOne[50] | FortressOne Team | FortressOne Team |
| The Wastes[51] | Vera Visions L.L.C | Vera Visions L.L.C | |
| 2019 (Early access) | LibreQuake[52] | LibreQuake Team | GitHub |
| 2021 (Early access) | Doombringer[53] | Anomic Games | Anomic Games |
| 2024 | Wrath: Aeon of Ruin[54] | Killpixel | 3D Realms 1C Entertainment |
| 2025 | Brazilian Drug Dealer 3: I Opened a Portal to Hell in the Favela Trying To Revive Mit Aia I Need to Close It[55][56] | Joeveno | Joeveno |
See also
[edit]References
[edit]- ^ "Quake engine GPL release". GitHub. Retrieved May 24, 2020.
- ^ "id Tech 2 GPL release". GitHub. Retrieved May 24, 2020.
- ^ "id Tech 2 page". id Software. Archived from the original on September 17, 2008.
- ^ "Does John Romero Still Enjoy Shooting People?". Next Generation. No. 30. June 1997. pp. 9–12.
- ^ Edge, May 1997,
My original idea was to do something like Virtua Fighter in a 3D world, with full-contact fighting, but you'd also be able to run through a world, and do the same stuff you do in Quake, only when you got into these melees, the camera would pull out into a third-person perspective. It would've been great, but nobody else had faith in trying it. The project was taking too long, and everybody just wanted to fall back on the safe thing – the formula.
- ^ a b Larabel, Michael (November 10, 2017). "FreeCS: Aiming For An Open-Source Counter-Strike Implementation". Phoronix. Retrieved July 14, 2024.
- ^ BTRE (August 3, 2020). "Half-Life: Absolute Zero mimics Half-Life's original vibe, run on Linux with Xash3D FWGS". GamingOnLinux. Retrieved July 15, 2024.
- ^ Beschizza, Rob (March 9, 2022). "Play the original Half-Life in the browser". Boing Boing. Retrieved July 16, 2024.
- ^ Emms, Steve (October 29, 2023). "DarkPlaces – Quake modification". LinuxLinks. Retrieved July 16, 2024.
- ^ "DarkPlaces Homepage". icculus.org. Retrieved November 6, 2017.
- ^ "Darkplaces subversion repository". svn.icculus.org. Retrieved August 9, 2019.
- ^ darkplacesengine/darkplaces, DarkPlaces Engine, June 14, 2021, retrieved June 21, 2021
- ^ "DarkPlaces Quake Engine on Xonotic GitLab". Retrieved February 3, 2020.
- ^ "DarkPlaces Quake Engine on Xonotic GitHub". GitHub. Retrieved November 6, 2017.
- ^ a b Stevenaaus (March 1, 2010). "Game Engines". Linux Quake HOWTO. Retrieved July 15, 2024.
- ^ Beschizza, Rob (July 30, 2018). "Quake on me: classic shooter rendered with pencil sketch filter". Boing Boing. Retrieved July 15, 2024.
- ^ Ille, Adrian (September 11, 2014). "Non-Photorealistic Rendering Techniques for a Game Engine". SlideServe. University of North Carolina at Chapel Hill. Retrieved July 15, 2024.
- ^ Goldstein, Maarten (September 25, 2002). "New Tenebrae". Shacknews. Retrieved July 16, 2024.
- ^ Royal, Simon (October 10, 2015). "TenebraeQuake, an Enhanced Quake Front End". Low End Mac. Retrieved July 16, 2024.
- ^ Wiley, Galen (July 14, 2003). "New Tenebrae Release for PC". Inside Mac Games. Retrieved July 16, 2024.
- ^ Largent, Andy (October 27, 2002). "New PC Tenebrae Quake, Mac Update Soon". Inside Mac Games. Retrieved July 16, 2024.
- ^ Bosworth, Patrick (July 2, 2021). "Part 5: Source Ports and Fisheye Quake". Shacknews. Retrieved July 16, 2024.
- ^ Chalk, Andy (October 10, 2015). "Peripheral vision in games goes ultrawide with new Quake mod". PC Gamer. Retrieved July 16, 2024.
- ^ Chakrabarty, Aditya (March 12, 2015). "Peripheral Vision in game goes Ultrawide thanks to the new Quake Mod". sportskeeda. Retrieved July 16, 2024.
- ^ a b Baxter, Joel (May 3, 2015). "Quake Engines, Old and New". Neogeographica. Retrieved July 16, 2024.
- ^ Cook, Brad (March 19, 2006). "Quake Gets Universal Binary". The Mac Observer. Archived from the original on July 16, 2024. Retrieved July 15, 2024.
- ^ Monks, Neale (August 1, 2003). "Classic Games: Quake". MyMac.com. Archived from the original on July 16, 2024. Retrieved July 15, 2024.
- ^ "Frank's Craptacular House of Mac Quake Stuffs". pOx's Playhouse. July 1, 2019. Retrieved July 15, 2024.
- ^ Stevenaaus (March 1, 2010). "Mods". Linux Quake HOWTO. Retrieved July 15, 2024.
- ^ Boyle, Joshua (August 18, 2022). "Nods to Mods Interview: Rubicon 2 for Quake". Slayer's Club. Retrieved July 15, 2024.
- ^ Papadopoulos, John (December 11, 2018). "Quake Xmas Jam 2018 adds 21 new maps to id Software's classic shooter, available for download". DOSGaming. Retrieved July 15, 2024.
- ^ Yang, Robert (August 23, 2021). "Quake Renaissance: a short history of 25 years of Quake modding". Rock Paper Shotgun. Retrieved July 14, 2024.
- ^ Dawe, Liam (April 27, 2022). "Block Quake is basically Quake made into LEGO". GamingOnLinux. Retrieved July 14, 2024.
- ^ Gneiting, Axel (July 20, 2016). "My Vulkan Quake 1 Port running "In the Shadows" mod. Some stuff still missing. Code is here https://github.com/Novum/vkQuake". Twitter. Retrieved August 6, 2016.
- ^ "Vulkan Quake port based on QuakeSpasm". github.com/Novum/vkQuake. Retrieved August 6, 2016.
- ^ Spirit (January 30, 2022). "Ironwail, a high-performance QuakeSpasm fork". InsideQC. Retrieved July 14, 2024.
- ^ Chalk, Andy (February 17, 2021). "This mod turns Quake into a top-down shooter". PC Gamer. Retrieved July 16, 2024.
- ^ Campbell, Alex (May 20, 2016). "We're running a Quake server all week—come play with us!". PC Gamer. Retrieved July 16, 2024.
- ^ Fenlon, Wes (May 22, 2021). "We're running a Quake multiplayer server all week for the 25th anniversary". PC Gamer. Retrieved July 16, 2024.
- ^ Fairweather (February 19, 2022). "Quake Engines & Source Ports: A Beginners Guide". Slipgate Sightseer. Retrieved July 15, 2024.
- ^ neozeed (June 24, 2018). "Open Quartz". Virtually Fun. Retrieved February 8, 2023.
- ^ Von Kallenbach, Gareth (2003). "Devoted to the cause - Blood Transfusion to save aging game". Game Industry News. Archived from the original on April 8, 2003.
- ^ "The Hunted Chronicle 2 review". Nixbit. Retrieved April 23, 2023.
- ^ Tricky (August 25, 2012). "Force: Leashed". Jay Is Games. Retrieved April 24, 2023.
- ^ Yu, Derek (January 16, 2012). "RetroBlazer (Alpha)". TIG Source. Retrieved April 24, 2023.
- ^ Priestman, Chris (January 21, 2015). "RetroBlazer Has The Fast Pace, Bright Colors Of 1990s FPS". Siliconera. Retrieved July 14, 2024.
- ^ Tarason, Dominic (January 12, 2012). "16-Bit Killer – RetroBlazer Demo Offers 2.5d FPS Nostlagia With A Twist". DIY Gamer. Archived from the original on March 21, 2012. Retrieved July 14, 2024.
- ^ "Chaos Esque Anthology Free 3D FPS, fork from Xonotic". FOSS Games. April 3, 2024. Retrieved July 15, 2024.
- ^ "Rexuiz FPS". Indie Gamer. Retrieved July 14, 2024.
- ^ Dawe, Liam (November 21, 2018). "Get some classic FPS action on with QuakeWorld Team Fortress". Retrieved July 29, 2024.
- ^ "The Wastes". Frag-Net.con. Retrieved July 14, 2024.
- ^ Yang, Robert (August 5, 2021). "Quake Renaissance: how to start playing the original Quake today". Rock Paper Shotgun. Retrieved February 8, 2023.
- ^ Dawe, Liam (June 5, 2021). "DOOMBRINGER is a new first-person shooter from veterans of the Doom and Quake communities". GamingOnLinux. Retrieved December 26, 2023.
- ^ Russell, Bradley (March 7, 2019). "3D Realms' VP Talks 'Exceeding' Quake with Wrath: Aeon of Ruin and 'Dumbed Down' Call of Duty". Game Revolution. Retrieved November 30, 2024.
- ^ Zwiezen, Zack (September 24, 2025). "New $3 Boomer Shooter Is A Wild Fever Dream You Should Play". Kotaku. Retrieved September 30, 2025.
- ^ Andy Chalk (September 23, 2025). "Steam celebrates all things boomer shooter with 'Boomstock 2025,' blasting up to 80% off the very best in retro-inspired FPS". PC Gamer. Retrieved September 30, 2025.
External links
[edit]Quake engine
View on GrokipediaOverview
Initial Development and Release
The development of the Quake engine was led by John Carmack at id Software, beginning in late spring 1995 as the company sought to advance beyond the 2.5D limitations of the Doom engine. Carmack, id's lead programmer, focused on creating a true 3D real-time rendering system capable of supporting complex polygonal environments and multiplayer gameplay. Michael Abrash, a renowned graphics expert, joined the team in 1995 to contribute optimizations, particularly in assembly code to maximize performance on contemporary hardware. John Cash also programmed alongside Carmack, assisting with key aspects of the rendering pipeline.[6] Originally, id Software's lead designer John Romero envisioned Quake as a third-person 3D action game set in a fully polygonal world, drawing inspiration from Sega's 1993 arcade fighter Virtua Fighter to incorporate melee combat and dynamic animations. However, escalating development timelines and technical priorities led to a pivot toward a first-person shooter format, aligning more closely with id's expertise in fast-paced, networked action games while leveraging the engine's 3D capabilities for immersive level design. This shift allowed the team to prioritize engine stability and release feasibility over expansive new mechanics.[7][8] The engine was implemented primarily in C for its portability and maintainability, with critical performance sections rewritten in x86 assembly to achieve high frame rates on mid-1990s PCs. It targeted Intel Pentium processors, which provided the necessary floating-point performance for 3D transformations, and was optimized for emerging 3D graphics accelerators like the 3dfx Voodoo card released later in 1996, enabling hardware-accelerated OpenGL rendering via the Glide API for smoother gameplay.[3][9] Quake and its engine launched on June 22, 1996, as a shareware title for MS-DOS and Windows platforms, distributed by GT Interactive and quickly establishing id Software's reputation for groundbreaking 3D technology. The full retail version followed shortly after, supporting multiplayer over LAN and early Internet connections, which highlighted the engine's networked architecture from the outset. In 1999, Carmack released the engine's source code under the GPL, facilitating community modifications and long-term preservation.[5][10]Core Technical Features
The Quake engine pioneered true 3D real-time rendering through the use of binary space partitioning (BSP) trees, which efficiently divide game worlds into convex subspaces for optimized visibility determination and collision detection. These BSP trees, stored in .bsp files, organize level geometry into nodes and leaves, allowing the engine to traverse only relevant portions of the scene during rendering, a critical innovation for handling complex 3D environments on 1990s hardware.[11] Surface lighting combined Gouraud shading with static lightmaps to achieve dynamic yet performant illumination. Gouraud shading interpolated lighting values across polygon vertices based on precomputed normals, providing smooth gradients on 3D models, while static lightmaps—precalculated texture overlays stored as brightness arrays—applied baked lighting to world surfaces without real-time computation overhead. The engine further enhanced texture quality via mipmapping, which scaled textures into multiple resolutions (full, half, quarter, and eighth size) based on viewing distance to reduce aliasing and improve performance, and supported alpha blending for transparency effects, where specific color indices in textures rendered as see-through elements.[11] Multiplayer functionality relied on a client-server architecture over UDP for low-latency deathmatch modes, enabling synchronized gameplay across networks by transmitting player actions and world updates in unreliable but fast packets. This UDP-based protocol prioritized speed for real-time interaction, with the server authoritative over game state to prevent cheating. The engine initially targeted DOS but expanded to support Windows and Linux natively, with official console ports adapting it for the Sega Saturn and Nintendo 64, demonstrating its portability across diverse hardware architectures.[12][3]Historical Development
Conception and Early Challenges
In 1994, John Romero pitched the initial concept for Quake to id Software as a third-person 3D action fighter, drawing inspiration from Japanese arcade games such as Virtua Fighter and Tekken, envisioning melee combat in a fully polygonal fantasy world. This ambitious idea aimed to leverage emerging 3D technologies for dynamic, close-quarters battles, marking a departure from id's prior 2.5D shooters. By 1995, the project shifted to a first-person perspective to mitigate development risks associated with the unproven third-person mechanics and to capitalize on id Software's established expertise in first-person shooters from Doom. This change aligned with the team's strengths in fast-paced, immersive gameplay, allowing focus on core innovations rather than experimental camera controls. A primary technical hurdle was achieving real-time 3D rendering without hardware acceleration, as consumer PCs lacked dedicated 3D GPUs, necessitating a software-based approach to handle complex polygons and lighting. id Software prioritized software rendering to ensure broad compatibility and performance, using techniques like binary space partitioning (BSP) trees to efficiently sort and draw visible geometry.[13] To address performance bottlenecks, Michael Abrash joined the team in late 1995, integrating low-level assembly optimizations that boosted polygon throughput by refining span rasterization and perspective correction, enabling smoother rendering of dynamic scenes.[14] His contributions complemented John Carmack's architectural work, fostering a collaborative dynamic where algorithmic efficiency met hardware-level tuning to push mid-1990s PCs to their limits.[14] The project faced significant delays, with early alpha builds showcased in 1995 highlighting basic 3D movement but revealing integration issues, extending into beta testing by early 1996 amid ongoing refinements to multiplayer and rendering stability. These setbacks stemmed from the complexity of transitioning from Doom's sector-based world to Quake's fully 3D environment, compounded by team distractions like promotional duties. Quake ultimately released in June 1996 as a pivotal milestone in 3D gaming. The shareware model, releasing the first episode for free, significantly boosted its popularity and contributed to its commercial success.Release and Industry Impact
The Quake engine debuted with the release of Quake on June 22, 1996, published by GT Interactive Software for MS-DOS, marking a pivotal moment in first-person shooter development. The game achieved rapid commercial success, selling 373,000 retail copies in the United States during its first year, with total worldwide sales exceeding 1 million units. This strong performance was driven by the engine's innovative full 3D real-time rendering, which allowed for seamless navigation through complex polygonal environments without relying on 2D sprites, earning widespread critical acclaim as a technological breakthrough in immersive 3D gaming.[15] Quake's multiplayer capabilities further solidified its influence, popularizing deathmatch as a standard genre in competitive gaming through Internet-enabled free-for-all battles and team-based variants. The engine's built-in console commands enabled players to customize gameplay on the fly—adjusting variables like gravity, weapon respawn rates, and server rules—fostering an immediate culture of experimentation that extended beyond official modes. This accessibility helped establish deathmatch as a cornerstone of online multiplayer, influencing subsequent titles and tournaments. The engine's emphasis on fast-paced, network-optimized 3D combat also spurred competitors, notably inspiring the development of Epic Games' Unreal Engine, which sought to build on Quake's foundations with enhanced scripting and visual fidelity.[16][17][18] Economically, the Quake engine catalyzed the 3D graphics hardware market by demonstrating the need for dedicated accelerators to achieve smooth performance in textured, lit environments. Its optimized OpenGL support, particularly through the Glide API wrapper, propelled sales of 3dfx Interactive's Voodoo Graphics cards, which captured 80-85% of the 3D accelerator market share during their peak in the late 1990s, with vendors like Diamond Multimedia reporting surging demand tied directly to Quake's popularity. Culturally, Quake ignited a vibrant modding community almost immediately upon release, as players leveraged the engine's modular design to create total conversions and new modes; a prime example is Team Fortress, a 1996 mod by Robin Walker and John Cook that introduced class-based teamplay, popularizing tactical multiplayer mechanics and evolving into a standalone franchise that influenced genres like hero shooters. This modding legacy not only extended Quake's lifespan but also laid the groundwork for community-driven content creation in the industry. The engine served as the foundation for id Software's subsequent id Tech iterations, amplifying its long-term technical influence.[19][9][20][21]Technical Architecture
Rendering and Graphics Pipeline
The Quake engine's rendering begins with Binary Space Partitioning (BSP) tree construction, a preprocessing step that organizes the 3D world geometry into a hierarchical structure. The algorithm recursively divides the space along the planes defined by polygons, creating a binary tree where each node represents a splitting plane and leaves contain convex subspaces bounded by these polygons. This subdivision ensures that all polygons within a given leaf face inward and do not mutually obscure one another, forming the basis for efficient spatial queries. During runtime, the BSP tree enables visibility culling by first determining the leaf containing the viewer's position, then traversing only the branches relevant to the view frustum, rejecting entire subtrees if they lie outside the visible volume. The average traversal complexity is O(log n), where n represents the number of polygons, owing to the tree's balanced nature that halves the search space at each level.[22] Following visibility determination, the software rasterization pipeline projects visible polygons onto the 2D screen and fills them pixel by pixel, tailored for resolutions like 320x200 to achieve real-time performance on period hardware. The process starts by transforming world coordinates to screen space and building a Global Edge Table that sorts edges by their topmost y-coordinate. Edge walking then proceeds scanline by scanline via an Active Edge Table, interpolating edge positions to define horizontal spans—segments of visible polygon extents across each row. These spans are filled by sampling textures and lightmaps, with z-buffering applied to resolve depth overlaps and prevent overdraw. Optimization techniques, such as grouping spans by texture to reduce state changes, further enhance efficiency, allowing the pipeline to render complex scenes at interactive frame rates without hardware acceleration.[23] Static lighting is handled through lightmap generation, performed offline during map compilation to pre-bake illumination into auxiliary textures. The compiler samples a grid of points on each surface (spaced approximately every 16 texels) and computes incident light by tracing rays from nearby sources, approximating direct illumination and occlusions without full global solutions. Shadow approximations arise from these ray casts detecting blockers between lights and samples, with results summed, attenuated by distance, and bilinearly filtered for smooth edges before storage in low-resolution lightmaps. At runtime, these lightmaps modulate the base textures multiplicatively, enabling detailed shading with minimal per-frame cost, though limited to static configurations.[24] Texture mapping employs affine transformations for rapid interpolation of UV coordinates across polygon spans, prioritizing speed over exact perspective fidelity. To mitigate the warping distortions inherent in affine methods—where texels stretch non-uniformly with depth—the engine implements hacks for partial perspective correction, processing 16-pixel-wide strips in parallel using hand-optimized assembly that approximates the 1/w division via incremental updates. This block-based approach, leveraging the Pentium's dual-issue pipeline, achieves near-correct results without per-pixel reciprocals, which were prohibitively slow in software. While effective for gameplay, it introduces subtle ripples on angled surfaces, a characteristic artifact of the era's performance constraints.[23] Despite its innovations, the rendering pipeline exhibits key limitations suited to 1996 hardware. Dynamic shadows are absent, with all shadowing confined to precomputed lightmaps, preventing real-time cast from moving entities or lights. Reflections are not supported, relying instead on flat, unmirrored surfaces for simplicity. Texture resolution is typically limited to 256x256 pixels by hardware constraints, though up to 512x512 is possible depending on system memory and OpenGL implementation, which constrains fine detail and necessitates careful artist optimization. These choices ensured broad compatibility but highlight the trade-offs in achieving fluid 3D rendering without dedicated graphics accelerators.[25]Physics, Networking, and Audio Systems
The Quake engine's physics system employs a simple yet effective model centered on bounding box collision detection, where entities are represented by axis-aligned bounding boxes (AABBs) for efficient spatial queries and intersection tests. All physics calculations occur server-side, as implemented in thesv_phys.c file, ensuring authoritative simulation for multiplayer consistency. Gravity is applied as a constant downward acceleration of 800 units per second squared, while momentum is preserved through basic Euler integration for velocity updates, following the equation , where is velocity, is acceleration (including gravity and friction), and is the time step. This approach handles player and projectile movement with friction coefficients (typically 4-8 units) to simulate sliding and stopping, prioritizing responsiveness over complex rigid-body dynamics.[26]
The entity system integrates closely with physics, supporting up to 600 entities (edicts) per level, with practical limits around 600 to maintain performance on era hardware. Client-side prediction enhances local responsiveness by simulating movement using the same physics rules, predicting the player's position based on unacknowledged inputs before server reconciliation corrects discrepancies. This prediction occurs in functions like CL_PredictMove, which replays buffered commands from the last validated server state, adjusting for latency without altering server authority.[27][26]
Networking in the Quake engine relies on UDP for low-latency, connectionless communication, enabling client-server architecture with support for up to 16 players in multiplayer modes. Client-side prediction and basic interpolation mitigate lag, where the client extrapolates entity positions using velocity vectors from the last received snapshot, while the server broadcasts authoritative updates at 10-20 Hz. No server-side lag compensation is implemented; instead, reconciliation handles prediction errors by snapping the client to the corrected state upon receiving server validation. This design, detailed in the engine's client code, allows for smooth gameplay over dial-up connections typical of 1996, with packet sizes optimized to under 1400 bytes to avoid fragmentation.[27]
The audio system serves as an early precursor to OpenAL, providing positional 3D sound through distance-based attenuation and panning without hardware acceleration in the base engine. Sounds are loaded as uncompressed WAV files (8-bit mono at 11 kHz sample rate), with up to 128 simultaneous channels mixed in real-time via DMA output in snd_dma.c. Positional audio calculates volume as , where is the distance from the listener and is the sound's reference radius (often 1000-2000 units), applying left-right panning based on azimuth angles relative to the player's view. Entity-attached sounds, such as footsteps or weapon fire, update positions each frame for immersive spatialization, though limited by CPU to avoid exceeding 30-60 FPS targets on 75 MHz Pentium processors.[26]
Programming and Modding
QuakeC Scripting Language
QuakeC is a custom, C-like scripting language developed by id Software specifically for the Quake engine to implement game logic, including entity behaviors, artificial intelligence, and interactive elements like weapons and buttons. Introduced with Quake in 1996, it allows programmers to define behaviors for non-core engine components without modifying the proprietary C code of the engine itself. QuakeC source files, typically with a .qc extension, are compiled into bytecode stored in a progs.dat file, which the engine loads and executes via an integrated virtual machine at runtime.[28] The language features a simplified syntax inspired by C, including functions, conditional statements, loops, and operators, but with restrictions to align with the engine's performance needs. Identifiers are case-sensitive and limited to 64 characters, starting with letters or underscores. Comments use // for single lines or /* */ for multi-lines. Control flow is sequential, with no support for advanced C features like pointers or dynamic memory allocation. QuakeC is strongly typed, prohibiting casts between types, and emphasizes efficiency for real-time execution.[28] Data types in QuakeC are minimal: floats for scalar values (including booleans, where non-zero represents true), vectors as three-component floats enclosed in single quotes (e.g., '0 0 0' for positions or directions), strings in double quotes for text output (immutable and supporting only equality comparisons), and entities as references to game objects with accessible fields like .origin or .health. Global variables declared before end_sys_globals persist across level changes, while locals are scoped to functions. Functions return void, float, vector, string, or entity, with a maximum of eight parameters to limit stack usage.[28] Central to QuakeC is the think() function, which encapsulates periodic behavior for entities such as monsters, players, or projectiles; it is invoked by the engine when the entity's .nextthink field matches the current time. This ties scripting to the engine's single-threaded frame loop, where all entity updates occur sequentially without concurrency. For example, AI loops for monsters use think() to handle movement, pathfinding, and reactions via functions like th_pain(entity attacker, float damage), which responds to damage events. The execution model ensures deterministic behavior but constrains complex simulations due to its synchronous nature.[28] The compilation process involves the id-provided QuakeC compiler (qcc), which processes .qc files into progs.dat bytecode; early versions like QCCDOS.EXE supported DOS environments, with later tools enhancing debugging. Errors are limited to ten per compile, aborting beyond that, and globals are capped unless modified in source headers. Once loaded, the engine disassembles and runs the bytecode for game logic, isolating it from the C-based rendering and physics cores.[28] Weapon implementation exemplifies QuakeC's utility, where functions spawn entities with initial properties and define their lifecycle. For the rocket launcher, a W_FireRocket() function creates a missile entity, sets its velocity based on aim direction (e.g., newmis.velocity = aim(self, 1000) * 1000), and schedules removal after five seconds via newmis.nextthink = time + 5; newmis.think = SUB_Remove. In the entity's think() loop, trajectory updates occur with code like self.origin += self.velocity * frametime, integrating velocity with frame delta time for smooth motion until impact, at which point touch() triggers explosion effects like particle emission and damage radius application. Audio cues, such as sound(self, CHAN_WEAPON, "weapons/r_lau.nc", 1, ATTN_NORM), enhance feedback during firing. This approach enables modders to tweak damage, speed, or homing without engine alterations.[28][29] QuakeC's limitations stem from its design for constrained, real-time environments: absence of object-oriented paradigms like classes or inheritance, no multi-threading (all logic runs in the main server loop), and rudimentary error handling with minimal recovery. Functions cannot define new types, and string manipulation is basic, often requiring workarounds for complex logic. These constraints, while promoting simplicity, compare unfavorably to fuller languages like BASIC in expressiveness, yet they fostered a vibrant modding scene by balancing accessibility with engine stability.[28]Modding Tools and Community Extensions
The official modding tools released by id Software for the Quake engine included the QuakeC compiler, known as qcc, which converted QuakeC source code into bytecode stored in the progs.dat file to define game behaviors and entities. Additionally, three binary space partitioning (BSP) compilers—qbsp for generating the core geometry and portal data from map files, vis for computing visibility information to optimize rendering, and light for calculating dynamic and static lighting—enabled creators to build custom levels compatible with the engine's architecture.[4] These tools formed the foundation for map creation, allowing modders to construct environments that integrated seamlessly with QuakeC-scripted logic.[30] Community-developed tools expanded accessibility beyond the official suite, with early editors like The Forge (the original name for WorldCraft, later adapted as Valve Hammer Editor) providing intuitive interfaces for level design and asset placement in the mid-1990s.[31] One of the earliest and most influential community mods was Threewave Capture the Flag, released in October 1996 by David "Zoid" Kirsch, which introduced team-based objective gameplay using modified QuakeC scripts and custom maps to simulate flag capture mechanics.[32] These practices fostered a robust modding ecosystem, resulting in thousands of user-created modifications hosted on platforms like ModDB, which in turn influenced the modding framework of derivative engines like GoldSrc used in Half-Life.[33][34] As of 2025, modern community tools like TrenchBroom have become standard for Quake mapping, offering cross-platform support, real-time 3D editing, and direct integration with source ports such as QuakeSpasm for testing compiled BSP files without compatibility issues.[35] TrenchBroom's workflow streamlines the traditional qbsp-vis-light pipeline through built-in compilers and entity browsers, making it easier to create mods that leverage QuakeC as the base scripting method while supporting enhanced features in open-source engine variants.[36]Licensing Evolution
Proprietary Licensing Period
The Quake engine, developed by id Software and released in 1996, operated under a proprietary licensing model that restricted access to its source code while enabling select partnerships for commercial development. This approach allowed id Software to maintain control over the technology while generating revenue through one-time licensing fees, without imposing royalties on sales. Early licensees included Raven Software, which utilized a modified version of the engine for the 1997 fantasy shooter Hexen II, published by id Software itself. Similarly, Hipnotic Interactive (later rebranded as Ritual Entertainment) received a license to develop Quake Mission Pack No. 1: Scourge of Armagon, the first official expansion released in 1997, also under id Software's publishing oversight. Another major licensee was Valve Software, which in 1997 licensed the engine to develop Half-Life (1998), modifying it into the GoldSrc engine. These agreements exemplified id's selective strategy, prioritizing trusted collaborators capable of leveraging the engine's 3D rendering capabilities for new titles.[37][38][4] Licensing terms provided licensees with access to the source code under restrictions that prohibited redistribution, unauthorized modifications beyond their own titles, or creation of derivative engines without id's explicit approval. Access was limited to approved platforms, primarily Microsoft Windows, with no provisions for broad porting without id's approval. John Carmack, id Software's lead programmer, later reflected that such deals were initiated reluctantly in response to industry demand, often starting with intentionally high fees that were nonetheless accepted by partners. Restrictions ensured that modified versions could not be freely shared, safeguarding id's intellectual property while fostering a controlled ecosystem of add-ons and full games.[39][40] By 1999, as id Software shifted focus to the Quake III Arena engine, the proprietary constraints began to limit ongoing support for the original Quake technology amid growing demand for ports and enhancements. This prompted John Carmack to release the Quake engine's source code on December 21, 1999, under the GNU General Public License version 2.0 or later, transitioning it from closed-source exclusivity to open community maintenance. The decision aligned with Carmack's philosophy of sharing mature code to enable improvements without burdening id's resources, particularly as the company prioritized newer projects.[41]Open-Source GPL Release and Aftermath
On December 21, 1999, id Software released the source code for the Quake engine—covering WinQuake, GLQuake, QuakeWorld, and GLQuakeWorld—under the GNU General Public License version 2.0 or later (GPL-2.0-or-later).[42] The release, announced by John Carmack, was made available via id Software's FTP server, marking a shift from the engine's prior proprietary licensing to encourage community-driven development and education.[43] This move allowed unrestricted modification and redistribution, provided derivatives adhered to the GPL's copyleft requirements.[3] For teams preferring not to adhere to GPL terms, id Software offered a non-GPL proprietary license for a flat fee of $10,000 per title.[39] In the immediate aftermath, the open-source availability spurred rapid community activity, including forks that ported the engine to Linux and implemented bug fixes.[44] These early efforts expanded cross-platform compatibility beyond the original Windows and DOS focus, enabling builds on Unix-like systems and fostering broader accessibility for developers and players.[3] The GPL licensing had profound legal implications, empowering free software projects by mandating that any modified versions remain open source, which catalyzed the creation of over 100 source ports by 2025.[45] This proliferation preserved the engine's relevance on modern hardware while promoting innovations in rendering, input handling, and multiplayer features without proprietary restrictions.[45] Community engagement surged further in 2012 when id Software consolidated its open-source releases on GitHub, uploading the Quake repository to facilitate version control and collaborative enhancements.[46] The id-Software/Quake repository has since seen ongoing contributions, including optimizations and compatibility updates, sustaining the engine's ecosystem.[3] Early commercial applications of the GPL-licensed code encountered compliance hurdles, as entities deriving from the engine were obligated to distribute their modifications' source code, complicating proprietary development models.[47] These issues highlighted the tension between open-source freedoms and commercial interests, though many projects ultimately aligned with GPL terms to leverage the engine's foundation.[48]Derivative Engines
Commercial and Licensed Derivatives
Valve Software licensed the Quake engine from id Software in 1996 to develop GoldSrc, a heavily modified derivative that debuted with the 1998 release of Half-Life.[49] GoldSrc introduced skeletal animation for more fluid character movements, replacing Quake's vertex-based system, and an advanced AI framework using tasks and schedules to enable more reactive and context-aware enemy behaviors.[49] These enhancements allowed for complex NPC interactions, such as group flocking seen in enemies like the Houndeye, marking a significant evolution in non-player character logic for first-person shooters.[50] GoldSrc maintained the core binary space partitioning (BSP) architecture from Quake for level geometry and visibility culling but optimized lighting storage and texture loading processes for better performance on contemporary hardware.[51] While experiments with advanced lighting techniques, including early high dynamic range (HDR) concepts, appeared in community modifications, the base engine focused on radial and surface lightmaps without native HDR support.[52] The Quake II engine, known colloquially as id Tech 2.5, represented id Software's 1997 evolution of the original Quake codebase, licensed commercially to third-party developers for titles like Heretic II and SiN.[1] It advanced rendering with colored lighting, per-surface lightmaps, and improved texture compression, enabling more detailed environments without native curved surface support via patches—that feature emerged later in id Tech 3.[18] These updates prioritized multiplayer stability and hardware acceleration via OpenGL, influencing a wave of licensed games in the late 1990s.[53] Other notable licensed derivatives included adaptations by Raven Software for Hexen II (1997), which integrated the Quake engine with fantasy RPG elements and enhanced scripting for quest-driven gameplay.[18]Community-Driven Forks and Modern Ports
One prominent community-driven fork is DarkPlaces, initiated in 2000 by developer Forest "LordHavoc" Hale as a modification to enhance the original Quake engine's capabilities.[54] This project, which underwent significant revisions following the 1999 GPL release of the Quake source code, introduces advanced rendering features such as real-time dynamic lighting, bumpmapping, an OpenGL shader system, bloom effects, and model interpolation to improve visual fidelity while maintaining compatibility with existing mods.[55] DarkPlaces emphasizes performance optimization and modding extensibility, with its last major stable release in 2014 followed by ongoing GitHub updates incorporating bug fixes and refinements as recent as 2021, reflecting continued community maintenance into 2025.[56] Another influential fork is Tenebrae, released in 2002, which focuses on advanced lighting effects to elevate the engine's graphical realism. Developed as a source modification, it integrates stencil shadows for realistic occlusion and per-pixel lighting calculations, predating similar techniques in later id Tech engines like id Tech 4.[57] This fork prioritizes hardware-accelerated enhancements on NVIDIA GPUs of the era, enabling dynamic shadow casting and improved texture interactions without altering core gameplay mechanics.[57] Though development ceased after version 1.04, Tenebrae's innovations in real-time lighting remain a benchmark for community efforts in visual upgrades. FTEQW, a derivative primarily aimed at enhancing multiplayer functionality, builds on the QuakeWorld codebase to support hybrid single-player and online modes. Key features include IPv6 networking, voice-over-IP (VOIP) integration, splitscreen multiplayer, and advanced modding tools like terrain editing and skeletal mesh support, allowing seamless interoperability between NetQuake and QuakeWorld clients.[58] Originating from early 2000s efforts by developer "Spike," FTEQW has evolved through community contributions to handle modern networking demands while preserving the engine's limit-breaking potential for custom content. In the realm of modern ports, vkQuake represents a 2016 initiative by id Tech engineer Axel Gneiting to adapt the engine for contemporary graphics APIs. This Vulkan-based renderer, derived from QuakeSpasm, replaces OpenGL with low-overhead Vulkan calls to enable efficient rendering on modern GPUs, supporting resolutions up to 4K, high dynamic range (HDR) output, and frame rates exceeding the original 72 Hz cap without physics disruptions.[59] Multithreaded loading and rendering further boost performance, making it suitable for high-end displays and mods requiring enhanced visual effects like dynamic shadows and scriptable particles.[59] The project remains actively maintained on GitHub, with cross-platform binaries for Windows, Linux, and macOS updated through 2025. Yamagi Quake II, emerging in the 2010s, serves as a refined port of the Quake II engine variant, prioritizing stability and fidelity to the original experience through extensive bug fixes. Over 2,000 issues from the last official release have been addressed, including 64-bit compatibility, code audits for edge cases, and support for external music playback, ensuring smooth operation on current operating systems without altering gameplay or visuals.[60] This non-profit effort by developer Yamagi Burmeister emphasizes a "vanilla-plus" approach, with dedicated server improvements for multiplayer reliability.[61] QuakeSpasm, developed throughout the 2010s as a cross-platform evolution of the FitzQuake lineage, enhances input handling and portability for diverse devices. Built with SDL2 for superior mouse and controller support—including touch controls for mobile and console adaptations—it incorporates 64-bit architecture, improved sound drivers, and custom music integration to run Quake fluidly on modern hardware.[62] This port's focus on bug resolution and extended file format support has made it a foundational base for further derivatives, with releases continuing into the 2020s.[63] As of 2025, community ports continue to integrate cutting-edge APIs for console ecosystems, such as Vulkan and Metal renderers tailored for platforms like the Nintendo Switch. Projects like nxquake2 extend Yamagi Quake II to Switch hardware with optimized controls and performance tweaks, while Metal adaptations leverage Apple Silicon for seamless macOS and iOS execution, ensuring the engine's accessibility across emerging devices.[64] These efforts stem from the GPL-licensed source, enabling grassroots innovation without commercial oversight.[60]Games Utilizing the Engine
Proprietary and Original Titles
The Quake engine, developed by id Software, first powered the original Quake in 1996, a groundbreaking first-person shooter that immersed players in an eldritch horror-themed world of Lovecraftian dimensions and biomechanical enemies.[5] Released on June 22, 1996, for MS-DOS, the game featured fast-paced multiplayer deathmatches and a single-player campaign emphasizing exploration of shadowy, trap-filled castles and ruins, establishing the engine's reputation for real-time 3D rendering and networked gameplay. Its proprietary binary distribution allowed id Software to maintain control over the technology while enabling high-fidelity visuals like mipmapped textures and lightmaps without relying on source code modifications.[5] Two official mission packs expanded Quake's universe under proprietary licensing in 1997, both utilizing the core engine directly. Quake Mission Pack No. 1: Scourge of Armagon, developed by Hipnotic Interactive and released on March 5, 1997, introduced 15 new single-player levels across three episodes, new weapons like the proxy grenade launcher, and enemies such as the knight and gladiator, set in a steampunk-infused narrative of interdimensional invasion.[5] Similarly, Quake Mission Pack No. 2: Dissolution of Eternity, created by Rogue Entertainment and launched on July 31, 1997, added another 15 levels, eight new monsters including the electric eel and phantom assassin, and power-ups like the laser cannon, weaving a story of ancient cults and temporal rifts while preserving the engine's binary integrity for seamless integration with the base game.[5] Raven Software's Hexen II, published by id Software in 1997, adapted the Quake engine for a fantasy RPG-shooter hybrid, emphasizing hub-based world progression and class-based character selection among four archetypes: paladin, crusader, necromancer, and assassin.[65] Released on October 31, 1997, the game transported players to the medieval realm of Cronos, battling serpentine gods through puzzle-laden levels and inventory-driven combat, with the engine's modifications supporting enhanced particle effects and inventory systems without altering the proprietary source.[65] Later proprietary titles continued leveraging the original Quake engine's binary for niche PC gaming experiences into the 2000s. Laser Arena, developed by Trainwreck Studios and released in September 2000, offered a non-violent arena shooter focused on laser tag-style multiplayer matches, featuring 20 maps, power-ups like shields and speed boosts, and unique mechanics such as tag-based respawns; as a budget title released after the 1999 open-sourcing, it used a heavily modified version of the engine based on licensed binaries for responsive gameplay.[66] These proprietary titles shared core traits of relying on id Software's closed-source binaries for distribution during the pre-open-source era, eschewing community source modifications in favor of licensed direct implementation, and targeting PC gamers during the 1990s with fast, atmospheric shooters that prioritized multiplayer and single-player intensity over extensive narrative depth.Open-Source Derivative Games
The release of the Quake engine source code under the GNU General Public License in 1999 enabled the development of numerous open-source games that directly utilize or extend the engine's codebase, fostering a vibrant community of free and low-cost titles often featuring modern enhancements like Vulkan rendering support.[3] These derivative games typically emphasize multiplayer arena combat or single-player campaigns, leveraging Quake's foundational 3D rendering and physics while incorporating community-driven improvements for contemporary hardware. Nexuiz, developed by Alientrap and released in 2005, is a prominent example of an open-source arena shooter built on the DarkPlaces engine, a heavily modified GPL-licensed fork of the original Quake engine.[67] The game features fast-paced multiplayer matches across futuristic maps, with weapons like plasma rifles and rocket launchers, and was distributed freely under the GPL to encourage modding and contributions.[68] Due to internal development disputes, Nexuiz's codebase was forked in 2011 to create Xonotic, which continues active development as a free multiplayer FPS with enhanced graphics options, including Vulkan support via its DarkPlaces integration.[69] Both titles exemplify community-driven evolution, offering low-barrier entry for players and developers through open-source distribution. FreeCS, a 2017 project, reimplements Counter-Strike 1.5 mechanics as a free-software multiplayer tactical shooter using QuakeC scripting on the FTE QuakeWorld engine, a GPL-derived port of the Quake codebase.[70] It supports team-based objective modes like bomb defusal and hostage rescue, relying on community-provided assets from Half-Life to run on modern systems without proprietary dependencies.[71] This clone highlights the engine's flexibility for genre adaptations, with ongoing updates maintaining compatibility across platforms. More recent indie efforts include Wrath: Aeon of Ruin by KillPixel Games and Slipgate Ironworks, published by 3D Realms; the full game released in 2024 after early access in 2019, using a modified DarkPlaces source port of the Quake engine for a boomer shooter homage to 1990s classics, arming players with nine weapons and 10 artifacts to navigate gothic crypts and ruins in a tale of outlawed zealots, providing authentic retro performance on modern hardware.[72] Similarly, LibreQuake serves as an open-source asset pack and game framework for the Quake engine, providing copyright-free models, textures, and levels to enable fully libre FPS experiences compatible with mods.[73] Launched in early development stages in 2019 and reaching beta in 2024, with a full release in November 2025, it supports Vulkan via compatible source ports, promoting accessibility for modders seeking non-proprietary content.[74] These games underscore the GPL's role in sustaining Quake's legacy through free distribution and iterative enhancements, often prioritizing community collaboration over commercial constraints.[75]References
- https://quakewiki.org/wiki/QBSP
.jpg)