Skip to content

timfox/idTech3

 
 

Repository files navigation

id Tech 3

build License: GPL v2 Stars Forks

Modern id Tech 3: Vulkan-first renderer with PBR, optional OpenGL fallback, validation and smoke-tested builds, and disciplined cross-platform engine work. Everything below extends that core.

This repository does not contain any game content from Quake III Arena.

Engine pillars

  1. Renderer — Vulkan 1.x path with PBR, froxel volumetrics, SSAO, MSAA/SMAA, spherical harmonics lighting, SDF HUD text; OpenGL renderer remains for compatibility.
  2. Tooling — GPU detection, validation layers, performance HUD, safe mode, CI matrix builds, smoke tests and shader validation in the build.
  3. Platform — Linux, Windows, macOS, Android; IPv4/IPv6 networking, modern codecs and asset loaders.

Ray tracing (Vulkan RT) is scaffolded / in progress — see docs/RENDERERS_FUTURE.md and CLAUDE.md for status, not a headline guarantee.

Features (by area)

Rendering:

  • OpenGL renderer (fallback)
  • Vulkan renderer
  • Physically Based Rendering (PBR)
  • Spherical Harmonics lighting support
  • Screen Space Ambient Occlusion (SSAO)
  • High-quality SDF HUD text rendering with UTF-8 glyph support
  • SVG asset rasterization (NanoSVG / NanoSVRast, built-in; no extra system libs)
  • Froxel-based Volumetric Lighting with 2D Navier–Stokes fluid solver
  • MSAA and SMAA anti-aliasing

Audio:

  • OpenAL backend with HRTF for 3D positional audio
  • Real-time reverb and occlusion effects via OpenAL EFX (heuristic environmental acoustics)
  • Audio codec support: mp3, ogg, wav, flac, webm, opus

Video:

  • Video codec support: RoQ, WebM (VP8/VP9), Ogg Theora, MP4 (H.264)

Models:

  • Model formats supported: MD3, MDR, IQM, OBJ, FBX, GLTF, USD (Universal Scene Description), Maya Ascii, Collada (DAE), STL
  • Blend Shapes (IQM, GLTF)

Scripting:

  • Support for Lua scripting
  • Support for JavaScript scripting

Images:

  • Image format support: PNG, JPEG, TGA, BMP, DDS, WebP, HDR, OpenEXR (EXR), KTX, PKM, PVR

Image Generation (optional):

  • FLUX.2/FLUX.1 C image generation (text-to-image from console, real-time hot-reload, device selection; supports flux1-schnell, flux1-dev, flux2-dev; requires model files in game directory; Metal, BLAS, or pure C backend with graceful fallback)

Networking:

  • Full IPv6 and IPv4 dual-stack support (host, client, server)
  • NAT traversal (UDP hole punching with automatic fallback strategies)
  • Server discovery: LAN broadcast and master-server queries
  • Built-in rate limiting/DDoS mitigation (connection flood protection)
  • Challenge/response protocol with replay/spoof resistance enhancements
  • Reliable UDP virtual channel (sequenced/reliable message streams)
  • Asynchronous non-blocking networking (epoll/kqueue/libsockets abstractions)
  • Graceful automatic fallback to IPv4-only if stack or OS configuration requires
  • DTLS (Datagram TLS) for secure UDP when enabled at runtime (net_dtls + net_dtls_key; OpenSSL linked when available at build time)
  • Optional TLS-secured remote console (off by default)
  • Console/logging for connection diagnostics and real-time network statistics

Systems (game and engine extensions):

  • AIML 2.1-oriented chatbot scripting (see g_aiml.c / Lua Engine.AIML)
  • GOAP (AI planning)
  • Flocking and boids (crowd AI)
  • Finite State Machines (FSM) and Behavior Trees
  • Navigation Mesh (NavMesh) pathfinding (A*, Dijkstra)
  • Event scripting (Lua, JavaScript)
  • Physics and collision (with optional Bullet Physics)
  • Multithreaded scheduler/task system
  • Entity-Component System (ECS, ENTT)
  • Replay frame index tied to server snapshots (engine_replay; Lua Engine.Replay)
  • Save slot metadata + save/engine_slot_*.txt persistence (Lua Engine.Save)
  • Dynamic dialogue and quest stage tracking (Lua Engine.Dialogue, Engine.Quest)
  • Procedural/random systems
  • Statistics / player telemetry counters (Lua Engine.Telemetry, cvar engine_telemetry; distinct from renderer GPU counters)
  • Debugging tools and overlays

Platforms

  • Windows
  • Linux
  • Android
  • MacOS

Standards

  • The engine aims to be C23-compatible, and modernization is ongoing where it improves safety and portability.
  • Native C bool is preferred in new or modernized code, but qboolean remains in use where needed for backward compatibility.

Build

Primary entry point:

./scripts/compile_engine.sh vulkan    # Vulkan + Release
./scripts/compile_engine.sh opengl   # OpenGL fallback
./scripts/compile_engine.sh vulkan debug

Artifacts land under release/ and build-vk-Release/ (or build-gl-Release/). Run tests from the build directory: ctest or make test.

Examples (copy-paste workflows): examples/README.md — local validation, GAME_BASE templates, mod launch lines, pointers to docs/samples/. Demo mod pack (optional CMake): -DBUILD_EXAMPLE_DEMO_GAME=ON then build target demo_game_pk3idtech3_demo.pk3 (examples/demo_game/README.md). Run demo from a source tree: ./scripts/run_demo.sh — see examples/demo_skeleton/README.md.

Renderer discipline: docs/RENDERER_CONFIDENCE.md, headless ./scripts/renderer_regression_check.sh, visual pack specs under docs/samples/renderer_regression/.

Links

About

id Tech 3 engine with PBR and ray tracing

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C 95.6%
  • C++ 3.7%
  • GLSL 0.2%
  • Shell 0.2%
  • CMake 0.2%
  • Go Template 0.1%