SchizoDaemon
kiwifarms.net
- Joined
- Apr 17, 2026
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.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 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.
Homegrown translation layers often cause as many issues as they solve.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.
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.
Well, Unity has done all the hard work porting their engine. So any game that is built in Unity will work well.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.
Last edited: