Check out our Monthly Survey Page to see what our users are running.
We do often include affiliate links to earn us some pennies. See more here.

Playing Quake 4 on Linux in 2018

By - | Views: 78,773

A few months back I wrote an article outlining the various options Linux users now have for playing Doom 3, as well as stating which of the three contenders I felt to be the best option in 2017. Having already gone to the trouble of getting the original Doom 3 binary working on my modern Arch Linux system, it made me wonder just how much effort it would take to get the closed source Quake 4 port up and running again as well.

 

Getting it running

 

Quake 4 was ported to Linux by Timothée Besset in 2005, although the binaries themselves were later taken down along with the rest of the id Software FTP server by ZeniMax. The original Linux FAQ page is still online though, and mirrors hosting the Linux installer still exist, such as this one run by the fan website Quaddicted. Once downloaded this will give you a graphical installer which will install the game binary without any of the game assets. 

These will need to be taken from either the game discs of a retail Windows version as I did, or taken from an already installed Windows version of the game such as from Steam. Follow the steps in the Linux FAQ to the letter for best results. Please note that the GOG.com release of Quake 4 is unique in not supplying a valid CD key, something which is still required for the Linux port to launch. There are ways to get around this, but we only condone these methods for legitimate purchasers.

Like with Doom 3 I had to remove the libgcc_s.so.1 and libstdc++.so.6 libraries that the game came with in the install directory in order to get it to run. I also ran into the same sound issue I had with Doom 3, meaning I had to modify the Quake4Config.cfg file located in the hidden ~/.quake4/q4base directory in the same fashion as before. However, this time I ran into a whole host of other issues that made me have to modify the configuration file as well.

First off the language the game wanted to use would always default to Spanish, meaning I had to manually tell the game to use English instead. I also ran into a known issue on all platforms wherein the game would not properly recognize the available VRAM on modern graphics cards, and as such would force the game to use lower image quality settings. Quake 4 will also not render see-through surfaces unless anti-aliasing is enabled, although going beyond 8x caused the game not to load for me.

Appending the following to the end of the Quake4Config.cfg file resolved all of my issues:

seta image_downSize "0"
seta image_downSizeBump "0"
seta image_downSizeSpecular "0"
seta image_filter "GL_LINEAR_MIPMAP_LINEAR"
seta image_ignoreHighQuality "0"
seta image_roundDown "0"
seta image_useCompression "0"
seta image_useNormalCompression "0"
seta image_anisotropy "16"
seta image_lodbias "0"
seta r_renderer "best"
seta r_multiSamples "8"
seta sys_lang "english"
seta s_alsa_pcm "hw:0,0"
seta com_allowConsole "1"

Please note that this will also set the game to use 8x anti-aliasing and restore the drop down console to how it worked in all of the previous Quake games. Similar to the Linux port of Doom 3 the Linux version of Quake 4 also does not support Creative EAX ADVANCED HD audio technology. Unlike Doom 3 though Quake 4 does seem to also feature an alternate method for surround sound, and widescreen support was thankfully patched into the game soon after its release.

 

Playing the game

 

Over the years Quake 4 has gained something of a reputation as the black sheep of the Quake family, with many people complaining that the game's vehicle sections, squad mechanics, and general aesthetic made it feel too close to contemporary military shooters of the time. In the game's heart of hearts though it really does feel like a concerted sequel to Quake II, with some of developer Raven Software's own Star Trek: Voyager - Elite Force title thrown in for good measure.

To me at least Quake 4 does stand as being one of the "Last of the Romans" in terms of being a first person shooter that embraced classic design ideals at a time when similar titles were not getting the support of major publishers. Most of the game still features the player moving between levels featuring fixed enemy placements, a wide variety of available weapons, traditional health packs, and an array of enemies each sporting unique attributes and skills.

