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.
- Renderer — Vulkan 1.x path with PBR, froxel volumetrics, SSAO, MSAA/SMAA, spherical harmonics lighting, SDF HUD text; OpenGL renderer remains for compatibility.
- Tooling — GPU detection, validation layers, performance HUD, safe mode, CI matrix builds, smoke tests and shader validation in the build.
- 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.
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/ LuaEngine.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; LuaEngine.Replay) - Save slot metadata +
save/engine_slot_*.txtpersistence (LuaEngine.Save) - Dynamic dialogue and quest stage tracking (Lua
Engine.Dialogue,Engine.Quest) - Procedural/random systems
- Statistics / player telemetry counters (Lua
Engine.Telemetry, cvarengine_telemetry; distinct from renderer GPU counters) - Debugging tools and overlays
- Windows
- Linux
- Android
- MacOS
- The engine aims to be C23-compatible, and modernization is ongoing where it improves safety and portability.
- Native C
boolis preferred in new or modernized code, butqbooleanremains in use where needed for backward compatibility.
Primary entry point:
./scripts/compile_engine.sh vulkan # Vulkan + Release
./scripts/compile_engine.sh opengl # OpenGL fallback
./scripts/compile_engine.sh vulkan debugArtifacts 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_pk3 → idtech3_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/.