Building Quake3e in WSL

I recently disabled Hyper-V on my main computer because Windows was having some issues with the network adapters. In Hyper-V were two VMs that I used to build Quake3e (a modern Quake 3 source port) from source for Linux and Windows. As those weren’t operational anymore, I needed a new solution.

I briefly considered just moving the existing VMs to VirtualBox (which didn’t work because of networking issues), and after that, WSL came to mind.

After installing Ubuntu 20.04 it was time to get a build environment going. After setting up the github repo, I installed the packages make gcc libcurl4-openssl-dev mesa-common-dev as per the build instructions. After that, I could already build 64-bit dedicated executables.

Next step was mingw for windows binaries. mingw-w64 took care of that.

Now I needed to create 32-bit linux binaries, because Rocket Arena 3 doesn’t have the gamecode as a qvm and therefore requires the executable to load a native library. That only works when the binary is 32-bit.

One might need some 32-bit binaries for windows too, if they are still running a 32-bit machine. For building those 32-bit binaries I tried several different things and found that installing g++-multilib did the trick.

Here are the make-commands that I came up with (replace the “16” with the number of threads you want to use):

# Linux 64bit
time make -j16 BUILD_CLIENT=0

# Linux 32bit
time make -j16 BUILD_CLIENT=0 ARCH=x86

# Windows 32bit
time make -j16 USE_RENDERER_DLOPEN=0 USE_SDL=0 PLATFORM=mingw64 ARCH=x86

# Windows 64bit
time make -j16 USE_RENDERER_DLOPEN=0 USE_SDL=0 PLATFORM=mingw64

And here are all packages that you need to install:

# Generic requirements
sudo apt install git make gcc libcurl4-openssl-dev mesa-common-dev

# Windows
sudo apt install mingw-w64

# Additional for 32-bit binaries
sudo apt install g++-multilib

# For RUNNING 32-bit binaries on Ubuntu 20.04
sudo dpkg --add-architecture i386 && sudo apt update
sudo apt install libc6:i386 libstdc++6:i386 libncurses5:i386

So that concludes my method of building Quake3e. If this is of any help to you, feel free to let me know.

Update 2023-10-8

After further testing, I was able to conclude that running the 32-bit binaries is possible on a fresh Ubuntu 22.04.3 installation with the instructions provided.

Update 2023-12-31

Who would have thought that using more threads speeds up the compile times quite a bit? I’ve added the appropiate -j16 to the make calls.