One of the engine's most notable features was out-of-the-box support for hardware-accelerated graphics, specifically OpenGL, along with the traditional software renderer. Another interesting feature was the subdivision of some of the components into dynamic-link libraries. This allowed both software and OpenGL renderers, which were switched between by loading and unloading separate libraries. Libraries were also used for the game logic, for two reasons:
id could release the source code to allow modifications while keeping the remainder of the engine proprietary.
Since they were compiled for a native platform, instead of an interpreter, they could run faster than Quake's solution, which was to run the game logic (QuakeC) in a limited interpreter.
The level format, as with previous id Software engines, used BSP. The levels were lit through a lightmap method, in which light data for each surface is precalculated (this time, via a radiosity method) and stored as an image in the level file, which is then used to determine how much lighting intensity each model should receive, but not its direction.