Skip to content

themuffinator/OpenQ4

Repository files navigation

OpenQ4 banner

License: GPL v3 Platform Architecture Build System

Open-source Quake 4 engine and game-code replacement built for stock assets on modern systems

Quick Start | Highlights | Compatibility | Building | Documentation | Credits


Overview

OpenQ4 is a complete open-source replacement for the Quake 4 engine and game binaries. The project keeps official Quake 4 asset compatibility as its guiding constraint while modernizing rendering, display handling, input, packaging, and the build pipeline for current hardware and operating systems.

Single-player and multiplayer live under one openq4/ directory with game-sp and game-mp. SDK-derived game code is maintained in the companion OpenQ4-GameLibs repository, while BSE is treated as first-party source under src/bse/ and linked directly into the client executable.

Note

OpenQ4 does not include Quake 4 assets. You need a legitimate copy of Quake 4 from Steam or GOG to play.

Note

OpenQ4 uses its own engine and game modules. It does not target compatibility with the proprietary Quake 4 DLLs and is not a drop-in runtime for legacy mods.

OpenQ4 gameplay screenshot showing stock Quake 4 assets running in OpenQ4

OpenQ4 running against stock Quake 4 content.


Highlights

Engine and compatibility

  • Complete engine and game-code replacement for Quake 4
  • Unified openq4/ game directory for both single-player and multiplayer
  • Startup auto-discovery for Steam and GOG installs
  • Official q4base PK4 validation enabled by default
  • In-tree BSE runtime integrated into OpenQ4-client_<arch>
  • Canonical SDK-derived game-library source kept in OpenQ4-GameLibs

Rendering and presentation

  • Multi-scale bloom with luminance-based extraction
  • FP16 HDR scene targets, filmic tone mapping, color controls, and log-average auto exposure
  • SSAO and optional CRT post-processing
  • Experimental shadow mapping for projected and point lights, projected-light CSM, alpha-tested transparency shadows, and optional translucent shadow accumulation
  • Screen-fraction scaling, supersample-style presets, MSAA, and SMAA

Modern usability

  • Automatic aspect-ratio, FOV, zoom, and view-weapon framing from live render size
  • Single-player weapon wheel currently under development, including slow-motion audio/presentation treatment on hold
  • Multi-monitor targeting plus borderless, desktop fullscreen, and exclusive fullscreen paths
  • Controller hotplug and analog input support
  • SDL3-first Linux runtime with an explicit OpenQ4-steamdeck launcher/profile for Steam Deck
  • Meson-based builds, builddir/ for local artifacts, and .install/ for staged runtime packages
  • Windows, Linux, and macOS targets with x64 as the current active baseline

OpenQ4 gameplay screenshot showing combat and bloom OpenQ4 gameplay screenshot showing environment lighting and shadow detail

Modern renderer upgrades layered onto the original game assets.


Quick Start

  1. Install Quake 4 from Steam or GOG.
  2. Download the latest OpenQ4 package from the Releases page.
  3. Extract the archive to a folder of your choice.
  4. Launch OpenQ4-client_x64 (OpenQ4-client_x64.exe on Windows).
  5. On Steam Deck, launch OpenQ4-steamdeck instead of the generic client entrypoint.

OpenQ4 will try to locate your Quake 4 install automatically. If detection fails, set fs_basepath manually or see TECHNICAL.md.

Tip

Windows release packages are intended to be self-contained.

Tip

As of March 30, 2026, Linux packages default to the SDL3 backend. On Steam Deck and other Wayland sessions where both WAYLAND_DISPLAY and DISPLAY are present, OpenQ4-steamdeck prefers XWayland unless you already set SDL_VIDEODRIVER yourself.


Compatibility and Scope

OpenQ4 is developed against the shipped Quake 4 assets, not replacement repo-side content. Current compatibility work already covers several engine paths that stock content depends on:

  • BSE reconstruction and client-side effect execution
  • Effect-driven sound shader behavior
  • BSE screen and camera effect paths
  • Material and shader compatibility work needed to reduce custom override dependence
  • Modern display handling for widescreen, ultrawide, and multi-monitor setups
  • Official asset validation through fs_validateOfficialPaks 1

