Quake engine

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Quake engine
Developersid Software (John Carmack, Michael Abrash, John Cash)
Final release
1.09 / December 21, 1999; 26 years ago (1999-12-21)
Repositorygithub.com/id-Software/Quake
Written inC, Assembly (for software rendering & optimization)
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    PlatformDOS, AmigaOS, Microsoft Windows, macOS, Linux, Nintendo 64, Zeebo, Xbox One, Xbox Series X/S, PlayStation 4, PlayStation 5
    PredecessorDoom engine
    SuccessorQuake II engine, GoldSrc
    LicenseGNU GPL-2.0-or-later
    Ingame screenshot of the first-person shooter Nexuiz, running on a modified Quake engine

    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 | edit source]

    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]

    Simplified process of reducing map complexity in Quake

    Derivative engines

    [edit | edit source]
    Family tree illustrating derivations of Quake engines

    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 best-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]
      • Blinky - Fork of the fisheye view along with the TyrQuake software renderer.[23][24]
    • WinQuake
      • Engoo (Derivative of WinQuake) - Graphically enhanced software renderer based port.[25]
    • 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]
    • 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 | edit source]

    Games using a proprietary license

    [edit | edit source]
    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 | edit source]
    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 | edit source]

    Lua error in mw.title.lua at line 392: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').

    References

    [edit | edit source]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    8. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    10. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    11. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    12. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    13. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    14. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    15. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    16. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    17. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    18. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    19. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    20. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    21. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    22. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    23. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    24. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    25. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    26. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    27. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    28. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    29. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    30. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    31. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    32. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    33. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    34. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    35. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    36. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    37. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    38. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    39. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    40. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    41. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    42. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    43. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    44. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    45. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    46. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    47. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    48. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    49. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    50. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    51. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    52. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    53. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    54. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    55. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    56. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    [edit | edit source]