Quake 4 also offers a well made campaign that I found myself going back to on a higher skill level not long after I had already finished my first try at the game. Certain aspects like the vehicle sections do indeed drag the game down a bit, and the multiplayer aspect pales in comparison to its predecessor Quake III Arena, but overall I am quite pleased with what Raven Software was able to accomplish with the Doom 3 engine, especially when so few others tried.

 

Final thoughts

If anyone ever needed a reason to be reminded of the value of video game source code releases, this is it. Most of the problems I encountered could have been easily sidestepped if Quake 4 source ports were available, but with the likes of John Carmack and Timothée Besset gone from id Software and the current climate at ZeniMax not looking too promising, it is doubtful that any such creations will ever materialize. Doom 3 source ports look to be the end of the road.

Instead we are stuck using this cranky 32 bit binary with an obstructive CD Key check and a graphics system that freaks out at the sight of any modern video card sporting more than 512 MB of VRAM. The game itself has aged well, with graphics that still look great and dynamic lighting that is better than what is included with many modern titles. It is just a shame that it is now such a pain to get running, not just on Linux, but on any platform.

Article taken from GamingOnLinux.com.
Tags: Action, FPS, HOWTO, Review | Apps: QUAKE IV
29 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.
39 comments
Page: «3/4»
  Go to:

appetrosyan Jan 15, 2018
Quoting: Grim85
Quoting: appetrosyanWhy, Zenimax?

I still can't figure out: why are they so actively anti-linux. Yes it constitutes a minority among gamers, still, wouldn't explain why aren't they publishing games that already have tested Linux support.

The only logical explanation would be a contract with Microsoft, but then why aren't they pioneering DX12 and blatantly supporting Vulkan.


Boiling Steam did an interview with Tim Basset, he seems to paint it not so much of a resentment, but lack of knowledge

Interesting podcast.

Not sure this answers my question. He didn't say anything pertaining directly to Bethsoft and its parent ZeniMax other than "they're more business conscious".
appetrosyan Jan 15, 2018
Quoting: franksouza183An interesting post, because I am currently doing a couple of tests and comparisons between the native version and the windows (wine) one using mesa (radeonsi). I don't know why, but on wine, I get a much more smooth gameplay, and finally being able to maintain a 60fps rate without slowdowns, and beside that, now I can use some graphics mods (like sikkmod). I really was frustrated with this, the native version (smp and non-smp) gave me audio problems in addition to lower performance, using the same settings on both platforms. I do not understand, since based on this quote from here :

"... This means that each call to an OpenGL function must be" translated "and can not be directly used by the Windows program."

... perfomance was supposed to be lower.

To get "fixed" frame rate I needed to disable vsync (game), set the option "com_fixedTic" to "1" (the game will be accelerated if your graphic card can exceed 60fps, so to fix this, I needed a limiter (the next tool)) and use strangle to limit the frames at 60. The same process applies to both native and wine versions.

Another advantage in using wine is the possibility of using the virtual desktop, and open the game on the monitor I want (dual monitor here). It's 2018, and this fullscreen problem in dual monitors settings has never been appropriate for certain old native games.

I guess this has to do with the fact that Wine and SDL are actively developed projects with many contributors, while the game itself was taken down by ZeniMax. This means that you can potentially get higher performance than on Windows using a compatibility layer.
no_information_here Jan 15, 2018
Thanks for the article Hamish. I always enjoy your writing.

A minor grammar question: "...such as this one ran by the fan website Quaddicted." The use of "ran" here doesn't look quite right?

Thanks also to everyone else for the interesting additional info!
Ardje Jan 15, 2018
To start a game without internet:
ip netns add NI
ip netns exec NI ip set up dev lo
ip netns exec NI <game>
# Wait for game to stop
ip netns delete NI

