Don't want to see articles from a certain category? When logged in, go to your User Settings and adjust your feed in the Content Preferences section where you can block tags!
We do often include affiliate links to earn us some pennies. See more here.

The sad case of Unreal Engine 1 on Mesa and Linux in 2020

By - | Views: 81,752

One of the great game industry battles of the turn of century was the standoff between Quake III Arena and Unreal Tournament. With both multiplayer focused first person shooters released just weeks apart from one another, that the two games would wind up going head to head was inevitable. If pressed I am always going to have to say I favour the former, but the remarkable thing for us Linux users is that, for a time, both games lived harmoniously under the same publisher.

More than any other developer, Loki Software can be credited with founding the Linux games industry, and with them still riding high at the time, they went on to publish both titles on our platform. More than just popular games, Quake III Arena and Unreal Tournament were also flagships for the engine technology within. Unreal Engine 1 and id Tech 3 would go on to be used in dozens of other titles, some of which would also be ported by Loki Software before their closure in 2002.

While Quake III Arena was granted its place in eternity when its source code was released in 2005, community support for Unreal Tournament was able to breathe some new life into the game, even with the limitations of the closed binary. By 2018 however the game was no longer launching for Mesa users. Due to certain core files being statically linked to an archaic libstdc++ library, the game can only be ran outside of Software mode on the free graphics stack with the use of a hacked Mesa patch.

After spinning my own Mesa packages by use of the Arch Build System, I reinstalled Unreal Tournament using the data from GOG.com and the ut-install-436-goty.run Linux installer. I could now start the game without producing a segmentation fault, and other than some sound quality problems everything seemed to be normal. After installing a third party OpenGL rendererOpenAL audio device, and S3TC textures the game was looking and sounding better than ever before.

 

With my love of a straight bot DeathMatch, it took me a while to discover that changing to any other kind of game mode from the menu would cause the game to crash with a "Signal: SIGIOT [iot trap]" error. This, along with the need to apply Mesa patches in the first place, severely hampers the game for use at my next LAN party. With the Linux versions of Unreal Gold, such as those provided by icculus.org or Unreal 227, also relying on this game to work, that takes them out of contention as well.

As I mentioned before, Unreal Tournament was not the only Unreal Engine 1 game Loki Software worked on. Rune has to be the most fitting port they ever produced, with the company's namesake Norse trickster god even appearing as the archvillain. It was also one of the last ports that Loki Software released before closing down, and as such is just modern enough to make me wince at the fact I am no longer capable of getting it to work.

With a patched Mesa the game launches and renders fine, but you can no longer load your saved games while using OpenGL, meaning you are once again stuck with Software mode. The crackling stuttering audio I encountered with Unreal Tournament is also present here, but is now unavoidable due the game shipping only with its default OpenAL audio device. I tried using some of the alternatives available for Unreal Tournament, but Rune refused to load them.

I remember playing through the whole game close to ten years back when I was still on Fedora and having a good time with it. Rune has a very solid if lengthy campaign with tight controls that plays more like its first person shooter contemporaries than many other third person games did. The developer Human Head Studios would go on to work on the original Prey, which also supports Linux and I have written about previously.

 

If there is one silver lining in all of this, it is that all of these games can be made to work reasonably well with WINE or Proton without the need to fiddle around with Mesa to get them to launch. Performance does suffer if you do not supply an OpenGL renderer such as those by Chris Dohnal, but once properly configured the games can be made to run almost as if they were native applications. I even got a higher frame rate in Unreal Tournament.

Launching them still requires some patience, as they all seem prone to false starts, but once you do get to the main menus all seems to be well. This also allows you to reunite the games with their brethren Deus Ex, which if not for the closure of Loki Software would have become a native Linux title. I can confirm that Rune Gold, Unreal Gold, Unreal Tournament GOTY Edition, and Deus Ex GOTY Edition from GOG.com all can be made to WINE well with a few tweaks.

For an engine with such a pedigree on Linux this outcome is still disappointing. It may just be my pride getting in the way, but there is something special about being able to get the old native binaries to work, especially in the case of Rune where I have it on disc with the full retail packaging. It also makes me wonder how well my modern library of native titles is going to run in twenty years time, and if I will be forced to use a compatibility layer to run some of them too.

