Play Quake 4 on modern systems with an open-source engine and game-code replacement built around the original retail assets.
Get Started | Features | Player Docs | Build from Source | Technical Reference
openQ4 is an open-source replacement for the Quake 4 engine and game binaries, built to keep the original game playable on modern PCs while improving presentation, audio, controls, packaging, and day-to-day usability.
It is designed for players who want the original Quake 4 experience with a cleaner path to running it on today's hardware.
Note
openQ4 does not include Quake 4 assets. You still need a legitimate Quake 4 copy from Steam or GOG.
Important
I am getting the question a lot - particularly in the past week or two (Aug 2026) - so I feel I need to emphasise this point now: openQ4 is not compatible with legacy Quake 4 game code. This includes the recent Awakening leak by Justin Marshall. This position won't (and cannot) change. An Awakening mod for openQ4 isn't off the cards, however.
Important
Another point to make, as sadly luddites have become more common rather than less in 2026 and certainly more vocal than ever. Yes, this software is mostly vibe coded and with the extensive work that has gone into it it wouldn't be humanly possible to achieve without a small studio. That does not mean it isn't thoroughly checked and tested by multiple people, it also doesn't mean it is unsafe for use, nor does it mean we don't understand the codebase. It does have a few remaining issues to iron out - remaining macOS support being the main one - but as feedback will show it is otherwise stable. Whether you choose to follow unsubstantiated claims by luddites is entirely up to you, but I would first take a moment to examine their track records before presuming their expertise and credibility on the matter.
The experimental idtech5-ui integration on main is building a complete scalable vector
interface and visual editor. This work is not yet available as a finished
feature; see the visual specification and
implementation progress. The current runtime
includes isolated group fades,
editable vector masks and
button navigation and state feedback, plus
menu input ownership and
live state/expression bindings. A
native GUI importer now preserves the current
GUI set's structure, expressions and dependency references. A
presentation boundary separates game and
menu consumers from legacy window objects, and the runtime now supports
independent document instances with
durable instance state and manager ownership.
Normal GUI loading and typed settings operations
connect explicit retained documents to session callers.
Presentation aliases provide writable menu
metadata and visual properties with persistent expression ownership.
SYSTEM settings transactions now keep
edits in an owned draft, validate the fixed settings catalog, and apply immediate
changes with checked readback and conflict handling. A
private display service supplies actual
device results and strict restoration. Eligible retained confirmation views use
Apply/Keep/Revert and durable recovery,
including a countdown after the owning view presents and recovery after restart.
The opt-in SYSTEM page has precise brightness
fields, performance preset and Auto-Detect draft controls,
an authored vector scrollbar, and guarded
discard/apply-and-return flows with authored modal focus ownership.
Its dropdowns use cut-corner vector frames
and fit readable option lists inside the settings panel at larger UI scales.
Independent text size supports 100–200% typography
with flowing fields and scrollable dialog text. SYSTEM now has transactional
UI/text size controls and reset,
with saved preferences and a window-fit limit that keeps actions reachable.
Output-size glyph rasterization now uses
bounded shared atlases. Font styles, shaping, animated transform density and
complete screen/editor qualification remain open.
Paired SYSTEM sliders and numeric fields
now grow together with text, keeping their values visible when focused.
SYSTEM display controls add fullscreen,
borderless, fullscreen policy and MSAA to the existing draft and confirmation
flow. Vulkan MSAA changes remain unavailable through this strict display path;
complete display catalogs and screen qualification remain open.
Window and custom fullscreen dimensions
now have precise whole-pixel fields. Apply checks the complete display request,
and window resizing uses the same Keep/Revert flow.
The shared effect coordinator adds
automatic completion and a checked in-place audio foundation. Mixed effect
execution, portable recovery and the complete settings page remain in development.
Owned image preparation retains both
supported texture directions before a quality change, while the
native input driver connects checked event
disposal to the engine sinks. Full preset Apply and native text activation remain
unfinished.
Editor file publication can create complete
new files without replacing a competing document. The full authoring and
save/recovery workflows remain in development.
Prepared canvas edits publish validated source,
the live document and undo history together after successful layout preparation.
Ordered event programs connect data, transitions
and typed actions to normal GUI lifecycle and session delivery. Complete GUI migration,
the full application/control contract and the visual editor remain in development.
The product completion plan records
the implementation audit and the gates for complete gameplay, artwork, editor
and platform delivery. The requirement register
tracks the complete scope and required acceptance evidence.
OpenGL UI-only frames retain their native detail
with ordinary resolution scaling. Legacy crop mode and remaining renderer
effect/parity work retain their documented limits.
The text-entry foundation provides validated Unicode editing, exact numeric parsing and checked clipboard services for upcoming retained fields. Numeric field integration adds shared caret geometry, explicit precise proposals and restorable drafts with undo/redo and conflict recovery. The opt-in SYSTEM page pairs brightness sliders with precise fields and protects unfinished edits during Apply and exit. Numeric fields support editing and checked clipboard commands with localized errors. Exact values survive rollback and recovery records, and shared focus reveal keeps focused borders clear of scroll edges at high density within the authored layout limits. Native text delivery has checked editor ownership, owned event collections, a composition reconciler and a Windows SDK text store with managed-owner and collection-hook adapters. Native activation and complete IME integration remain in development.
The 0.13.1 patch notes cover the release save fix, download verification, and map-compilation corrections. Replace the complete package when upgrading.
- Modern display support for widescreen, ultrawide, multi-monitor, borderless, and fullscreen setups.
- Optional visual upgrades such as bloom, HDR, anti-aliasing, baked light grids, and enhanced shadow options, plus soft particles that fade effects into the world instead of cutting a hard edge against it.
- Smoother motion at high refresh rates. The camera, weapons, movers, and everything riding them are drawn on an interpolated presentation clock between the game's 60 Hz ticks, so a 144 Hz or 240 Hz display shows motion at its own rate. Simulation, networking, collision, demos, and saves keep their original timing.
- Real liquids with wading, swimming, drowning, and damaging slime and lava, plus underwater visuals and audio. Retail Quake 4 has none of this, so liquids are something you author - see the Liquids guide.
- Reliable OpenAL audio with compatibility-first voice handling; macOS packages bundle OpenAL Soft so large stock levels are not constrained by Apple's legacy buffer pool.
- Improved input and quality-of-life features including controller support, better console UX, and modern settings behavior.
- German menus and gameplay text, including objectives, in-world terminals, Arena Campaign and multiplayer controls. Choose Deutsch in Settings > Game Options > Language; campaign dialogue uses your installed retail language assets.
- Single-player and multiplayer in one install with active compatibility work aimed at the stock game.
- Readable multiplayer chat with adjustable layout, retained conversation history, channel switching and sent-message recall.
- A usable multiplayer server browser with sorting, filters and saved favorites, plus managed Duel queues and contextual Match Control feedback. Match Control retains the last result into warmup and offers Previous, Next and Free Camera controls for spectators, alongside follow commands governed by server permissions. Automated gameplay checks cover these controls and results on OpenGL and Vulkan; multiplayer remains experimental.
- Smarter repeat level loads with exact-match learned source preparation and validated local model, world, collision, and animation caches that fall back safely to the installed assets.
- A stock-map Arena Campaign (experimental) with five escalating bot tiers, varied combat game types, boss matches, and persistent ladder progress beside the original story.
- Multiplayer bots with runtime navigation, team objectives and character personalities. Bots retain useful routes when a new goal is blocked, abandon stalled goals and avoid unnecessary pickup and visibility probes.
- A unified demo library and player with pause, speed, stepping, rewind/fast-forward controls, honest legacy-format status, and full-world free-fly/player-follow playback for server-side multi-view recordings.
- Cross-platform support with Windows x64 packages plus experimental Windows ARM64 builds, directly executable Linux AppImages and archives for x86_64 plus preview aarch64, Steam Deck support on Linux, and preview Apple Silicon/arm64 macOS OpenGL/Metal bridge packages, which are currently unsigned.
- Opt-in renderer modernization, each piece default-off and independently reversible: temporal AA/upscaling with GPU-time dynamic resolution, bounded volumetrics, screen-space reflections, and indirect light, GPU skeletal animation, and guarded PBR materials with filtered environment lighting. These are previews rather than finished features, and a single setting rolls the whole set back.
- Open development with releases, issue tracking, and community feedback all happening in public.
You need a legitimate Quake 4 install plus the openQ4 package that matches your operating system and CPU architecture.
| Tier | Practical target |
|---|---|
| Minimum | 64-bit CPU, 4 GB RAM, a working OpenGL compatibility driver with ARB2-era vertex/fragment program support, and about 12 GB free for the openQ4 package plus retail Quake 4 assets. Use the minimum or lowpower performance preset on constrained systems. |
| Recommended | Modern quad-core CPU, 8 GB RAM, OpenGL 4.1+ compatibility-class GPU with 2 GB+ VRAM, current graphics drivers, and 15 GB+ free. For high resolutions, quality, or ultra, 16 GB RAM and 6 GB+ VRAM gives much better headroom. |
Packaged support currently focuses on Windows x64, Linux x64, and Steam Deck/SteamOS, with preview Linux ARM64, preview Apple Silicon/arm64 macOS, and experimental Windows ARM64 packages. Linux ARM64 requires a desktop OpenGL compatibility driver and remains preview until real-hardware Wayland gameplay, audio, and input signoff is accepted. The macOS packages are unsigned, and players have run them only on current macOS. The Windows ARM64 packages are built but have not yet been confirmed to run on real hardware. See the Getting Started guide for the platform-specific requirements and caveats.
Bloom and HDR on mp/q4dm2 from the same loadscreen camera: normal rendering on the left, enhanced post-processing on the right.
Baked light-grid indirect diffuse on mp/q4dm2, shown off and on from the same loadscreen camera.
CRT post-processing on mp/q4dm8, shown off and on with a clean no-HUD camera.
A second CRT comparison on mp/q4dm6 shows the same post-process across a brighter indoor arena.
Renderer backends: OpenGL remains the default and recommended release renderer on every platform. The Vulkan backend is experimental and opt-in (
r_renderApi vulkan, applied on engine restart), but now renders the stock Quake 4 material-program families, including environment and heat-haze effects, displacement and depth/blur post effects, and guide-driven parallax, custom-lighting, water, and refractive-glass stages. Vulkan also supports 4x MSAA with SMAA and exact eligible rigid-object motion in experimental temporal AA. On Windows and Linux it drives a Vulkan driver directly. Apple ships no Vulkan driver, so on macOS the same module runs on top of MoltenVK, a Vulkan-on-Metal translation layer bundled inside both existing macOS packages — a runtime option rather than a third download, and not a Metal renderer. It also draws brightness and gamma, baked light grids, soft particles, MSAA alpha-to-coverage, the classic SSAO/bloom/HDR/motion-blur/CRT chain, cel shading, the underwater view, multiplayer player outlines, and ther_show*debug views; opt-in floating-point HDR scenes and automatic exposure now pass local stock-map and restart checks, while custom (non-stock) material programs, complete PBR/probe and HDR visual parity, and broader GPU qualification remain incomplete. If loading Vulkan or creating its device, window, surface, swapchain or mandatory startup resources fails, openQ4 continues with OpenGL in the same launch and records the reason. A device failure during a later fullvid_restartstill selects OpenGL for the next launch. See Display Settings → Renderer Backend.
Automatic Vulkan GPU selection now skips adapters that lack required rendering or presentation capabilities before trying the next one. Explicit GPU choices are also preserved by the preliminary startup probe, which handles changing device lists without accepting incomplete results. See device admission and validation.
Eligible Vulkan HDR scenes now support baked PBR area lighting while retaining reflections, with recovery checks for image reloads and video restarts. Baked-lighting scope and remaining comparisons describe the current limits; complete PBR visual parity remains in progress.
Vulkan PBR cutouts now use their own albedo texture for depth coverage, preventing missing coverage when textures are strongly minified. They also preserve constant alpha, preventing unintended holes at an inclusive 1.0 cutoff. Offscreen rendering uses consistent framebuffer coordinates across geometry, depth copies and presentation, reducing cutout edge differences. See cutout validation and image orientation and remaining qualification.
Experimental Vulkan now renders an initial custom GLSL material subset, including textures, material parameters, vertex movement, per-light effects and supported overrides of stock shader names. Both backends support live material shader reload and recovery after source repair. Broader shader compatibility and complete shadow, material and platform qualification remain in development.
Vulkan point-light shadow edges now use consistent scene coordinates and radial depth calculations. The default filtered comparison passes locally against OpenGL; stencil and alternate sampling differences remain under investigation. See point-shadow validation.
Experimental Vulkan PBR also supports authored ambient lighting, including metallic response and transparent materials. Eligible scenes now have linear HDR composition with bloom, automatic exposure and linear screenshots, including fog and transparency at 0x/4x MSAA. Controlled HDR scenes also match OpenGL at reduced and increased scene resolutions; broader material and post-effect combinations remain in progress.
For renderer debugging, both backends support raw render-image captures through screenshot image, alongside the existing linear HDR screenshots.
Vulkan timing traces also separate frame-completion and image-acquisition waits from presentation work. The frame-pacing investigation records the remaining stock-scene stalls and performance qualification limits. Storage1 benchmarking now distinguishes the scripted drop-pod entry from a separate, checked gameplay view after the second-entry lift settles. Results from these two scenes must be compared separately.
Eligible Vulkan PBR previews also preserve bright colors through multisample antialiasing when HDR tone mapping is off, avoiding dark edges around emissive materials. Classic materials retain their existing color limits. Eligible OpenGL previews now apply authored fog and blend lights once, before transparent materials, matching Vulkan without an experimental lighting-parity override. Vulkan PBR previews explicitly average their stored samples before display clamping, preventing darkened supersampled edges from native resolve precision. A remaining 125%/8x edge comparison is tracked in the viewport and coverage investigation.
Vulkan's SMAA anti-aliasing now preserves scene orientation through its render textures, fixing upside-down gameplay while keeping the HUD upright. Explicit averaging of RGBA8 multisample targets also prevents resolve rounding from creating visibly different color edges when MSAA and SMAA are combined. The renderer validation guide describes the controlled scene and resource-recovery checks.
Classic Vulkan material colors now follow the same limits as OpenGL, avoiding over-bright surfaces and incorrectly opaque cutouts while preserving intended HDR vertex-color brightness and PBR emission. Imported ASE vertex colors also have a defined opaque alpha value on both renderers. Bulk texture reloads keep enough Vulkan descriptor storage to avoid skipping subsequent draws.
On GPUs supporting programmable sample locations, Vulkan MSAA aligns its coverage pattern with the classic OpenGL convention, including HDR targets. The HDR renderer notes describe capability checks and the native fallback.
Supersampled OpenGL PBR scenes now retain the requested MSAA, including at 125–200% resolution. Repeated resolution changes recycle unused render targets so the experimental PBR path can stay active instead of exhausting its cache.
- Install Quake 4 from Steam or GOG.
- Download the latest openQ4 build from the Releases page.
- On Linux, make the matching
x86_64oraarch64AppImage executable and launch it; for an extracted archive, launchopenQ4-client_<arch>(oropenQ4-steamdeckon Steam Deck). - If openQ4 does not find your Quake 4 install automatically, follow the path setup notes in the Getting Started guide.
Need the step-by-step version? Start with docs/user/getting-started.md.
- Getting Started - system requirements, installation, first launch, and common setup questions
- Client Settings Guide - where to find the most useful in-game settings
- Server Setup Guide - basic dedicated server setup and common server variables
- Server and Remote-Console Security - the authenticated
rcon2protocol and password handling
- Display Settings - fullscreen, windowed mode, resolution scale, and multi-monitor behavior
- Input Settings - keyboard, mouse, controller, weapon-wheel sensitivity, and binding help
- Gameplay Settings - gameplay and audio toggles for everyday play
- Arena Campaign (experimental) - single-player arena tiers, unlock rules, maps, game types, and bot rosters
- Steam Deck - launcher, controls, and Linux handheld notes
- Multiplayer Networking (experimental) - multiplayer tuning and lag-comp behavior
- Multiplayer Chat - chat controls, scrollback, message recall and saved layout settings
- Competitive Matches (experimental) - match rules, human voting, optional readiness, round flow, stock-map One Flag support, and match endings
- Demo Library and Multi-View Demos - browse formats, use playback controls, and record or replay complete multiplayer matches
- Liquids - water, slime, and lava behaviour, and how to author them
- Classic Dynamic Lights - Quake II/III style dynamic lights on muzzle flashes, bright projectiles, and explosions
- Shadow Mapping - optional shadow-map settings, flashlight, door and cutout shadows, stabilized cascades, cache budgets, and fallback diagnostics
- Light Grids - advanced lighting guide for players and testers
- Advanced Screen-Space Lighting (experimental) - bounded froxel volumetrics, SSR, SSGI, performance controls, and one-setting rollback
- Temporal AA and Dynamic Resolution (experimental) - temporal anti-aliasing/upscaling and GPU-time resolution scaling
- Cel Shading - banded lighting and outline settings for the cel-shaded look
- DDS Texture Replacements - install and diagnose DXT/BC7 texture packs
- Level-Load Cache - learned preload and generated model, world, collision, and animation cache behavior, controls, rollback, and cleanup
- BUILDING.md - compile openQ4 from source
- Android, GLES and SigmaTouch - experimental native Android builds, optional touch-host integration, and desktop GLES testing
- TECHNICAL.md - advanced configuration, file layout, compatibility notes, and mod details
- The Awakening support plan - building and running the
q4xbaseexpansion mod, and what works so far - Map Entity Strings - replace or extend a map's runtime entities without editing the original map
- Experimental Level Editor - separate
editorExperimentalworkspace with source preview, entity inspector, undo, protected saves and recovery; legacy Radiant retained
- openQ4 targets the official Quake 4 retail assets.
- It ships its own engine and game modules.
- It is not a drop-in runtime for the original proprietary Quake 4 DLL mods.
- The unreleased Quake 4: The Awakening expansion runs as the
q4xbasemod, campaign and multiplayer, on openQ4's own game code extended by openQ4-game-awakening, never the leaked game binary. The support plan records what was built, how it is tested, and what the expansion itself left unfinished. - The project is still in beta development, so compatibility work is ongoing.
Developers and testers should use the engine capability matrix for authoritative implemented/experimental/missing status, the idTech 5-level modernization roadmap for the compatibility-safe implementation order, the shared interaction-lighting contract, shared fog/blend contract, and shared material-deform contract for the default-off ownership and rollback boundaries, the loading/cache contract for the source-authoritative preload and generated-cache boundary plus pending evidence, and the stock-asset baseline for reproducible PK4, SP/MP, save/load, demo, log, and engine-screenshot evidence.
The shadow-mapping audit records shadow correctness and cache repairs, repeatable stock-map comparisons, and the remaining compatibility and validation limits.
The memory-file robustness notes document buffer-growth measurements and native regression coverage for in-memory file generation.
If you run into problems, please use the issue tracker and include crash logs or setup details when possible. For macOS crashes, use the macOS support-data guide before filing or updating an issue. Windows ARM64 and Linux ARM64 have their own issue templates; a report that everything simply worked is as useful there as a bug.
Bug reports, compatibility reports, testing feedback, and code contributions are all welcome. If you want to help build the project itself, start with BUILDING.md. For details on how to report issues, submit changes, and follow project conventions, see CONTRIBUTING.md.
- themuffinator - openQ4 development and maintenance
- Emile Belanger (emileb) - contributor and original author of the Android port, SigmaTouch integration, OpenGL ES 3.0 renderer, GLES shader variants, ETC2/EAC compression, and associated mobile memory/loading work. This integration builds on his Android branch and GLES shader-variants branch; see the contribution and adaptation record.
- DarkMatter Productions - project stewardship and website
- The RmlUi Team, CodePoint, Shift Technology and contributors - MIT-licensed retained layout library used by the
idtech5-uiruntime integration, with openQ4 extensions for geometry synchronization, positioned overflow, and exact focus geometry and masked targeting; retained licence notice. - Baptiste Lepilleur and the JsonCpp authors - JSON document parser used under its MIT option for editable retained UI sources; retained licence notice.
- Mikko Mononen, Eric Veach and the libtess2 contributors - SGI-B-2.0 polygon tessellator used by native retained vector paths with an openQ4 precision patch; retained licence notice.
- Q2REX Project Team - design reference for the native multiplayer chat panel, scaling and history
- MuffMode and Q4MAX - multiplayer workflow and usability references; see the competitive reference audit
- Justin Marshall - Quake4Doom and early BSE reverse engineering reference work
- Robert Beckebans - renderer modernization reference work, including RBDOOM-3-BFG inspiration
- id Software's official Doom 3 and Doom 3 BFG source releases - retained idTech 4 source lineage; see the audited provenance inventory
- id Software and Raven Software - Quake 4 and the underlying technology
- Chris Robinson and the OpenAL Soft contributors - maintained cross-platform OpenAL runtime bundled by macOS packages
- The Khronos Group and glslang contributors - GLSL parsing and SPIR-V compilation for the Vulkan authored-material support; the pinned source retains its notices, and staging includes the complete license under
licenses/. - The Khronos Group - MIT-licensed OpenGL ES API headers, with their original notices retained
- akacross (Discord user) - Thorough playtesting on Linux and Windows, a huge help moving the project forward!
openQ4 engine code is licensed under the GNU General Public License v3.0. See LICENSE for details. Files retaining Doom 3 or Doom 3 BFG Edition headers also retain their upstream notices and are accompanied by the corresponding published Additional Terms; the source-provenance inventory records their scope, pinned audit references, and intermediate lineage without offering a legal conclusion.
The game-library code in openQ4-game is derived from the Quake 4 SDK and remains subject to id Software's SDK EULA. Quake 4 assets remain the property of id Software and ZeniMax Media.
openQ4 is an independent project and is not affiliated with, endorsed by, or sponsored by id Software, Raven Software, Bethesda, or ZeniMax Media.
Website | Repository | Game Library | Issues | Releases




