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.[2] Another interesting feature was the subdivision of some of the components into dynamic-link libraries. This allowed both software and OpenGL renderers, which were selected by loading and unloading separate libraries. Libraries were also used for the game logic, with consequences including:
Since they were compiled for specific platforms, instead of an interpreter, they could run faster than Quake's solution, which was to run the game logic (QuakeC) in a limited interpreter.[3]
id could release the source code to allow modifications while keeping the remainder of the engine proprietary.[4]
The level format, as with previous id Software engines, used binary space partitioning. The level environments were lit using lightmaps, a method in which light data for each surface is precalculated (this time, via a radiosity method) and stored as an image, which is then used to determine the lighting intensity each 3D model should receive, but not its direction.[5][6]
Jake2 – a Java port of the Quake II engine's GPL release. It has since been used by Sun as an example of Java Web Start capabilities for games distribution over the Internet.[16] In 2006, it was used to experiment playing 3D games with eye tracking.[17] The performance of Jake2 is on par with the original C version.[18]
Quake2Forge – one of the earliest community produced source ports. [19]
Quake2xp – a port of Quake II to modern operating systems.[20][21][22]
KMQuake2 – an upgraded engine for Quake II.[22][23][24]
Quake 2 Evolved – early graphically enhanced game engine.[25][26][27][28]
Quetoo (formerly Quake2World) – multiplayer focused port derived from Quake2Forge.[14][29]
Berserker@Quake2 – graphically enhanced Quake II port.[30]
Yamagi Quake II – a port of Quake II to modern systems which aims to preserve the original gameplay.[31][32][33][34][22]
vkQuake2 – the original Quake II engine with additional Vulkan renderer created by Krzysztof Kondrak, a programmer from Poland. It was originally released in December 2018 under the GPLv2.[35][36]
^Sanglard, Fabien (September 16, 2011). "Quake 2 Source Code Review 2/4". fabiensanglard.net. Retrieved July 29, 2023. Dynamic linking provided numerous advantages: [...] Full native speed for mods, no need to rely on QuakeC and Quake Vitual machine.
^Sanglard, Fabien (September 16, 2011). "Quake 2 Source Code Review 2/4". fabiensanglard.net. Retrieved July 29, 2023. Dynamic linking provided numerous advantages: [...] More capabilities to mod makers, the entire game could be altered via game.dll.
^Milne, Rory (March 1, 2019). "The making of Quake 2". pcgamer.com. Retrieved July 29, 2023. We also had light bouncing—simulated radiosity—so every corner of the world had some lighting.
^Sanglard, Fabien (September 16, 2011). "Quake 2 Source Code Review 3/4". fabiensanglard.net. Retrieved July 29, 2023. Contrary to Quake1, Quake2 used radiosity and colored light during the precalculation.
^"JDK 6u10: Jake2: Quake II in Java". Sun Microsystems. Retrieved July 27, 2023. The Jake2 applet example shows the future of game distribution over the Internet. Jake2 is a port of id Software's Quake II to the Java platform developed by Bytonic Software. (...). With the new Java Plug-In, it is now possible to deploy the game directly into the web page with full hardware acceleration and rock-solid reliability.
^"Q24j: Jake and Java-gaming Viability". O'Reilly Media. November 28, 2005. Retrieved July 18, 2009. This is a great show of 3D prowess. Things like this, as well as the Narya 2D open source engine from ThreeRings really are starting to at least show Java can serve as a first-class gaming platform. More than that, just having seen all the… *cough* horrible code in games before, having things like Java's threading model, network and database support might really make it a BETTER platform for a lot of forthcoming games than C.