When I switched to using Linux full time in the spring of 2007, my first recourse for gaming was either emulation or playing many of my old ported favourites from id Software. It did not take me long to start looking further afield in search of other quality Linux native titles, but in a time when digital distribution was in its infancy, and the Indie revolution that it would bring had not quite started yet, new games were few and far between.
At the same time, a small startup in Sweden was hard at work trying to expand their original Penumbra tech demo into a series of full fledged episodic horror games. The Penumbra Collection would be the ultimate result of that effort, with Linux support being provided by Edward Rudd. It would even go on to have its first instalment included as part of the original Humble Indie Bundle. The game soon caught my eye due to its strong graphics and advanced physics engine.
I have never been one to be frightened by video games, but thanks to its skilful environmental storytelling, strong writing, and accomplished vocal talent, the Penumbra Collection got its hooks into me all the same. Frictional Games would go on to even greater acclaim with the release of Amnesia: The Dark Descent only a few months after I first played, but it is the Penumbra Collection that is always going to hold a special place in my heart.
It pains me to say then, in spite of the still excellent support that Frictional Games gives to our platform, that the state of the Penumbra Collection for a number of Linux users has become such a mess. Ten years on I found myself with little option other than running my old copy of the Penumbra Collection from the now defunct Desura service; the closure of the company’s own storefront leaving no other recourse for those wishing to avoid the use of Steam.
Regardless, the version of the game that I have (1.1.1 released on December 4, 2014) appears even now to be the most recent release of the Penumbra Collection. This includes a number of much appreciated quality of life improvements over earlier versions such as offering support for more modern display resolutions, better audio handling through the use of an improved OALWrapper, and everything being reworked to run on top of SDL2.
At first blush the game installed and ran great, right up until I tried to leave the fishing boat at the start of the first episode in the series Penumbra: Overture. Upon attempting to load the next level the game would immediately crash to the desktop; a similar problem occurred upon using the vice at the start of the second episode Penumbra: Black Plague. It did not take long for me to discover that the solution was to build a custom Mesa package yet again.
For whatever reason, the Penumbra Collection will crash when Mesa is built with compiler optimizations applied. This can be mitigated by Arch Linux users through the use of the Arch Build System, or by generating your own Mesa build manually. Either option is far from ideal of course, and while officially the game does only support proprietary vendor drivers, almost all users of both AMD and Intel graphics hardware on Linux will now run into this issue.
Also alarming is that while trying to diagnose the problem I uncovered a separate bug that causes the game to crash when using modern versions of the libvorbis library. My copy of the Penumbra Collection came bundled with an older "libvorbis.so.0" file included in the the game's various "lib" directories, so I was able to sidestep this issue, but it is always a bad sign when a game refuses to run off the libraries that come supplied with your Linux distribution.
Ten years on the Penumbra Collection plays as strong as ever, even if my appreciation for Overture has increased as my over familiarity with Black Plague has lessened its impact. More than any other game, I wish I could go back to 2010 and play these titles with a fresh pair of eyes, especially since solving puzzles in the wrong order can on occasion confuse the narrative. What need do I have for the severed hand of Dr. Eminiss when I already have one in my bag?
Frictional Games are hard at work on their next Amnesia title, and while I know that keeping old games updated can be an aggravating support burden, I do still hope that the developers can come back to the Penumbra Collection, fix up these issues that will continue to plague a growing number of Linux users, and then spread the game to even more stores. To be left with creaking binaries from a shuttered distribution service is disheartening for a game that remains so dear to me.
I have got my ten dollars worth I have to say.
Last edited by Hamish on 28 May 2020 at 5:58 pm UTC
Build started at 2020-07-05T10:15:07.706677
Main binary: /usr/bin/python
Build Options: -Db_lto=true -Db_pie=true -Db_ndebug=true -Dplatforms=x11,wayland,drm,surfaceless -Ddri-drivers=i915,i965,r100,r200,nouveau -Dgallium-drivers=r300,r600,radeonsi,nouveau,virgl,svga,swrast,iris -Dvulkan-drivers=amd,intel -Dvulkan-overlay-layer=true -Dvulkan-device-select-layer=true -Dswr-arches=avx,avx2 -Ddri3=true -Degl=true -Dgallium-extra-hud=true -Dgallium-nine=true -Dgallium-omx=disabled -Dgallium-opencl=icd -Dgallium-va=true -Dgallium-vdpau=true -Dgallium-xa=true -Dgallium-xvmc=false -Dgbm=true -Dgles1=false -Dgles2=true -Dglvnd=true -Dglx=dri -Dlibunwind=true -Dllvm=true -Dlmsensors=true -Dosmesa=gallium -Dshared-glapi=true -Dvalgrind=false -Dprefix=/usr -Dlibdir=/usr/lib32 -Dlibexecdir=lib -Dsbindir=bin -Dauto_features=enabled -Dbuildtype=plain -Dwrap_mode=nodownload '--native-file crossfile.ini'
Python system: Linux
The Meson build system
Version: 0.54.3
Source dir: /home/hamish/Downloads/lib32-mesa/src/mesa-20.1.2
Build dir: /home/hamish/Downloads/lib32-mesa/src/build
Build type: native build
Program python found: YES (/usr/bin/python)
Running command: /usr/bin/python bin/meson_get_version.py
--- stdout ---
20.1.2
--- stderr ---
None of 'PKG_CONFIG_PATH' are defined in the environment, not changing global flags.
None of 'PKG_CONFIG_PATH' are defined in the environment, not changing global flags.
Project name: mesa
Project version: 20.1.2
Using 'CFLAGS' from environment with value: '-march=x86-64 -mtune=generic -O3 -pipe -fno-plt -g -fvar-tracking-assignment -O0 -fdebug-prefix-map=/home/hamish/Downloads/lib32-mesa/src=/usr/src/debug'
Using 'LDFLAGS' from environment with value: '-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'
Using 'CPPFLAGS' from environment with value: '-D_FORTIFY_SOURCE=2'
mesa-20.1.2/meson.build:21:0: ERROR: Unable to determine dynamic linker
Which is kind of annoying as I never got around to completing Requiem yet.
Last edited by Hamish on 6 July 2020 at 12:06 am UTC
Attempting to build Mesa as described before now just results in this error:
Build started at 2020-07-05T10:15:07.706677
Main binary: /usr/bin/python
Build Options: -Db_lto=true -Db_pie=true -Db_ndebug=true -Dplatforms=x11,wayland,drm,surfaceless -Ddri-drivers=i915,i965,r100,r200,nouveau -Dgallium-drivers=r300,r600,radeonsi,nouveau,virgl,svga,swrast,iris -Dvulkan-drivers=amd,intel -Dvulkan-overlay-layer=true -Dvulkan-device-select-layer=true -Dswr-arches=avx,avx2 -Ddri3=true -Degl=true -Dgallium-extra-hud=true -Dgallium-nine=true -Dgallium-omx=disabled -Dgallium-opencl=icd -Dgallium-va=true -Dgallium-vdpau=true -Dgallium-xa=true -Dgallium-xvmc=false -Dgbm=true -Dgles1=false -Dgles2=true -Dglvnd=true -Dglx=dri -Dlibunwind=true -Dllvm=true -Dlmsensors=true -Dosmesa=gallium -Dshared-glapi=true -Dvalgrind=false -Dprefix=/usr -Dlibdir=/usr/lib32 -Dlibexecdir=lib -Dsbindir=bin -Dauto_features=enabled -Dbuildtype=plain -Dwrap_mode=nodownload '--native-file crossfile.ini'
Python system: Linux
The Meson build system
Version: 0.54.3
Source dir: /home/hamish/Downloads/lib32-mesa/src/mesa-20.1.2
Build dir: /home/hamish/Downloads/lib32-mesa/src/build
Build type: native build
Program python found: YES (/usr/bin/python)
Running command: /usr/bin/python bin/meson_get_version.py
--- stdout ---
20.1.2
--- stderr ---
None of 'PKG_CONFIG_PATH' are defined in the environment, not changing global flags.
None of 'PKG_CONFIG_PATH' are defined in the environment, not changing global flags.
Project name: mesa
Project version: 20.1.2
Using 'CFLAGS' from environment with value: '-march=x86-64 -mtune=generic -O3 -pipe -fno-plt -g -fvar-tracking-assignment -O0 -fdebug-prefix-map=/home/hamish/Downloads/lib32-mesa/src=/usr/src/debug'
Using 'LDFLAGS' from environment with value: '-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'
Using 'CPPFLAGS' from environment with value: '-D_FORTIFY_SOURCE=2'
mesa-20.1.2/meson.build:21:0: ERROR: Unable to determine dynamic linker
Which is kind of annoying as I never got around to completing Requiem yet.
Can you share the content of "crossfile.ini"? Also, your CFLAGS have -O3 and -O0 at the same time.
https://git.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/lib32-mesa
The contents of crossfile.ini in a generated package are as follows:
[binaries]
llvm-config = '/usr/bin/llvm-config32'
As for the CFLAGS, that is being grabbed from what is defined in makepkg.conf as used by the Arch Build System. Setting the 'debug' option in the PKGBUILD makes its append DEBUG_CFLAGS which is where I was instructed to add the "-O0" flag in the linked Frictional Games forum thread:
https://www.frictionalgames.com/forum/thread-54134-post-363860.html#pid363860
Back in April and May adding the "-O0" flag to DEBUG_CFLAGS in makepkg.conf and toggling the 'debug' and '!strip' options in the lib32-mesa PKGBUILD did do the trick. Now doing so causes it to complain about being unable to determine the dynamic linker.
Here is the relevant parts of my makepkg.conf file:
#-- Compiler and Linker Flags
CPPFLAGS="-D_FORTIFY_SOURCE=2"
CFLAGS="-march=x86-64 -mtune=generic -O3 -pipe -fno-plt"
CXXFLAGS="-march=x86-64 -mtune=generic -O3 -pipe -fno-plt"
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now"
#-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2"
#-- Debugging flags
DEBUG_CFLAGS="-g -fvar-tracking-assignment -O0"
DEBUG_CXXFLAGS="-g -fvar-tracking-assignments -O0"
I have tried exporting my own CFLAGS in the PKGBUILD containing just the "-O0" flag and with that I can get the lib32-mesa package to build, but Penumbra will still crash when using these builds. I have also tried using the Meson c_args option to set the "-O0" flag to no good effect. I have also tried setting the various "-mno-sse" flags which again do nothing.
Last edited by Hamish on 6 July 2020 at 12:09 am UTC
I have tried exporting my own CFLAGS in the PKGBUILD containing just the "-O0" flag and with that I can get the lib32-mesa package to build, but Penumbra will still crash when using these builds. I have also tried using the Meson c_args option to set the "-O0" flag to no good effect. I have also tried setting the various "-mno-sse" flags which again do nothing.
But the output of meson configuration shows a mixture of flags (In the output of your first comment you can clearly see that DEBUG_CFLAGS has been appended to CFLAGS). I suggest you to clear your env. variables and start from scratch.
Project name: mesa
Project version: 20.1.2
Using 'CC' from environment with value: 'gcc -m32'
Using 'CFLAGS' from environment with value: '-O0'
Using 'LDFLAGS' from environment with value: '-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'
Using 'CPPFLAGS' from environment with value: '-D_FORTIFY_SOURCE=2'
None of 'CC_LD' are defined in the environment, not changing global flags.
And Penumbra still crashes.
That output is from my trying to use the DEBUG_CFLAGS in makepkg.conf, not from when I was exporting my own values in the PKGBUILD. Here is the relevant Meson log for that:
Project name: mesa
Project version: 20.1.2
Using 'CC' from environment with value: 'gcc -m32'
Using 'CFLAGS' from environment with value: '-O0'
Using 'LDFLAGS' from environment with value: '-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'
Using 'CPPFLAGS' from environment with value: '-D_FORTIFY_SOURCE=2'
None of 'CC_LD' are defined in the environment, not changing global flags.
And Penumbra still crashes.
I'm not sure if will help, but try removing "-01" from LDFLAGS and the same for link time optimizations (set b_lto to false)
Project name: mesa
Build started at 2020-07-07T11:28:20.925677
Main binary: /usr/bin/python
Build Options: -Db_lto=false -Db_pie=true -Db_ndebug=true -Dplatforms=x11,wayland,drm,surfaceless -Ddri-drivers=i915,i965,r100,r200,nouveau -Dgallium-drivers=r300,r600,radeonsi,nouveau,virgl,svga,swrast,iris -Dvulkan-drivers=amd,intel -Dvulkan-overlay-layer=true -Dvulkan-device-select-layer=true -Dswr-arches=avx,avx2 -Ddri3=true -Degl=true -Dgallium-extra-hud=true -Dgallium-nine=true -Dgallium-omx=disabled -Dgallium-opencl=icd -Dgallium-va=true -Dgallium-vdpau=true -Dgallium-xa=true -Dgallium-xvmc=false -Dgbm=true -Dgles1=false -Dgles2=true -Dglvnd=true -Dglx=dri -Dlibunwind=true -Dllvm=true -Dlmsensors=true -Dosmesa=gallium -Dshared-glapi=true -Dvalgrind=false -Dprefix=/usr -Dlibdir=/usr/lib32 -Dlibexecdir=lib -Dsbindir=bin -Dauto_features=enabled -Dbuildtype=plain -Dwrap_mode=nodownload '--native-file crossfile.ini'
None of 'PKG_CONFIG_PATH' are defined in the environment, not changing global flags.
None of 'PKG_CONFIG_PATH' are defined in the environment, not changing global flags.
Project name: mesa
Project version: 20.1.2
Using 'CC' from environment with value: 'gcc -m32'
Using 'CFLAGS' from environment with value: '-O0'
Using 'LDFLAGS' from environment with value: '-Wl,-O0,--sort-common,--as-needed,-z,relro,-z,now'
Using 'CPPFLAGS' from environment with value: '-D_FORTIFY_SOURCE=2'
Thanks for the suggestions regardless x_wing.
For what it is worth, I found with Requiem that the game will crash when you pick up the first audio log from Eloff Carpenter.
I've installed the game and finished the snow level (I'm now in the Alien facility... if I can call it that way XD). You get the crash when you open the log of the first level?
Last edited by x_wing on 9 July 2020 at 7:58 pm UTC
Yeah, it seems that what exactly triggers the game to crash is variable. I have had it crash at different points with different Mesa versions.For what it is worth, I found with Requiem that the game will crash when you pick up the first audio log from Eloff Carpenter.I've installed the game and finished the snow level (I'm now in the Alien facility... if I can call it that way XD). You get the crash when you open the log of the first level?
Yeah, it seems that what exactly triggers the game to crash is variable. I have had it crash at different points with different Mesa versions.
I ended up finishing the game (no idea about the story, I should have start by the first one :P) and didn't get any crash. I used the default Mesa packages from Ubuntu 18.04 (i.e. Mesa 19.2.8). Are you sure that the issue is related to Mesa?
BTW, I played Steam version.
I ended up finishing the game (no idea about the story, I should have start by the first one :P) and didn't get any crash. I used the default Mesa packages from Ubuntu 18.04 (i.e. Mesa 19.2.8). Are you sure that the issue is related to Mesa?All I can say is that the game crashing for me was solved when I was still able to compile Mesa as described in that forum thread, and that my experiences do match those of other players. The thread I am referencing is literally titled "Steam version of Penumbra" so I doubt it is due to my Desura copy.
Requiem's plot is always going to be out there, but yes, you would be missing out on some the character moments.
All I can think of is that I have changed my graphics card since then?
Conveniently, Frictional has decided to delete their forums so I can't browse that thread to try to find a solution
I'm assuming the Angelscript fix is not applicable to Black Plague since the source code hasn't been released for it, but it does fix Overture, correct? I would do it but i'd need steps to fix that. I tried running the games through Proton on Steam but for some reason, fullscreen doesn't want to seem to work! The games themselves run fine, but the "fullscreen" window is halfway between my two monitors, a bit difficult to play like that!
Any solutions would be welcome~! (Would really be nice if Frictional had let us know they were shutting down the forums...)
Has anyone figured out the steps for a solid fix (besides building lib32-mesa) Currently on Arch and still has issues with both overture and black plague.
Conveniently, Frictional has decided to delete their forums so I can't browse that thread to try to find a solution
I'm assuming the Angelscript fix is not applicable to Black Plague since the source code hasn't been released for it, but it does fix Overture, correct? I would do it but i'd need steps to fix that. I tried running the games through Proton on Steam but for some reason, fullscreen doesn't want to seem to work! The games themselves run fine, but the "fullscreen" window is halfway between my two monitors, a bit difficult to play like that!
Any solutions would be welcome~! (Would really be nice if Frictional had let us know they were shutting down the forums...)
Can you share your specs? The only issue you have is related to playing in fullscreen?
Conveniently, Frictional has decided to delete their forums so I can't browse that thread to try to find a solutionFor what it is worth:
https://web.archive.org/web/20200923183829/https://www.frictionalgames.com/forum/thread-54134-page-2.html
I also changed the main article to use the Internet Archive link.
Has anyone figured out the steps for a solid fix (besides building lib32-mesa) Currently on Arch and still has issues with both overture and black plague.
Conveniently, Frictional has decided to delete their forums so I can't browse that thread to try to find a solution
I'm assuming the Angelscript fix is not applicable to Black Plague since the source code hasn't been released for it, but it does fix Overture, correct? I would do it but i'd need steps to fix that. I tried running the games through Proton on Steam but for some reason, fullscreen doesn't want to seem to work! The games themselves run fine, but the "fullscreen" window is halfway between my two monitors, a bit difficult to play like that!
Any solutions would be welcome~! (Would really be nice if Frictional had let us know they were shutting down the forums...)
Can you share your specs? The only issue you have is related to playing in fullscreen?
Edit: So I tried running Black Plague through steam with the latest proton after a recent re-install of Arch. When the resolution is adjusted to my monitor, it properly appears in fullscreen but the taskbar appears over it (taskbar also stops my mouse from going below it) When I go to a new game, the game loads in but it's just a black screen! I can hear the audio, I can jump and move around (the cursor appears in the middle of the screen as it should, changing to an eye when applicable) but I can't see anything else. Pressing alt-tab at any point in time breaks the game; Trying to re-focus the game after doing breaks the game screen
Ah, I need to start checking on here more often! I didn't get an e-mail that someone had replied to me, guess I need to check that subscribe checkbox. Yeah, fullscreen is the issue (well sort of) Basically whenever the game is fullscreen, it spans partially between my main monitor (left one) and my secondary (right one). I'd say it's about an 80/20 split with 80% being on my main and 20% being on the secondary, not sure what's causing it. The mouse also isn't properly locked into the game, and i'm not able to move the mouse around to click where i'd need to click. Making the game not fullscreen still has issues with the mouse not locking to the window still. Specs are as follows:
Arch linux (5.9.14 kernel)
Radeon RX 5700 XT
Latest (stable) mesa, amdgpu, etc etc drivers
Running the game through steam with the latest Proton (experimental, although I also tried it with Proton-GE, same problem)
Happy to provide any extra info that may be needed!
Last edited by Xenanthropy on 27 December 2020 at 2:51 am UTC
Conveniently, Frictional has decided to delete their forums so I can't browse that thread to try to find a solutionFor what it is worth:
https://web.archive.org/web/20200923183829/https://www.frictionalgames.com/forum/thread-54134-page-2.html
I also changed the main article to use the Internet Archive link.
Edit: Nevermind, I was able to find all of the patches on https://www.patches-scrolls.de! My error was googling for the exact patch names, very hard to find them that way...
Thank you for that! It's a real shame Frictional just deleted their forums like that... I own all the physical copies of the games (might just trying installing and playing from those) Only problem is I can't update the physical media installed games since all the updates were on the forums... Tried reaching them through Archive but I couldn't, sadly.
Last edited by Xenanthropy on 28 December 2020 at 1:55 am UTC
See more from me