According to Ryan Gordon's recent Patreon post, the former Loki Software employee once came close to reviving Rune on Linux in some form but it "slipped through [his] fingers". The source code release of Quake III Arena has allowed it to transcend all the boundaries imposed by time, while its erstwhile adversary begins to languish. For those who value games as more than just ephemera, I can only hope such releases start to become the norm.

UPDATE 1: Since publishing this article a new modified build of Unreal Tournament has come to light. This version has been made to work around the symbol collision with recent versions of libstdc++ which in turn produced the segmentation faults with modern versions of Mesa. I have also been made aware of a Lutris script that allows their package of Unreal Gold to run with Mesa.

Also thanks to adamhm for providing a method that allows all of the Unreal Engine 1 games to start reliably with WINE.

UPDATE 2: The OldUnreal project has released an updated build of Unreal Tournament with the blessing of Epic Games that no longer suffers from the issues mentioned here. More information can be found in this article by Liam Dawe.

Article taken from GamingOnLinux.com.
35 Likes
About the author -
author picture
Hamish Paul Wilson is a free software developer, game critic, amateur writer, cattle rancher, shepherd, and beekeeper living in rural Alberta, Canada. He is an advocate of both DRM free native Linux gaming and the free software movement alongside his other causes, and further information can be found at his icculus.org homepage where he lists everything he is currently involved in: http://icculus.org/~hamish
See more from me
The comments on this article are closed.
52 comments
Page: «5/6»
  Go to:

mos May 12, 2020
a "227 patch" but this time for UT99 is being worked on by the same guys from OldUnreal, since Epic finally gave its blessing (who'd understand the corporate shenanigans??) - https://www.oldunreal.com/cgi-bin/yabb2/YaBB.pl?num=1569587267/135
mos May 12, 2020
Quoting: Perkeleen_VittupääSoo, could all this be possible to package somehow to a state that even a non-tech-savvy random occasional gamer could then enjoy Unreal Tournament on Linux?
moving a couple files around and setting an env var or two isn't "tech". nevermind being "savvy" about it.
Purple Library Guy May 13, 2020
Quoting: mos
Quoting: Perkeleen_VittupääSoo, could all this be possible to package somehow to a state that even a non-tech-savvy random occasional gamer could then enjoy Unreal Tournament on Linux?
moving a couple files around and setting an env var or two isn't "tech". nevermind being "savvy" about it.
Ooo, aren't we 'leet?
mos May 14, 2020
Quoting: Purple Library Guy
Quoting: mos
Quoting: Perkeleen_VittupääSoo, could all this be possible to package somehow to a state that even a non-tech-savvy random occasional gamer could then enjoy Unreal Tournament on Linux?
moving a couple files around and setting an env var or two isn't "tech". nevermind being "savvy" about it.
Ooo, aren't we 'leet?
ooh is reading already considered l33t among the millenials? guess we have to start producing manuals in the form of instant messages. with emojis ofc. and video guides on tiktok! now that would be perfect for the modern layman!
mos May 14, 2020
Quoting: Guest./play.it has been developed especially for people who do not feel at ease patching game files or editing environment variables. By the way, there is more than that to do in order to get Unreal Tournament run flawlessly on a modern Linux distribution ;)

The downside to this solution is that we only support the version sold on GOG for now.
yeah yeah
it does everything by itself! make your documents look professional without having to know how to turn the computer on anymore!

all these frontends stuff lutris playonlinux etc etc is bogus and broken.. oh the fun when ppl start asking around on the forums HOW DO I PLAY IT IN LINUX PLAYONLINUX NOT WORK HLP PLS! then you find out it installed some 10 yo wine version or something

look its all down to support
and supporting complex interactive multimedia apps meant to run on a different system or a 20 yo one is hard. 99% you'll be better off actually knowing what you do if you want a better experience
or just buy a supported AAA game and be done with it


