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.
The Steam version won't give you a key too.
Quoting: HamishQuoting: rea987By the way, best way to solve the sound issues is to let the game use OSS instead of ALSA and installIndeed there are multiple ways to tackle the sound issue, I just went with what worked well for me.osspd-pulseaudioalsa-oss:i386.
Actually Prey is the only old id Tech 4 game whose vanilla Linux version doesn't suffer from ALSA related sound problems. In fact, that's a symptom of many pre-PulseAudio titles; as ALSA requires additional tweaking for its own, emulating OSS via OSS Proxy Daemon (osspd), PulseAudio OSS Wrapper (padsp), ALSA wrapper for OSS applications (alsa-oss) provides much better and stable sound performance. Haven't tried with surround systems though.
Quoting: Hamishlaunching the game with quake4-smp does actually provide me with a much smoother frame rate as long as I am playing at 2x AA and have seta r_useSMP "1" included in my Quake4Config.cfg file along with the previously listed options. Nice call rea987. :)
I am seriously tempted to amend the actual article.
EDIT: So the only way I could get SMP to stick after a restart was by creating a separate AutoExec.cfg file instead of just using the main Quake4Config.cfg file.
Yeah, quake4smp.x86 binary uses two proprietary SDL_GL functions to enable SM acceleration. id Tech games always look for autoexec.cfg to edit default config.cfg; that's the suggested config editing method. Glad it worked for you. :-)
Edit:
Quoting: HamishLike with Doom 3 I had to remove the libgcc_s.so.1, libSDL-1.2.id.so.0, 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.
Not sure how you managed to enable SM acceleration without libSDL-1.2.id.so.0. Cause, it is a proprietary library that use couple proprietary SDL functions that I mentioned before. I suggest leaving that particular library as it is.
By the way, game's launcher scripts seem to check Loki libraries. Those historic libraries were used to avoid compatibility issues of 90s and early 2000s games for mid and/late 2000s distros, but I have no idea if they are suitable for recent modern distros. Most probably won't work with current libc anyway...
http://www.improbability.net/loki/
Last edited by rea987 on 15 January 2018 at 12:25 pm UTC
Quoting: GuestCheers for this Hamish! I still occasionally go back to play Quake4. Just a good solid shooter, at least for me. I think last time I cheated and ran it via wine, where I had far fewer problems (and felt kind of dirty), but I might give native a go again next time and try some of the suggestions here.
I'd write exactly the same for myself.
Quoting: ageres> 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.
The Steam version won't give you a key too.
No, it does. Launch the Steam version via WINE once to generate the CD key, then move the CD key into Linux version's config directory.
https://www.reddit.com/r/linux_gaming/comments/6w4m1l/quakecon_2017_sale_will_continue_until_29th_august/dm5ljdf/
Quoting: rea987No, it does. Launch the Steam version via WINE once to generate the CD key, then move the CD key into Linux version's config directory.I tried this, and it didn't work for me. I had to contact the Steam support, and they gave me a key.
Quoting: ageresI tried this, and it didn't work for me. I had to contact the Steam support, and they gave me a key.
You probably missed something. A user reported to be successful doing so, yet he hasn't received an extra key.
https://www.reddit.com/r/linux_gaming/comments/7qe83f/playing_quake_4_on_linux_in_2018/dsop3w7/
Quoting: rea987Yeah, quake4smp.x86 binary uses two proprietary SDL_GL functions to enable SM acceleration. id Tech games always look for autoexec.cfg to edit default config.cfg; that's the suggested config editing method. Glad it worked for you. :-)
Quoting: rea987Not sure how you managed to enable SM acceleration without libSDL-1.2.id.so.0. Cause, it is a proprietary library that use couple proprietary SDL functions that I mentioned before. I suggest leaving that particular library as it is.
By the way, game's launcher scripts seem to check Loki libraries. Those historic libraries were used to avoid compatibility issues of 90s and early 2000s games for mid and/late 2000s distros, but I have no idea if they are suitable for recent modern distros. Most probably won't work with current libc anyway...
http://www.improbability.net/loki/
So, I've been meaning to release a new Loki libs with updated ALSA libraries for a while now... However, the iD patch for SDL1 was pretty simple, just to allow enabling and disabling the GL context. I have it applied by default on my Gentoo systems but not sure if it's in my Loki libs. Should do a new release to be sure and make the patch available as it used to be on the iD FTP site.
"... 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.
Last edited by franksouza183 on 15 January 2018 at 4:47 pm UTC
Quoting: rea987Actually Prey is the only old id Tech 4 game whose vanilla Linux version doesn't suffer from ALSA related sound problems. In fact, that's a symptom of many pre-PulseAudio titles; as ALSA requires additional tweaking for its own, emulating OSS via OSS Proxy Daemon (osspd), PulseAudio OSS Wrapper (padsp), ALSA wrapper for OSS applications (alsa-oss) provides much better and stable sound performance. Haven't tried with surround systems though.When 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.
Quoting: rea987Not sure how you managed to enable SM acceleration without libSDL-1.2.id.so.0. Cause, it is a proprietary library that use couple proprietary SDL functions that I mentioned before. I suggest leaving that particular library as it is.Yes, I had to restore that library for quake4-smp to launch. If nothing else I have edited the article to not mention removing that particular library as both versions of the game launch fine with it in place, but I am still unsure about going back and mentioning SMP unless I can get it to reliably always be on with every launch. All the information you need for it is in the comments anyway.
EDIT: I would also like to provide a link to a blog post I found from someone writing about the same topic:
http://thesynrgy.blogspot.ca/2016/01/quake-iv-linux-pc-gaming-2016-quake-4.html
Last edited by Hamish on 15 January 2018 at 6:54 pm UTC
Quoting: SwannySo, I've been meaning to release a new Loki libs with updated ALSA libraries for a while now... However, the iD patch for SDL1 was pretty simple, just to allow enabling and disabling the GL context. I have it applied by default on my Gentoo systems but not sure if it's in my Loki libs. Should do a new release to be sure and make the patch available as it used to be on the iD FTP site.
Holy 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
Last edited by rea987 on 15 January 2018 at 7:01 pm UTC
See more from me