explaingit

ttimo/doom3.gpl

4,620C++Audience · developerComplexity · 5/5LicenseSetup · hard

TLDR

The official GPL source code release of the Doom 3 game engine in C++, letting developers study, modify, and build on id Software's classic engine, game data must be bought separately.

Mindmap

mindmap
  root((Doom 3 GPL))
    What it is
      Engine source code
      id Software release
      C++ codebase
    Not included
      Game data
      Carmack Reverse
    Platforms
      Windows MSVC 2010
      Linux SCons
      macOS Xcode
    Third party libs
      OpenAL audio
      OggVorbis sound
      OpenGL rendering
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

Study how a production first-person shooter game engine from 2004 handles rendering, physics, and audio.

USE CASE 2

Build a mod or total conversion for Doom 3 by modifying the engine source code.

USE CASE 3

Port the Doom 3 engine to a new platform using the open-source C++ codebase as a starting point.

USE CASE 4

Learn game engine architecture concepts (rendering pipeline, stencil shadows, resource loading) from real production code.

Tech stack

C++OpenGLOpenALDirectXSCons

Getting it running

Difficulty · hard Time to first run · 1day+

Requires the original Doom 3 game data (sold separately on Steam), build toolchain is 2010-era and needs updating for modern compilers.

GPL: you can use, modify, and distribute the code, but derivative works must also be open source under the GPL. Game data has a separate commercial license.

In plain English

doom3.gpl is the official GPL source code release of the Doom 3 game engine, published by id Software. This is the C++ codebase that powered Doom 3 and its expansion Resurrection of Evil. Releasing game engine source code under the GPL was a longtime practice at id Software, and this release lets developers study, modify, and build on the engine. The source code does not include game data. The actual game content (levels, textures, sounds, models) is still covered by the original commercial license and must be purchased separately. Doom 3 and its expansion are available on Steam. The source release is the engine only. Building the engine requires different tools depending on platform. On Windows, a Visual Studio 2010 project file is included, though the free Express edition does not work because 32-bit MFC is required, the Microsoft DirectX SDK is also needed. On Linux, the build uses SCons. On macOS, an Xcode 3.2 project is provided. These are the build systems as of the original release, so developers working with the code today will likely need to adapt the build configuration for modern compilers. One specific feature is excluded from this release: the Carmack Reverse technique for rendering stencil shadows using depth-fail. This was left out due to a patent situation at the time of release. The codebase includes code for Maya export (for users with a Maya license from Autodesk) and bundles several third-party libraries with their own licensing terms: curl, JPEG, OggVorbis, OpenAL, zlib, and others. The main license is GPL, which makes the code suitable for open-source derivative works but not for incorporating into proprietary commercial products.

Copy-paste prompts

Prompt 1
I'm reading the Doom 3 GPL source code. Explain how the rendering pipeline works in the neo/renderer/ directory: what is the sequence of steps from game state to drawing a frame?
Prompt 2
How does Doom 3 handle stencil shadow rendering in the source code, and why is the Carmack Reverse feature excluded from the GPL release?
Prompt 3
I want to compile the Doom 3 GPL source on modern Linux. The original build uses SCons and Visual Studio 2010. What changes do I need to make to get it building with GCC or Clang today?
Prompt 4
Walk me through how Doom 3 loads and plays audio: which files in the GPL source handle sound mixing, OggVorbis decoding, and OpenAL output?
Open on GitHub → Explain another repo

← ttimo on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.