Last edited by mos on 14 May 2020 at 6:55 am UTC
Purple Library Guy May 14, 2020
Quoting: mos
Quoting: Purple Library Guy
Quoting: mos
Quoting: Perkeleen_VittupääSoo, could all this be possible to package somehow to a state that even a non-tech-savvy random occasional gamer could then enjoy Unreal Tournament on Linux?
moving a couple files around and setting an env var or two isn't "tech". nevermind being "savvy" about it.
Ooo, aren't we 'leet?
ooh is reading already considered l33t among the millenials? guess we have to start producing manuals in the form of instant messages. with emojis ofc. and video guides on tiktok! now that would be perfect for the modern layman!
Sigh. Fine, I'll give you something to read.
First let me say your initial statement was simply false. If you talk to people of any age group and ask them what an "env var" is, most will not be able to tell you. So yes, it is tech, and yes, it is being savvy about it, and so yes, claiming that it is neither is specious nonsense whose only purpose is to parade an affectation of superiority.

Now. I'm not saying that your level of technical sophistication is elite. I'm saying that your attitude towards technology and those who are from your perspective techno-peasants is that of a 'leet teenage hacker, what they used to call script kiddies. I see people every day here on GamingOnLinux who are deeply technically knowledgeable, whose knowledge I respect, and who are polite, helpful and uncondescending in dealing with people who don't know their fields. You're not acting like them. Incidentally, long as we're talking about "modern" and "millennials", I think it's pretty likely I'm older than you.

As to the validity of your attitude towards non-technical people: A computer is a tool for doing things. Some people have deep knowledge of how to do the things that in turn make it do things . . . programming, sysadminning and so on. I have a fair amount of respect for such people, they're good skills. But those skills are not and should not be required to just use the tool. If someone is an artist, I am not going to claim their art is unworthy because they can't write their own paint program, or that they should be disallowed from doing art on the computer if they don't have other unrelated computer skills. Any more than I'd claim a programmer shouldn't be allowed to use a computer he's not capable of doing good art on.

Now, here, we are talking about playing games for crying out loud. No, people should not be barred from playing computer games because they can't set "env vars", whatever the fuck those are. Sometimes that sort of thing is unavoidable, but it is not a desired situation.
Hamish May 14, 2020
I think the silliest part of this whole immature fight is the solution to the problem had nothing to do with copying a few files or setting an environment variable. Somebody had to open the binary with a hex editor to get the game to launch correctly.

Hopefully OldUnreal is able to offer an even better solution.


Last edited by Hamish on 14 May 2020 at 4:55 pm UTC
mos May 14, 2020
Quoting: Purple Library GuyAs to the validity of your attitude towards non-technical people
sigh.. but well, another sign of times I guess - it's all about 'attitude'. real or - as in this case - perceived (== made up)
no I was never expressing any attitude to any group of ppl, other than those who can't follow simple instructions. get ya head right. screaming IMMA NOT A PROGRAMMER is one of the distinctive attributes, true.

PS If it makes you feel better, lots of 'technical people' produce tons of insufferably crappy 'guides' and/or broken scripts that supposedly do stuff for the 'non-technical' folds. Producing good manuals is much more valuable. Guess why Arch-wiki (or Gentoo's before that) is particularly popular...
mos May 14, 2020
Quoting: HamishSomebody had to open the binary with a hex editor to get the game to launch correctly.
Funny enough, the good old renaming of __dynamic_cast enables one to launch Single Player and Rocket Arena, but it will crash out of DM etc.. Anyway your own article provides a simple enough fix for that.
And yeah, I've quickly installed UT just for checking this - took me a whole 10 minutes (unpacking the maps took 5 of which) from the ground up - i.e. just the official 436 installer and two GOTY cd ISO's. A feat that would probably deemed unassailable for a 'non-tech savvy user' and required them using liflg/wine/proton/play.it/lutris/playonlinux/whatnot. Even tho it's really simple. But yeah, I've seen examples of ppl well into say torrenting who would be stupefied given an advice that involved editing a text file - with a notepad... Seemed totally oblivious to what that is and how or why you'd want to do it.. ¯\_(ツ)_/¯

Quoting: HamishHopefully OldUnreal is able to offer an even better solution.
Not sure if you're familiar with their Unreal Gold 227 Patch (I'd assume you are) from OldUnreal, which has long since become ubiquitous, but it's not just a better solution, its a whole new deal. What else it would be if these folks have been granted access to the source?
zedr May 22, 2020
In case anyone's interested, I've created a Dockerfile for Unreal Tournament 1 which can reliably run it on any Linux distribution (almost): https://github.com/zedr/docker-unreal-tournament-99
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
The comments on this article are closed.