It will create a network namespace NI, up dev lo (usually important for a lot of things), and start the game within that namespace.
That game will really have no clue about a network, but still has full access to your x-server (as it can reach the socket).
Ardje Jan 15, 2018
Quoting: HamishWhen I first started gaming heavily on Linux starting back in 2007 on Fedora games using OSS were the bane of my existence, as even with the methods for emulating it under ALSA and then later PulseAudio it almost never worked well for me. Just using ALSA for Quake 4 works fine in my experience as long as you specify the correct PCM device and it is not engaged.
I've found that if you want to do real gaming, you also need a real sound card. Not those cheap ass HD single PCM channel things. I don't know where it wen't wrong, but the htpc like machines I had in 1999 had the YMF40 chipset, featuring 40 PCM channels.
I've found that the soundblaster live is also pretty good, remixing the 128 channels(?) internally at 48kHz?
Hamish Jan 15, 2018
Quoting: ArdjeI've found that if you want to do real gaming, you also need a real sound card. Not those cheap ass HD single PCM channel things.
Considering that my left speaker has a loose cable and keeps cutting in and out, I think my use of an on-board sound chip is the least of my problems. ;)

Quoting: no_information_hereA minor grammar question: "...such as this one ran by the fan website Quaddicted." The use of "ran" here doesn't look quite right?
It seems you are correct, looking into it. Fixed now.
Swanny Jan 16, 2018
Quoting: rea987Holy cow, are you still around? I though devs of that site moved on and never looked back, silly me. :-) Well, ETQW requires pre-2.14 glibc to work properly which is not an easy task with current distros. In fact a custom build recent glibc with "disable-multi-arch" option seems to solve the issue but I couldn't figure out how to compile glibc on Ubuntu. :-)

http://forums.warchest.com/showthread.php/32089-ETQW-oddities-with-glibc-2-15-FIX?p=570552&viewfull=1#post570552
http://forums.warchest.com/showthread.php/32089-ETQW-oddities-with-glibc-2-15-FIX?p=396658&viewfull=1#post396658

Also, Quake 4 and ETQW's "improved" binaries have non-standard (probably proprietary) SDL_GL_DisableContext and SDL_GL_EnableContext_Thread functions. As I recently found SDL Compatibility Library which allows SDL 1.2 applications to use SDL 2.0, I wonder if it's possible to port those functions to default SDL 1.2 somehow?

https://github.com/MrAlert/sdlcl/issues/14

The iD patch to SDL1 is now up at idgames-smp.patch trimmed of some Mac and library naming noise. It isn't included in the current Loki libs but I'll include it with the next update.

The patch was included with the QuakeWars Linux installer (not just iD's dead FTP) and I only got QuakeWars after the last Loki libs release, hence why it's not included. You can see the original sdl.1.2.12.patch patch as source at just one site on the internet (according to a Google search for added function names) without having to extract the QuakeWars installer.


Last edited by Swanny on 16 January 2018 at 1:22 am UTC
m2mg2 Jan 16, 2018
Games using oss are a real pain. I've been having real good luck launching games with padsp. I can even launch games with other audio running.

padsp /pathto/ut2004
Hamish Jan 17, 2018
Here is my full AutoExec.cfg file for the record:
seta r_useSMP "1"
seta sys_videoRam "512"
seta r_multiSamples "2"
seta image_downSize "0"
seta image_downSizeBump "0"
seta image_downSizeSpecular "0"
seta image_filter "GL_LINEAR_MIPMAP_LINEAR"
seta image_ignoreHighQuality "0"
seta image_roundDown "0"
seta image_useCompression "0"
seta image_useNormalCompression "0"
seta image_anisotropy "16"
seta image_lodbias "0"
seta r_renderer "best"
seta sys_lang "english"
seta s_alsa_pcm "hw:0,0"
seta com_allowConsole "1"
seta s_numberOfSpeakers "2"


When SMP works I am getting a near solid 60 FPS in most instances now. :)


Last edited by Hamish on 19 March 2018 at 10:10 pm UTC
DJViking Jan 23, 2018
I wonder if it could be possible to create an AppImage of Quake4 with these modifications. That way you could always get it to run even if your system libraries change. Having classics like Quake4 running years or decades later would be great.
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.