After installing and running Unreal Tournament (UT99) using Wine, I thought it would be good to try running a Linux-native version of the game.

Thankfully, this is reasonably easy, and seems very stable - more so than running under Wine.

Before you start, you’ll need the original Unreal Tournament game files, most easily obtainable by installing the Steam version using Wine.

Part Two

As per the previous part, I’m using Debian Sid, so these instruction may need some manual conversion to your distribution of choice, and you’ll need to enable multi-arch (UT is 32-bit only).

  • To begin, we’ll use game-data-packager to build Debian packages, which also includes scripts to download and apply the latest patch. Game Data Packager is really super cool, and can build deb packages for loads of games. It’s worked pretty well for me getting Freespace 2 running as well for example. Install it now:

    $ sudo aptitude install game-data-packager game-data-packager-runtime 
    
  • Now, we’ll build the shared data (maps, textures, music, etc) and the actual executable binary packages. Pass the path to your UT install (here, I’m passing it the path to the Steam install I did in Part One):

    $ game-data-packager ut99 --everything ~/.wine/ut/drive_c/Steam/steamapps/common/Unreal\ Torunament/ --binary-executables
    
  • Once this is done, you’ll have three packages you can install, and they can be installed using dpkg:

    $ sudo dpkg -i unreal-ut99-shared-data_200+58_all.deb
    $ sudo dpkg -i ut99_451+58_i386.deb
    $ sudo dpkg -i ut99-data_451+58_all.deb
    
  • The game depends on SDL 1.2, and will also a require 32-bit PulseAudio OSS pre-load library for sound to work:
    $ sudo aptitude install libsdl1.2debian:i386 libpulsedsp:i386
    
  • As of this writing, there’s a long-outstanding bug with the padsp script which can’t launch 32-bit applications. The the bug report includes a suggested fix:

    $ sudo cp /usr/bin/padsp /usr/bin/padsp32
    $ sudo sed -i 's/\/x86_64-linux-gnu\/pulseaudio\//\/i386-linux-gnu\/pulseaudio\//g' /usr/bin/padsp32
    

    This provides a new 32-bit capable padsp32 pre-loader command, which we’ll use to launch the game.

  • Now, you’ll need to attempt running the game. Don’t worry if it fails or likely doesn’t have sound at the moment. This step is primarily to seed the ~/.loki/ut directory, where the local game files will be placed, which we’ll modify shortly. Launch with the padsp32 command as follows:

    $ padsp32 ut99
    

    Quit the game if it worked, and look at the contents of ~/.loki/ut - you should now see a familiar-looking System directory layout and contents.

  • Now, lets get a newer OpenGL renderer, with better support for things like decals and detail textures, hugely improving the graphics of the game. Download the UTGLR renderer from letsplayut.com (mirror download) and place it in ~/.loki/ut/System. You’ll need to remove the current symlink first:
    $ unlink ~/.loki/ut/System/OpenGLDrv.so
    
  • Modify ~/.loki/ut/System/UnrealTournament.ini to make use of this renderer, and while we’re here, change the audio device:
    [Engine.Engine]
    GameRenderDevice=OpenGLDrv.OpenGLRenderDevice
    RenderDevice=OpenGLDrv.OpenGLRenderDevice
    AudioDevice=Audio.GenericAudioSubsystem
    
  • Now, run the game again with padsp32 ut99, hopefully there’s sound, and a better looking game!
  • Refer to the UTGLR Settings page for information about other rendering options you might tweak, and also refer to part one for setting the frame rate and limit if desired.

That’s it. You should hopefully have a fully Linux-native working Unreal Tournament installation. It’s also fully compatible with all multiplayer servers I tried.

You can also install mods and maps by installing them under the ~/.loki/ut directory - just create Maps, Textures, Music directories under there, and extract maps and mods to the appropriate places, and they’ll show up in-game.

I’d like to perhaps investigate writing some simple scripts to manage installing maps and things into the appropriate places, to make life easier and UT on Linux even more appealing.

For some additional info in case you have any other issues, check some of the points on the PC Gaming Wiki.