Skip to main content

Unreal Tournament GOTY/UT99 for Modern Linux

Released on November 16, 1999, Unreal Tournament (also known as UT99) is an arena first-person shooter for Multiplayer on-line competition or you can play against bots off-line. It features several game types, with more details provided at Wikipedia. The game was re-released on February 25, 2000 as Unreal Tournament Game of the Year Edition (GOTY) which included the three bonus packs released previously and additional mods, or game modifiers that had become popular. It is the GOTY version that is available from STEAM or GOG.com.

The GOG version for Windows installs in Linux and plays well using WINE, PlayOnLinux or Codeweaver's Crossover.

There is a Linux binary available in two versions, one for the original game and one for the GOTY edition. Also provided at that site is the Official Bonus Pack with a Linux installer. All these Linux installers are created with makeself.

There are some issues using such a crusty old Linux binary. Let's see why getting a Linux binary up and running is such a pain. We can follow the step-by-step recipe provided by user kwahoo2 in a Reddit discussion, which I have excerpted here and annotated for convenience.

$./ut-install-436-goty.run 
Verifying archive integrity...
Error in check sums 2145869344 1835706998

This occurs since the old version of makeself (which was used to create the installer) balks because of obsolete syntax for the head and tail UNIX commands. The fix, according to the makeself author, is to lie to your system which enables the old syntax.

$export _POSIX2_VERSION=199209

Now we can run the installer.

$ sudo ./ut-install-436-goty.run 
Verifying archive integrity...OK
Uncompressing Unreal Tournament version 436-GOTY Linux install.......
    This installation doesn't support unknown on Linux on x86_64
    Please contact Loki Technical Support at support@lokigames.com
    The program returned an error code (1)

Oops! Loki Technical Support no longer exists! The installer does not recognize a 64-bit system as legitimate and refuses to continue.

You can use the linux32 command in the following manner.

$ sudo linux32 ./ut-install-436-goty.run

The linux32 command sets an environment the app runs in allowing some compatibility on 64-bit systems. There are more details in the man page.

User kwahoo2's alternative solution to this problem is to extract the installer files and modify the setup.sh file to once again lie so the installer thinks it is installing on a 32-bit system. Of course, if you are actually installing on a 32-bit system, you can avoid this bit of subterfuge altogether.

$ sudo ./ut-install-436-goty.run --keep
$ cd ut-436-GOTY/

And use your favorite text editor to alter setup.sh as follows.

DetectARCH()
{
echo "x86"
return 0
}

Now you think you can run the installer and it will run and complete the installation. Wouldn't it be nice if someone re-built the installer so it could be used without the hacks?

Here's the final problem, the Loki installer itself inside the makeself archive has dependencies that will not permit the installer to be run. Again, it would be nice to have the Linux binary installer modified to run on modern Linux systems.

If you manage to run the installer, you should probably answer "yes" to every question. You can quit the installer when it asks you to mount the CDROM . . . because you don't have one. We'll get to that shortly.

$sudo ./setup.sh
----====== Unreal Tournament GOTY installation program ======----

You can install the bonus content at this point. It's in a makeself archive as well.

When finished, the directory structure, the desktop link and the game binaries are installed. The binaries are at version 436; do not update to version 451 since it causes problems when connecting to servers. You need only to provide the game data files.

If you purchased the game from STEAM, copy the files over to /usr/local/games/ut.

If you purchased the game from GOG, place the game installer, setup_ut_goty_2.0.0.5.exe, in a directory by itself. The installer used by GOG on all of their version 2 installers is a free-but-proprietary application named Inno Setup and a Linux tool named innoextract can be used to un-pack the installer. From the innoextract website, here is the info on extracting GOG files.
GOG.com Installers       
GOG.com installers with a 2.x.x version number on the download page or in the filename use Inno Setup 5.5.0 and cannot be extracted by innoextract 1.2 and older. Older installers use Inno Setup 5.2.3 and usually have no version in the filename.       
Some GOG.com multi-part installers with version 2.1.x or higher use RAR archives (renamed to .bin) to store the game data. These files are not part of the Inno Setup installer. However, innoextract 1.5 or newer can extract them using the --gog option if either unrar or unar is installed.
If your distro does not provide innoextract, you can download a Linux binary from their site or build it from the source code.

