WORR can be built on Linux, BSD and similar platfroms using a recent version of GCC or Clang.
WORR client requires either SDL3 (>= 3.4.0) or OpenAL for sound output. For video output, native X11 and Wayland backends are available, as well as generic SDL3 backend.
Note that SDL3 is optional if using native X11 and Wayland backends and OpenAL, which is preferred configuration.
Both client and dedicated server require zlib support for full compatibility at network protocol level. The rest of dependencies are optional.
For JPEG support libjpeg-turbo is required, plain libjpeg will not work. Most Linux distributions already provide libjpeg-turbo in place of libjpeg.
For playing back music and cinematics FFmpeg libraries are required.
OpenAL sound backend requires OpenAL Soft development headers for compilation. At runtime, OpenAL library from any vendor can be used (but OpenAL Soft is strongly recommended).
To install the full set of dependencies for building WORR on Debian or Ubuntu use the following command:
apt-get install meson gcc libc6-dev libopenal-dev \
libpng-dev libjpeg-dev zlib1g-dev mesa-common-dev \
libcurl4-gnutls-dev libx11-dev libxi-dev \
libwayland-dev wayland-protocols libdecoration0-dev \
libvulkan-dev glslang-tools \
libavcodec-dev libavformat-dev libavutil-dev \
libswresample-dev libswscale-dev
libsdl3-dev is not required for WORR's Meson fallback build. On Ubuntu 24.04
and newer, the Wayland decoration package is libdecoration0-dev; older
releases may still provide libdecor-0-dev.
On macOS, install build dependencies with Homebrew:
brew install meson ninja pkg-config cmake sdl3 openal-soft libpng \
jpeg-turbo vulkan-loader molten-vk glslang
On macOS, the vulkan renderer runs through SDL3 + MoltenVK. rtx is not
expected to work on current macOS Vulkan stacks.
If you intend to build just dedicated server, smaller set of dependencies can be installed:
apt-get install meson gcc libc6-dev zlib1g-dev
Users of other distributions should look for equivalent development packages and install them.
WORR uses Meson build system for its build process.
Setup build directory (arbitrary name can be used instead of builddir):
meson setup builddir -Dbase-game=basew -Ddefault-game=basew
Review and configure options:
meson configure builddir
WORR-specific options are listed in Project options section. They are
defined in meson_options.txt file.
E.g. to install to different prefix:
meson configure -Dprefix=/usr builddir
Finally, invoke build command:
meson compile -C builddir
To enable verbose output during the build, use meson compile -C builddir -v.
WORR uses .install/ as the local distributable staging root. Refresh it after
every build so runtime/package workflows always consume current binaries and
assets.
On Linux/macOS:
python3 tools/refresh_install.py --build-dir builddir --install-dir .install --base-game basew
On Windows:
python tools\refresh_install.py --build-dir builddir --install-dir .install --base-game basew --platform-id windows-x86_64
The refresh command performs post-build staging and install packaging in one
pass: it recreates .install/, copies runtime binaries, syncs base game
payload, writes .install/basew/pak0.pkz from the canonical repo assets/
tree, and can validate staged files for a specific release target.
Published releases keep the same basew/ gamedir used by local staging.
Client launchers now ship with explicit arch suffixes such as
worr_x86_64.exe, and dedicated servers ship as worr_ded_x86_64(.exe).
You need to have either full version of Quake 2 unpacked somewhere, or a demo. Both should be patched to 3.20 point release.
Run sudo ninja -C builddir install to install WORR system-wide into
configured prefix (/usr/local by default).
Copy baseq2/pak*.pak files and baseq2/players directory from unpacked
Quake 2 data into /usr/local/share/worr/basew to complete the
installation.
Alternatively, configure with -Dsystem-wide=false to build a ‘portable’
version that expects to be launched from the root of Quake 2 data tree (this
is default when building for Windows).
On Windows, WORR automatically sets current directory to the directory WORR executable is in. On other platforms current directory must be set before launching WORR executable if portable version is built.
WORR supports playback of background music ripped off original CD in Ogg
Vorbis format. Music files should be placed in music subdirectory of the game
directory in format music/trackNN.ogg, where NN corresponds to CD track
number. NN should be typically in range 02-11 (track 01 is data track on
original CD and should never be used). GOG naming scheme which has tracks 02-21
(with extra tracks for rogue and xatrix addons) is also supported.
Depending on FFmpeg configuration, music in several other formats can be transparently supported: FLAC, Opus, MP3 and WAV.
MinGW-w64 cross-compiler is available in recent versions of all major Linux distributions.
Library dependencies that WORR uses have been prepared as Meson subprojects and will be automatically downloaded and built by Meson.
For Vulkan/RTX renderer builds you also need Vulkan headers/loader plus
glslangValidator available in your toolchain environment.
To install MinGW-w64 on Debian or Ubuntu, use the following command:
apt-get install mingw-w64
It is recommended to also install nasm, which is needed to build libjpeg-turbo with SIMD support:
apt-get install nasm
For Windows CI/MSYS2 builds, install the MinGW Vulkan toolchain packages as well:
pacman -S mingw-w64-x86_64-vulkan-headers \
mingw-w64-x86_64-vulkan-loader \
mingw-w64-x86_64-glslang
Meson needs a correct cross build definition file for compilation. Provide your own project-local cross file tuned to your compiler/toolchain and package layout. Refer to Meson documentation for cross-file format and usage details.
Setup build directory:
meson setup --cross-file x86_64-w64-mingw32.txt -Dwrap_mode=forcefallback builddir
Build:
meson compile -C builddir
It is possible to build WORR on Windows using Visual Studio 2022 (or later) and Meson.
Install Visual Studio and Meson using official installers.
Optionally, download and install nasm executable. The easiest way to add it
into PATH is to put it into Program Files/Meson.
For Vulkan/RTX renderer builds with Visual Studio, install a Vulkan SDK (or an
equivalent toolchain that provides Vulkan headers, loader libraries, and
glslangValidator).
The build needs to be launched from the appropriate Visual Studio command
prompt, e.g. x64 Native Tools Command Prompt.
Change to WORR source directory, then setup build directory:
tools\meson_setup.cmd setup -Dwrap_mode=forcefallback builddir
Do not use --native-file meson.native.ini with MSVC. That file targets
the Clang+LLVM toolchain; using it with Visual Studio causes linker failures
(LNK4044, LNK1107). See BUILD_QUIRKS.md for details.
If Meson reports that it cannot find a Windows resource compiler, the
wrapper sets WINDRES to tools/rc.cmd, which locates llvm-rc.exe when
available.
Build:
meson compile -C builddir