vkQuake is a port of id Software's Quake using Vulkan instead of OpenGL for rendering. It is based on the popular QuakeSpasm and QuakeSpasm-Spiked ports and runs all mods compatible with QuakeSpasm like Arcane Dimensions.
Improvements over QuakeSpasm include:
- Better performance
- The game can run at higher frame rates than 72Hz without breaking physics
- A software Quake like underwater effect
- Better color precision reducing banding in dark areas
- Proper mip mapping for water surfaces to reduce aliasing
- Native support for anti aliasing and anisotropic filtering
- More modern protocol to avoid certain movement issues (from QSS)
- Support for custom mod HUDs (from QSS)
- Support for scriptable particles (from QSS)
Copy all files inside the vkquake-<version>_win64
or vkquake-<version>_win32
folder in the zip to the Quake base directory. Overwrite any existing files. Afterward to run the game just execute vkQuake.exe
.
Copy all files inside the vkquake-<version>-linux64
folder in the tar archive to the Quake base directory. Overwrite any existing files. Run vkquake.AppImage
.
📝 Note: Make sure all data files are lowercase, e.g. "id1", not "ID1" and "pak0.pak", not "PAK0.PAK". Some distributions of the game have upper case file names, e.g. from GOG.com.
OpenBSD includes vkQuake in the standard package repositories since version 6.6.
If you're running OpenBSD 6.6
or greater you can install the package with:
$ pkg_add vkquake
vkQuake has initial support for playing the 2021 re-release content. Follow installation instructions as above but copy the files into the rerelease folder.
vkQuake shows basic usage of the API. For example it demonstrates render passes & sub passes, pipeline barriers & synchronization, compute shaders, push & specialization constants, CPU/GPU parallelism and memory pooling.
Clone the vkQuake repo from https://github.com/Novum/vkQuake.git
Prerequisites:
- Git for Windows
- A Vulkan-capable GPU with the appropriate drivers installed
Install Visual Studio Community with Visual C++ component.
Open the Visual Studio solution, Windows\VisualStudio\vkquake.sln
, select the desired configuration and platform, then
build the solution.
Setup your MinGW-w64 environment, e.g. using w64devkit or MSYS2.
Build 32 bit (x86) vkQuake:
cd vkQuake/Quake
make -f Makefile.w32
Build 64 bit (x64) vkQuake:
cd vkQuake/Quake
make -f Makefile.w64
If you are on Linux and want to cross-compile for Windows, see the build_cross_win??.sh
scripts.
Make sure that both your GPU and your GPU driver support Vulkan.
To compile vkQuake, first install the build dependencies:
Ubuntu:
apt-get install git make gcc libsdl2-dev libvulkan-dev libvorbis-dev libmad0-dev libx11-xcb-dev
Arch Linux:
pacman -S git flac glibc libgl libmad libvorbis libx11 sdl2 vulkan-validation-layers
📝 Note: For vkquake > v0.50, you will need at least v1.0.12.0 of libvulkan-dev (See #55).
Then clone the vkQuake repo:
git clone https://github.com/Novum/vkQuake.git
Now go to the Quake directory and compile the executable:
cd vkQuake/Quake
make -j
📝 Note: vkQuake 0.97 and later requires at least SDL2 2.0.6 with enabled Vulkan support. The precompiled versions in some of the distribution repositories (e.g. Ubuntu) do not currently ship with Vulkan support. You will therefore need to compile it from source. Make sure you have libvulkan-dev installed before running configure.
To compile vkQuake, first install the build dependencies with Homebrew:
brew install molten-vk vulkan-headers sdl2 libvorbis flac mad
Then clone the vkQuake repo:
git clone https://github.com/Novum/vkQuake.git
Now go to the Quake directory and compile the executable:
cd vkQuake/Quake
make
Quake has 4 episodes that are split into 2 files:
pak0.pak
: contains episode 1pak1.pak
: contains episodes 2-4
These files aren't free to distribute, but pak0.pak
is sufficient to run the game and it's freely available via the
shareware version of Quake. Use 7-Zip or a similar file archiver to extract
quake106.zip/resource.1/ID1/PAK0.PAK
. Alternatively, if you own the game, you can obtain both .pak files from its install media.
Now locate your vkQuake executable, i.e. vkQuake.exe
on Windows or vkquake
on Ubuntu. You need to create an id1
directory
next to that and copy pak0.pak
there, e.g.:
- Windows:
Windows\VisualStudio\Build-vkQuake\x64\Release\id1\pak0.pak
- Ubuntu:
Quake\id1\pak0.pak
Then vkQuake is ready to play.
📝 Note: This section only applies to older releases. For the 2021 re-release music will work out of the box.
The original Quake had a great soundtrack by Nine Inch Nails. Unfortunately, the Steam version does not come with the soundtrack files. The GOG-provided files need to be converted before they are ready for use. In general, you'll just need to move a "music" folder to the correct location within your vkQuake installation (.e.g /usr/share/quake/id1/music
). Most Quake engines play nicest with soundtracks placed in the id1/music
subfolder vs. sound\cdtracks
QuakeSpasm, the engine vkQuake is derived from, supports OGG, MP3, FLAC, and WAV audio formats. The Linux version of QuakeSpasm/VkQuake requires external libraries: libogg or libvorbis for OGG support, libmad or libmpg123 for MP3, and libflac for FLAC. If you already have a setup that works for the engine you're currently using, then you don't necessarily have to change it.
Generally, the below setup works for multiple engines, including Quakespasm/vkQuake:
- The music files are loose files, NOT inside a pak or pk3 archive.
- The files are placed inside a "music" subfolder of the "id1" folder. For missionpack or mod soundtracks, the files are placed in a "music" subfolder of the appropriate game folder. So the original Quake soundtrack files go inside "id1\music", Mission Pack 1 soundtrack files go inside "hipnotic\music", and Mission Pack 2 soundtrack files go inside "rogue\music".
- The files are named in the pattern "tracknn", where "nn" is the CD track number that the file was ripped from. Since the soundtrack starts at the second CD track, MP3 soundtrack files are named "track02.mp3", "track03.mp3", etc. OGG soundtrack files are named "track02.ogg", "track03.ogg", etc. FLAC soundtrack files are named "track02.flac", "track03.flac", etc. WAV soundtrack files are named "track02.wav", "track03.wav", etc.