The Linux Thread - The Autist's OS of Choice

  • 📧 If you are an employee of a T1 ISP, US datacenter, or related company please get in touch at josh@kiwifarms.net. I have some questions.
  • Want to keep track of this thread?
    Accounts can bookmark posts, watch threads for updates, and jump back to where you stopped reading.
    Create account
It's not just the GUI toolkit being used and whether or not it gets deprecated, but also how game developers used to "port" their games to Linux in the first place. Our beloved Gaben was the standard bearer for good Linux ports of Valve games, but sadly, not everyone was willing or able to follow his lead.
I have an SDL 2/C++ matrix animation that I wrote about 3 years ago. This isn't that difficult to do; it's actually a fun little coding exercise.

I wrote everything on Linux and then ported it to Windows and used cross-platform libraries. Porting it to run on Windows with MinGW took about a day.
Most of this was dealing with CMake and inconsistencies between GCC and MinGW and how they behave with the newer C++ APIs that I used in some places.

Granted, I am not a C++ expert, and I am a hobbyist. But I am a professional software developer, and it took me about a day to port something trivial and have it work on my GitHub CI build.

Having code built between 2 or 3 operating systems and then 2 consoles is non-trivial, and that is why there are many companies that make their bread and butter porting games between platforms. It just wasn't worth the effort porting to Linux when (at the time) only a small player base would be interested.
If memory serves me right, Linux ports of Windows games were (and still kinda are) crapshoots. The big "gotcha" was making a game engine meant for Windows run well enough on Linux. It's a non-trivial task to port something like REDEngine to Linux, especially at a time when CD Projekt RED was still demonstrably an "indie" developer and wasn't flush with Cyberpunk and Witcher 3 cash. The shortcut taken was running REDEngine through some type of compatibility layer which would then translate the game engine into something Linux could work with. Not too sure on the specifics, but I'd wager that similar issues hamper Baldur's Gate 2's Linux port.
Homegrown translation layers often cause as many issues as they solve.

I would instead build stubs/facades for all the Windows-specific API calls. And then have the code call a stub/facade.
I've done stuff like this in other programming languages for Windows-specific APIs vs *nix ones.

This is major work and quite tedious; if they made sure they always had a working Linux build as they built it, it wouldn't be any issue.
Conversely, Hollow Knight has an excellent Linux-native version. Unlike Witcher 2 and Baldur's Gate 2, the game was created with the Unity engine. Unity exists natively on Linux, so they never had to do all that translation pipeline bullshit. That's on top of the Linux version for Hollow Knight using endemic media rendering pipelines instead of dealing with Media Framework or any of that other horrible Windows nonsense. I haven't yet touched Silksong, but I'm 99.99% sure that it's more of the same for that game: excellent Linux-native version, well-optimised, and the media playback being buttery smooth.
Well, Unity has done all the hard work porting their engine. So any game that is built in Unity will work well.
 
Last edited:
Also had a really funny situation where I installed Heroic so I could play my games from GOG, I download Baldurs Gate 2 and it gives me the option of installing the native Linux version or the Windows version, obviously I pick the Linux version and for some fucking reason it won't play... so I go and install the Windows version instead and it runs like a dream.
Most likely a libSSL issue.
It's this. I messed with it before and the Linux port for the Baldur's Gate Enhanced Editions refused to run for me because it's built off a depreciated version of libSSL. I fixed it by grabbing libssl1.0.0_1.0.2n-1ubuntu5.6_amd64.deb from the apt archive and extracting libssl.so.1.0.0 and libcrypto.so.1.0.0 into the game folder and adding adding code to the start.sh script so it'll look there for those libraries. Kind of a pain in the ass if you're already fine with just running the Windows version through Wine, thought as far as I could tell the Linux port runs fine once you get it running.

The Linux port of Undertale has the same issue with the extra problem of being a 32-bit executable that expects the 32-bit version of libraries, so playing the GOG release of it requires manually setting up a script for it find a library path you've placed them in yourself. And the Linux port of RPG Maker MV has several issues because it's built in a web browser framework and comes shipped with a now heavily outdated version of Node-Webkit, so you run into several issues including wit libSSL and Fontconfig unless you manually replace the NW.js within the game folder with the most version.
 
Back
Top Bottom