explaingit

id-software/quake

5,764CAudience · developerComplexity · 4/5LicenseSetup · hard

TLDR

Original 1996 Quake FPS engine source code by id Software, written in C with assembly for software rendering. Includes Windows, OpenGL, and QuakeWorld multiplayer variants. Engine only, game data not included. GPL licensed.

Mindmap

mindmap
  root((Quake Engine))
    Engine Variants
      Windows Build
      OpenGL Accelerated
      QuakeWorld Multiplayer
      Standard Software
    Rendering
      Software Renderer
      Assembly Optimized
      OpenGL Path
    Build Tools
      Visual C++ 60
      Assembly Flag Toggle
    Licensing
      GPL Open Source
      Engine Only
      No Game Data
    Modding
      Total Conversions
      Mod Development
      Source Release Encouraged
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a custom first-person shooter by using the Quake engine as a base and supplying your own game assets

USE CASE 2

Study 1990s real-time 3D rendering and game engine architecture from a landmark production codebase

USE CASE 3

Create a total conversion mod or entirely new game on top of the Quake engine

USE CASE 4

Learn how software and OpenGL rendering paths were implemented and optimized in C and assembly

Tech stack

CAssemblyOpenGLVisual C++ 6.0

Getting it running

Difficulty · hard Time to first run · 1day+

Designed for Visual C++ 6.0, modern compiler compatibility may require patches. Engine only, original Quake game data must be sourced separately (not included in repo).

GNU General Public License (GPL). Free to use, modify, and redistribute, but any changes you distribute must also be released as open source under the GPL.

In plain English

This is the original source code for Quake, the first-person shooter game released by id Software in 1996. John Carmack published the code under the GNU General Public License, commonly called the GPL, which allows anyone to read, modify, and redistribute it, provided they also release their changes as open source. The release includes four versions of the engine: the standard Windows build, the OpenGL-accelerated version, and the two Quakeworld variants designed for online multiplayer. The code is written in C, with some assembly language for the software rendering path. The README notes that removing the assembly code is possible via a flag, but the software renderer loses roughly half its speed as a result. The OpenGL path is less affected. The project was tested with Visual C++ 6.0. An important distinction: only the engine source code is in this repository. The actual game data, including the maps, textures, sounds, and character models, remains under id Software's original copyright and is not included. You can use the code to build a completely new game, called a total conversion, but you cannot simply package the original Quake game content and distribute it freely. The release was intended for entertainment and education. The README, written by John Carmack himself, also encourages mod developers who publish modified versions to release their source code in turn, citing cases where mod projects were lost because teams kept their code private.

Copy-paste prompts

Prompt 1
I have the Quake engine source code (id-software/quake). Walk me through how the software renderer works and where the assembly optimizations live in the codebase.
Prompt 2
Using the Quake engine source as a reference, explain how QuakeWorld's networking model differs from the single-player engine and what changes were needed to support online multiplayer.
Prompt 3
I want to start a total conversion on the Quake engine. Which files and systems should I focus on to replace the game logic, entity definitions, and map loading with my own content?
Prompt 4
Help me set up a build environment for the Quake engine source using Visual C++ and explain how to disable the assembly renderer path via the flag mentioned in the README.
Prompt 5
Explain how the OpenGL rendering path in the Quake source differs architecturally from the software renderer, and why removing assembly has less impact on the OpenGL build.
Open on GitHub → Explain another repo

← id-software on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.