Project scope is intentionally explicit:

  • openq4/ remains the single game directory for SP and MP
  • BSE stays integrated in-tree under src/bse/
  • Dedicated server builds keep the disabled BSE manager path unless that changes by design
  • Canonical SDK/game-library edits belong in ../OpenQ4-GameLibs, not a mirrored src/game tree
  • Compatibility with proprietary Quake 4 game DLLs is a non-goal

Gameplay parity work is still ongoing. For current follow-up items, see TODO.md and docs-dev/release-completion.md.


Building from Source

Full setup instructions live in BUILDING.md. The short version:

  • Keep OpenQ4-GameLibs checked out beside this repo at ../OpenQ4-GameLibs
  • Use builddir/ for local Meson builds
  • Use .install/ as the staged runtime package root
  • On Windows, call tools/build/meson_setup.ps1 instead of raw meson from an arbitrary shell
  • When staging .install/, use meson install -C builddir --no-rebuild --skip-subprojects or the wrapper equivalent
powershell -ExecutionPolicy Bypass -File tools/build/meson_setup.ps1 setup --wipe builddir . --backend ninja --buildtype=debug --wrap-mode=forcefallback
powershell -ExecutionPolicy Bypass -File tools/build/meson_setup.ps1 compile -C builddir
powershell -ExecutionPolicy Bypass -File tools/build/meson_setup.ps1 install -C builddir --no-rebuild --skip-subprojects

Set OPENQ4_BUILD_GAMELIBS=1 if you want the wrapper to trigger game-library builds during compile. For local runtime validation, launch from .install/ so fs_cdpath points at the staged OpenQ4 overlay.


Documentation

OpenQ4 gameplay screenshot showing atmospheric environment

Built to preserve the original game feel on modern displays and GPUs.


Contributing

OpenQ4 welcomes code, documentation, testing, and compatibility reports. Keep stock-asset compatibility in mind, prefer engine-side fixes over shipping replacement content, and update documentation when behavior or workflow changes.


Credits

Project

  • themuffinator - OpenQ4 development and maintenance
  • DarkMatter Productions - project stewardship and website

Upstream and reference work

  • Justin Marshall - Quake4Doom and initial BSE reverse engineering
  • Robert Backebans - renderer modernization reference work
  • id Software - idTech 4 engine and Quake 4
  • Raven Software - Quake 4 game development

Community and third-party libraries

  • Map-Center community - feedback and playtesting, especially Papaya, JohnnyBoy, and coffee009
  • Sean Barrett - stb_vorbis audio codec
  • GLEW Team - Nigel Stewart, Milan Ikits, Marcelo E. Magallon, and Lev Povalahev
  • OpenAL Soft contributors - 3D audio implementation
  • SDL contributors - cross-platform framework
  • SMAA authors - Jorge Jimenez, Jose I. Echevarria, Belen Masia, Fernando Navarro, and Diego Gutierrez

License

OpenQ4 engine code is licensed under the GNU General Public License v3.0. See LICENSE for the full text.

The game-library code in OpenQ4-GameLibs is derived from the Quake 4 SDK and remains subject to id Software's SDK EULA. Quake 4 game assets remain the property of id Software and ZeniMax Media.


Disclaimer

OpenQ4 is an independent project and is not affiliated with, endorsed by, or sponsored by id Software, Raven Software, Bethesda, or ZeniMax Media. Quake 4 is a trademark of ZeniMax Media Inc.

The software is provided "as is" without warranty of any kind. OpenQ4 is experimental software under active development and requires a legitimate Quake 4 installation.


Links

Website | Repository | Game Library | Issue Tracker | Releases

Back to Top

About

The definitive source-port and game binary replacement to run QUAKE 4 on modern systems.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

 
 
 

Contributors