Unreal Tournament in 2024
Part 1: Installing Unreal Tournament (99 and 2004)
A few weeks ago I got a random urge to play Unreal Tournament. I haven’t played it in years, and I started to wonder exactly how easily one can do that in 2024. Last year, Epic delisted Unreal Tournament games from digital storefronts and turned off online services. Of course, I still have my physical copies of Unreal Tournament and Unreal Tournament 2004. So… how hard could it be?
Windows: Very Easy Thanks to OldUnreal
Unreal Tournament (1999)
Let’s start with Unreal Tournament on Windows 11. I have the original CD version (not the Game of the Year edition). I dropped in the CD — yes, I still have an optical drive just for weird shit like this — and installed it, just like it was 1999. The retail version was installed in no time.
To get it running smoothly, the OldUnreal Patch Repository for Unreal Tournament is a one-stop shop. It patches the game with all the official patches, plus patches by the OldUnreal team:
Our patches fix hundreds of stability, security and performance problems in the game client, the server, and in Unreal Editor. They also add support for modern platforms and operating systems (such as macOS Catalina), and add new 3d renderers, audio drivers and minor features (such as raw input and high-resolution font/GUI scaling) to better leverage the capabilities of modern gaming systems.
Simply download and run the installer for (at the time of writing) patch 469d. That’s it. I found it doesn’t run as good as I’d hoped… there’s some choppiness to it, but it is definitely playable.
Unreal Tournament 2004
UT2004 was pretty much the same. I have the 2 Disc DVD edition. Dropped it in, ran the installer. Unreal Archive hosts the last official patch for UT2004, which installs with no issues. There are some extra steps I’d recommend for getting better widescreen support which I’ll get to below, but otherwise it was that easy. Why am I even writing about installing this on Windows? It’s really that easy.
UT99 on Linux Was a Non-Starter
Both games had official, native Linux versions, and as I’m sort of getting back into Linux these days, I was excited to try it! I’ve never run a store-bought game with native Linux binaries. But… the Unreal Tournament disc doesn’t come with it. After looking for the installer on the disc, I found a tiny footnote: A downloadable Linux version is available at www.unrealtournament.com
. It should go without saying that in 2024, there is no downloadable Linux version of Unreal Tournament (1999) available at www.unrealtournament.com
. I am sure there are places to acquire it out there but I didn’t want to dig into it.
Installing Unreal Tournament 2004 on Linux
UT2004 does have a Linux install script on the disc and it immediately failed. And then, even when I finally found the solution, it didn’t find the binary file, then didn’t load due to a missing library, then didn’t have sound. I found a lot of people who had similar issues, so this section is sort of the inspiration for this entire post. Let’s tackle each problem in sequence…
Please mount the Unreal Tournament 2004 Play Disk CDROM
After mounting the disc and running the script, I was met with the message Please mount the Unreal Tournament 2004 Play Disk CDROM
despite running the script from that mounted disc. I tried mounting the DVD in all sorts of different directories, but it turns out that the installer was looking for an environment variable called SETUP_CDROM
which had to be set manually. For reasons I couldn’t figure out, it didn’t work with the default mount location, so I manually mounted it to /media/dvd
. Run the following as root, rather than with sudo
, because when I attempted to run with sudo
, it didn’t maintain the environment variable. (Note that my external DVD drive appeared as /dev/sr0
, replace that with your drive):
mkdir /media/dvd
mount /dev/sr0 /media/dvd
export SETUP_CDROM=/media/dvd
cd /media/dvd
sh linux-installer.sh
Before moving on, you can also install the Patch 3369 from Unreal Archive. Simply unzip it and copy its contents to the UT2004 folder.
./ut2004-bin: not found
Install completed successfully, but then when I attempted to start the game, it failed to even find the right file to load. It creates a launcher script at the default location of /usr/local/games/ut2004/ut2004
, which when run, throws the error ut2004: 49: exec: ./ut2004-bin: not found
. The script is attempting to call a ut2004-bin
file from the System/
directory. This file does exist but does not load. I am guessing this is because it is the 32-bit binary, as there is also a ut-2004-linux-amd64
file in this same directory. On line 49 of the ut2004
script, I simply changed which binary it is attempting to load.
Change: exec "./ut2004-bin" $*
To: exec "./ut2004-bin-linux-amd64" $*
error while loading shared libraries: libstdc++.so.5
Next hurdle: the game now finds the binary, but fails to load because it needs libstdc++.so.5
. If you are on Debian, good news! It’s in the Debian repositories. Simply run sudo apt update && sudo apt install libstdc++5
and you are set. I’m not sure if it works on Ubuntu or any other Debian / Ubuntu derivatives. Your mileage may vary.
Are you on Fedora? GOOD LUCK! I spent about 20 minutes looking around for a way to install libstdc++.so.5 on Fedora 40. I did manage to get it working but I have no idea how advisable it is. I found an rpm package on pkgs.org for libstdc++5 for Mageia 9. I grabbed the .rpm file and installed it, which only worked by explicitly ignoring dependencies. Do I recommend doing any of this? No. I’m not an expert in Fedora and this was during a brief hallucinatory period where I thought I might want to use Fedora. I am, as of writing, back on Debian. But in case you feel like rolling the dice, here’s what I did, but I take no responsibility for screwing up your system. You’ve been warned.
wget https://distrib-coffee.ipsl.jussieu.fr/pub/linux/Mageia/distrib/9/x86_64/media/core/release/libstdc++5-3.3.6-19.mga9.x86_64.rpm
sudo rpm -i -nodeps libstdc++5-3.3.6-19.mga9.x86_64.rpm
Maybe if you are more knowledgeable about Fedora Linux you’ve got a better way to do this.
No Audio
The final issue is the lack of audio. This one is thankfully quite simple; we just need to symlink the system’s libopenal
file to the ut2004/System
folder:
cd /usr/local/games/ut2004/System
sudo mv openal.so openal.so.old # move the existing file
sudo ln -s /usr/lib/x86_64-linux-gnu/libopenal.so.1 ./openal.so
On Fedora the file is in a different location, and you may also need to make sure that the openal-soft
package is installed, which was not installed on my system:
sudo dnf install openal-soft
cd /usr/local/games/ut2004/System
sudo mv openal.so openal.so.old # move the existing file
sudo ln -s /usr/lib64/libopenal.so.1 ./openal.so
Unreal Tournament 2004 should now run, with audio.
Widescreen Support
There’s one last optional thing I want to tackle. Unreal Tournament 2004 was released in… well, 2004, an era before we were all using wide screens. And in my case, I’m even using an ultra wide screen at 3440x1440. The HUD and the field of vision look really screwed up out of the gate. Thankfully, somebody kindly released a fix for that. Alex Strout (GitHub) has widescreen fixes for UT99 and UT2004. Both are very easy to install. All the instructions are on the GitHub pages, so I won’t go over them here. There are two things I did want to call out that tripped me up:
First, the location of the User.ini
will be different on Windows compared to Linux. In Windows, this is in your installation directory, e.g. C:\Program Files (x86)\UT2004\System\User.ini
, while on Linux, it will be in your home directory at ~/.ut2004/System/User.ini
.
Second, the instructions indicate that InputClass=Class'foxWSFix.foxPlayerInput'
should be in the file twice, onece under [Engine.PlayerController]
and once under [XGame.xPlayer]
and that you should add it if missing. My User.ini
file did not have the [XGame.xPlayer]
heading at all and I had to add it at the bottom of the file:
[XGame.xPlayer]
InputClass=Class'foxWSFix.foxPlayerInput'
Conclusion
And that’s it for now! Maybe at some point I will tackle getting Unreal Tournament (1999) installed on Linux, too, but I spent enough time just trying to get the Linux binaries I had for UT2004 to work.
Next time, I’m going to go over setting up dedicated servers in Docker containers. It’s surprisingly easy to do, but as simple as it is, I feel like this post has gone on enough. So stay tuned for that.
There’s a process out there to get connected to community-run servers, which I haven’t even explored yet. So maybe that’ll happen in the future, too. In any case, if this post inspired you to dust of Unreal Tournament or UT2004, I hope it’s everything you remembered.