The innoextract app will unpack the files in  a sub-directory named ./app. The files contained in ./app should be moved to /usr/local/games/ut. You could delete the DLL files and the win32 apps, but just leave them alone; they won't hurt anything.

The Old Unreal site has some additional instructions which I will excerpt below.
 Once you've got through this, you may also install all bonus packs with the installer provided on the same page as UT's installer.        The next thing to do is to install UTGLR renderer, which corrects several bugs, brings anisotropic filter and allows users to limit framerate (and thus, avoid having the game play way too fast). There are several unofficial Linux binaries of this on the net, one that works pretty well is located on a tiny website called Let's Play UT. Download "OpenGLDrv.so - Linux port of the UTGLR renderer", then go to ut/System, make a backup of stock OpenGLDrv.so and replace it with the one you just downloaded. In order to run it, you will also need libstdc++-3-libc6.2-2-2.10.0.so and libstdc++-libc6.2-2.so.3 from Loki Compatibility Libraries [HOWTO]. Once you've downloaded loki_compat_libs-1.5.tar.bz2, decompress those two libs only and copy them to ut/System.
Now that we have an updater renderer and all the correct libraries, we should get sound working. Old Unreal also helps with that.
 I read several things on the subject on the internet. On my computer (using ALSA+PulseAudio), two things are working quite well :
