Hexenwail

A GL 4.3 modernization of the Hexen II engine — SDL3 + OpenGL.

Just as Ironwail took QuakeSpasm and modernized its renderer, Hexenwail does the same for Hexen II. It descends from Raven Software's 2000 source release by way of Hammer of Thyrion / uHexen2, rebuilt around a modern SDL3 + OpenGL 4.3 pipeline for 64-bit Linux and Windows.

▶  Play in your browser Download Source on GitHub Report a Bug

Nothing to install — the browser launcher fetches Raven's free 1997 three-level demo, or imports your own data1. Plays offline after the first load.

A Hexen II necromancer facing a giant spider in a torchlit stone chamber, rendered by Hexenwail.
New worlds await — Wheel of Karma, by Inky.

Which version should I use?

Three living branches of the Hexen II engine, depending on what you want to play:

  • Vanilla & upstream maintenanceHammer of Thyrion / uHexen2, sezero's master branch. The reference cross-platform engine: most faithful to the original release, and the best base for general play and ongoing portability work.
  • Classic community mods (Shanjaq era)Shanjaq's fork through its final uhexen2-r6303.zip build. Many mods in the active Hexen II Discord were built and tested against this engine, so it remains the safest choice for that catalog of content.
  • Steam Deck & modern systems — Hexenwail (this project). A GL 4.3 / SDL3 modernization with gamepad support, render scaling, display presets, and Flatpak packaging, aimed at current hardware while staying mod-compatible.

What's in it

Rendering

  • Full GLSL 4.30 core pipeline — no immediate mode, no fixed-function
  • Reversed-Z depth for precision at distance
  • Lightmap atlas, batched world draws, instanced alias models
  • MSAA, FXAA, anisotropic filtering
  • Render scale (25–100%) and retro dithering
  • Display presets: Faithful, Crunchy, Retro, Clean, Modern, Ultra
  • HDR tonemap, shader-based fog, underwater warp and caustics
  • Interpolated animation decoupled from the 20 Hz physics tick

Input

  • WASD + mouselook defaults
  • Scancode bindings — works on AZERTY, Dvorak, and friends
  • Mouse-driven menus with hover, click, and scroll
  • Xbox / PlayStation / Nintendo gamepads with rumble and hot-plug
  • Type-to-search key bindings and options menus

Mods

  • Runs Wheel of Karma and Storm over Thyrion out of the box
  • Protocols 18–21 with auto-detection
  • Scrollable Mods menu with per-mod config
  • MD3 models and external texture overrides (TGA/PNG/PCX)
  • PimpModel entity overrides, extended QuakeC builtins
  • Case-insensitive file lookups

Audio

  • OGG Vorbis, Opus, MP3, FLAC and WAV music
  • Tracker music via libxmp (MOD/S3M/XM/IT)
  • MIDI via FluidSynth, or native Windows MIDI
  • Per-mod music folders and CD-track remapping
  • Underwater low-pass filter, 2048 sound channels

Requirements

Hexenwail ships no game assets. A valid copy of Hexen II is required — available from GOG. You need data1/pak0.pak and data1/pak1.pak; add portals/pak3.pak for Portal of Praevus. To just try it, the browser build can load the free 1997 demo instead, and the desktop releases ship a fetch helper for the same data.

Any GPU with OpenGL 4.3 (2012 and later) will do. See USAGE.md for external textures, Steam Deck setup, and mod configuration.

Platforms

  • 64-bit Linux / SDL3 — OpenGL 4.3 (Nix, Flatpak, tarball)
  • 64-bit Windows / SDL3 — OpenGL 4.3 (ZIP, cross-compiled from Nix)
  • Browser / WebAssembly — WebGL2, installable as a PWA on desktop, iOS and Android

Flathub and AppImage packaging are planned.

Lineage

Hexen II — Raven Software, published by id Software (1997)
→ engine source open-sourced under the GPL (2000)
Anvil of Thyrion Linux port — Dan Olson & Clément Bourdarias
Hammer of Thyrion / uHexen2 — O. Sezer (2004–2018, final release 1.5.9)
Shanjaq's additions
Hexenwail — a full GL 4.3 modernization

Hexenwail began when Storm over Thyrion shipped without a buildable Linux client. The name is Hexen + Ironwail.

Contributing

Bug reports, code cleanup, and documentation are all welcome. File an issue — the forms ask for your qconsole.log, GPU, and driver, which is what makes a report fixable. Building from source needs OpenGL 4.3, SDL3, and a C compiler; see docs/COMPILE, or use the Nix flake for reproducible builds and Windows cross-compilation.