You've heard a lot about various packaging systems on Linux from deb to rpm and the next generation with Snap and Flatpak, but what about how games get built and packaged up?
Well, that's what Linux game porter Ethan Lee wanted to talk about and show off during the Linux App Summit 2020. Interestingly, it sounds like Ethan Lee put in their talk plan after seeing us announce the event. For those who aren't familiar with Ethan Lee you can check out their port portfolio here which shows just how many games they've shipped including the likes of: Streets of Rage 4 which just recently released, VVVVVV, Owlboy, FEZ, TowerFall Ascension, Dust: An Elysian Tail and a vast many more. Ethan Lee also created and maintains FNA, which is a reimplementation of the Microsoft XNA Game Studio 4.0 Refresh libraries.
The full video can be seen below at timestamp 2:20:20
Direct Link
Much like on Windows, there's different ways of building games and what's shown here is just one way but it's a nice peek behind the development curtain that you don't often get to see when it comes to games.
If you wish to support the work that Ethan Lee does for Linux ports and FNA head over to the GitHub Sponsors page.
Other devs: Supporting Linux is hard due to the wide choice of distros....blah...blah...blah
Ethan: Typically people expect Ubuntu 16.04, Arch......nope it's all about glibc
Even though there's more to running a game than just the glibc library (GPU drivers etc), what he said is very true and I see no reason why people should make fun of the listed requirements. In my experience I've found that this matters more than some other libraries in native titles.
As someone who's still running Debian 9 (glibc 2.24) I've encountered 2 games where my glibc wasn't high enough SteamWorld: Quest and Neverwinter Nights: Enhanced Edition. For the former game I've compiled a newer glibc from source into a custom folder and LD_PRELOAD'ed the library which solved the issue (game is awesome). Meanwhile for NwN:EE, the same method couldn't be applied, however I've found a complicated method to run it still.
It seems Beamdog was already aware of this issue and in the latest patch they noted "Linux binaries are now built against Debian Stretch (9), fixing requirements to Debian 9, Ubuntu 18.04 LTS, or newer. This should take care of the glibc issues some folks were seeing, as well as the stray libsndio linkage."
So to sum it up, it's not the distro type, package manager or whatever name it's given, but the libraries you're compiling against. It's better to use a slightly older distro for broader compatibility and 'you' as the developer won't have to go back to the drawing board and set up a compiling environment all over again for your game in order to fix them.
Nice work Ethan, if you read this, keep it up and thanks for all you do.
Last edited by Avehicle7887 on 15 November 2020 at 4:34 pm UTC
At 2:31 - System Requirements part:
Other devs: Supporting Linux is hard due to the wide choice of distros....blah...blah...blah
Ethan: Typically people expect Ubuntu 16.04, Arch......nope it's all about glibc
Nice thing about glibc is that the new versions are backwards compatible. So distro with later glibc can still run binaries compiled with older glibc. Hence Ethan had the CentOS machine: long term support and pretty old glibc.
See more from me