- Using padsp wrapper with the Generic Audio Subsystem- Using osspd daemon with OpenAL - Using osspd with OpenAL is the best solution though, because the first one makes the game crash on some maps, and OpenAL sound provides much better quality than the other one. In order to use osspd (which must be included in your distribution if it's up-to-date enough), you have to start the daemon. With systems using systemd (Fedora or Arch Linux, for example), you just have to type 
# systemctl start osspd 
to start it and then
# systemctl enable osspd 
to have it launched on startup. For other distributions, that may use sysVinit, upstart, etc., please refer to your official documentation, that should not be very complicated either.
We're not quite finished yet. Start and end the game to ensure that sound works. Old Unreal continues.
 Make sure that sound is working, and then configure graphics using in-game dialog window.
When you're finished, just quit. Now that the ~/.loki/ut directory is created, open ~/.loki/ut/System/UnrealTournament.ini and go to [OpenGLDrv.OpenGLRenderDevice] section.        
 When you're finished, just quit. Now that the ~/.loki/ut directory is created, open ~/.loki/ut/System/UnrealTournament.ini and go to [OpenGLDrv.OpenGLRenderDevice] section.        
Then, add or modify the following lines :FrameRateLimit=90MaxAnisotropy=4You can get a more complete documentation on UTGLR website.
To play on-line multiplayer, Old Unreal also recommends that you install a DLC downloader named nploader, currently at version 0.9. Most every server offers additional files you must install. YMMV.

Native Linux Success??
That's a lot of work to get crusty old Linux binaries to be playable on a modern Linux. Here's what I do, I install the game with the GOG installer using Crossover. The Crossover installation "tie" (an installation script that pulls in whatever additional files are needed to run the game) expects you to use the STEAM version, but I have the GOG version. Here's how I install it.

GOG Installation in Crossover
In Crossover, select "Unlisted application Unreal Tournament GOTY" to install. Choose a Windows7 bottle if it does not default to one; GOG builds the games for the Windows7 platform, not the original Windows98.

Visual Enhancements
Video Renderer
There are some visual upgrades you can apply to Unreal Tournament GOTY, the easiest being an upgraded renderer. There are three to select from.

Direct3D10
The first is from Kenti.net and is a Direct3D 10 renderer. It requires two additional files to be installed, dxwebsetup.exe and vcredist_x86.exe. Instructions for installing it are here. This site also supplies Direct3D renderers for Rune, DeusEx and Unreal Gold contained in the same package with Unreal Tournament. While this renderer is supposed to have issues with v227, I have not experienced any. In the UT Video Configuration window, select Dircet3D 10 Support. At the bottom of the web page are descriptions of what the options will do. This renderer will support wide-screen formats.

Direct3D9
The second is utglr36 for Direct3D 9 renderer from this page which includes download links and instructions. It as also available in separate downloads for DeusEx and Rune, but not the original Unreal. This renderer was last updated in August, 2010.  In the UT Video Configuration window, select Dircet3D 9 Support. There is a Settings page that explains what each of the options will do.

nGlide
The third is nglide, a3Dfx Voodoo Glide wrapper from Zeus Software that translates all Glide calls to Direct3D. Some may prefer this since how the graphics appear varies depending on the renderer you select and many of these games were written for Glide and Voodoo video cards. There was a lot of 3D performance in that 16MB video card. They have a discussion forum for nglide which was active as of the day of writing this.

So we have two options for more modern renderers and one option for using the obsolete, unsupported but truest-to-original Voodoo renderer.

High Resolution Textures
All these renderers allow us to use the S3TC high-resolution textures. S3TC is a set of compression algorithms original created by S3 Graphics that are tailor-made for game graphics. Support was included in DirectX at version 6.0 and OpenGL at version 1.3. While S3 still holds the patents, those expired in October 2017, making them available to the FOSS community.

Because Unreal Gold was updated to use the Unreal Tournament game engine, the same high-res textures used for Unreal Gold also work for Unreal Tournament. They can be downloaded from ModDB. They all come from Unreal Texture. The textures can also be obtained at UT-files.

Essential Files
At The Liandi Archives, there is a list of, and links to, all patches, Bonus packs, demos and other content including mods and Easter Eggs. Here's the download link to the  Windows Demo and the  Linux Demo if you just want to test it out. Crossover is available as a time-limited full-feature demo if you want to try that out.

Bonus Packs
The GOG version comes with the first three official Bonus Packs installed which provided additional maps and textures and minor fixes to the game. The fourth Bonus Pack is not provided by GOG, but is available from here. Game updates and map packs are distributed in umod, or Unreal Modules, archives. GOG has disabled umod support and the only available cross-platform tool, umodpack, is no longer maintained and relies on obsolete versions of Perl. What to do?

Fortunately, is is possible to restore umod functionality to the GOG version by installing an app mentioned on UTModsFAQ, the UTRegistryFixingUtility. Use the "Install software into bottle" option to install it (it merely installs registry keys). You may then use "Run command" from your UT-GOTY bottle no navigate to the BonusPack4.umod file, and it will install the umod file's contents.

Other win32 alternatives such as UMODExtractor.exe, UMODWIZARD.exe, UMOD_explorer.exe and other UT-related utilities and files can be obtained from ut-files.com.

Enable Boss and Warboss Models
Once you have beaten the game by working your way up the ladder, you are rewarded with some special models. To get these models without beating the game, edit User.ini as follows.
[BotPack.Ladder]
HasBeatenGame=True

The Final Fix
In your UnrealTournament.ini file, increase the default value of CacheSizeMegs to 128, assuming you have lots of RAM.

WOW!
Over 3,000 views and only 1 comment! Was I that that thorough?

RESOURCES

Index of Other Games for Modern Linux

Unreal Tournament - Archived Homepage

Unreal Tournament - PC Gaming Wiki

UT Mods FAQ

UmodPack Archived Page -Dec, 2015

OpenUT FAQ - May, 2000

Old Unreal

Liandri Archives

Unreal WIKI

Unreal Admin WIKI

Unreal Community Discussions - GOG

Unreal Support Issues - GOG

Unreal Community Discussions - STEAM

UT99 On New Hardware - Epic Games

UT99 Community Forums

UTFiles.com



Comments

GoUT2019 said…
If you get a SIGSEGV at the time OpenGL is starting up, it's because you don't have all the required 32 bit libraries.

Run this:

apt install libgl1-mesa-dri:i386 libgl1-mesa-glx:i386 libc6:i386

Command from here, related to missing 32 bit libraries:

https://forums.linuxmint.com/viewtopic.php?t=197709
SimpleClass said…
I am getting this error after installing and executing ut:

Unreal engine initialized
Bound to SDLDrv.so
Joystick [0] : Unknown Joystick
SDLClient initialized.
Bound to Render.so
Lighting subsystem initialized
Rendering initialized
LoadMap: Entry
Bound to Fire.so
Case-insensitive search: Botpack -> ..\System\BotPack.u
Bound to IpDrv.so
appError called:
Class Actor Member Owner problem: Script=48 C++=52
Executing UObject::StaticShutdownAfterError
Executing USDLClient::ShutdownAfterError
Signal: SIGIOT [iot trap]
Aborting.
Exiting.
Name subsystem shut down

Popular posts from this blog

DOS4GW.EXE Version 2.01a and Alternative DOS Extenders

DOS4GW.EXE The Tenberry DOS extender DOS4GW.EXE was used by many early DOS games. I still enjoy playing many of these games and DOS4GW.EXE is usable with DOSBox , so they can be played on Linux. However, the version of DOS4GW.EXE that was included with the game was whatever was current at the time. The most recent version that includes many bugfixes that possibly affected the games when used with DOSBox have been fixed in the latest version, 2.01a. It's not free at US$49, but you can downloaded it here . Simply substitute it for whatever version of DOS4GW.EXE your game provided and enjoy the bug-fixed goodness. Tenberry also makes a "high-performance" "pro" version of DOS4GW.EXE, but it costs $300. I think that they could sell quite a few of these to hobby users (since, you know, DOS is dead) for US$5. Open Souce to the Rescue There are better performing, free and Open Source alternatives available and worth a look. DPMI Explained Let's unders...

Return to Castle Wolfenstein for Modern Linux

Return to Castle Wolfenstein is a first-person shooter originally released on November 19, 2001. The game, like many other classic games, is available at GOG.com and costs only US$5.99. iortcw for Linux Don't bother with old and crusty Linux binaries offered by idsoft; they are problematic and it's painful to use them on a modern Linux. Fortunately for us, there are more modern GPL-licensed Linux binaries available for 32- and 64-bit systems as well as high resolution textures packages. The project at GitHub provides source code that can also be compiled for MS Windows using MinGW. iortcw for Windows and Mac You can download pre-compiled binaries for 32- and 64-bit Linux, MS Windows and Mac from here . Let's put our files in /usr/local/games/rtcw . As root, extract the downloaded .ZIP file for your architecture to  /usr/local/games/rtcw . All we are missing are the game data files. I purchased them from GOG.com. The game installer downloaded from GOG.com can be ...

Unpack those .EXE game files from GOG.com (Plus other un-packers)

I just came upon innoextract today. I have many of the wonderful games from GOG.com, some of which have native Linux Clients. Before now, I've had to use PlayOnLinux or Crossover to install these for use with WINE, then add the Linux client. InnoSetup as a way to create an installer to install the games on Windows.  Daniel Scharrer has created innoextract to allow the unpacking of those archives on a non-Windows platform. The website provides information on using innoextract , but this information from the page is very useful: GOG.com Installers GOG.com installers with a 2.x.x version number on the download page or in the filename use InnoSetup 5.5.0 and cannot be extracted by innoextract 1.2 and older. Older installers use InnoSetup 5.2.3 and usually have no version in the filename. Some GOG.com multi-part installers with version 2.1.x or higher use RAR archives (renamed to .bin) to store the game data. These files are not part of the InnoSetup installer and require...