Developer(s) | id Software, (John Carmack, Michael Abrash, John Cash) |
---|---|
Initial release | June 22, 1996 |
Stable release |
1.09 / December 21, 1999
|
Repository | github |
Development status | Complete |
Written in | C, Assembly language |
Operating system | DOS, AmigaOS, Microsoft Windows, MacOS, Linux |
Platform | PC, Amiga, PowerPC Macintosh, Nintendo 64 |
Type | Game engine |
License | GNU General Public License |
Website | github |
The Quake engine is the game engine developed by id Software to power their 1996 video game Quake. It featured true 3D real-time rendering and is now licensed under the terms of the GNU General Public License (GPL).
After release, it immediately forked, as did the level design. 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 nonmoving objects.
Historically, the Quake engine has been treated as a separate engine from its successor id Tech 2. The codebases for Quake and Quake II (id Tech 2) were separate GPL releases.
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) was based on it.
Quake was the first true-3D game to use a special map design system that preprocessed and pre-rendered the 3D environment, so as to reduce the processing required when playing the game on the 50–75 MHz CPUs of the time. The 3D environment in which the game takes place is referred to as a map, even though it is three-dimensional in nature rather than a flat 2D space. The map editor program uses a number of simple convex 3D geometric objects known as brushes that are sized and rotated to build the environment. The brushes are placed and oriented to create an enclosed, empty, volumetric space, and when the design is complete the map is run through the rendering preprocessor. The preprocessor is used to locate two types of empty space in the map, the empty space enclosed by brushes where the game will be played, and the other empty space outside the brushes that the player will never see. The preprocessor then strips away the back-faces of the individual brushes which are outside the game-space, leaving only the few polygons that define the outer perimeter of the enclosed game space.