Wednesday, April 29, 2020

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


Tags: Editorial, Wine, FPS, Unreal Engine, GOG, AMD, Drivers, Intel, Mesa, Third-person shooter

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 breath 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 the Core.so file being statically linked to an archaic libstdc++ library, the game can only be ran outside of Software mode on the free graphics stack with 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 renderer, OpenAL 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 wrote 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.

Article from GamingOnLinux.com


Read More

No comments:

Post a Comment