I created a cross-platform online action puzzle game that was released late year. It's a single code C++ base that cross-compiles to 5 different platforms (Windows, Mac, Linux, Android, and iOS). Windows was my primary development machine but I always partially worked on Linux because the game server is built for Linux, and it's on the same code base. The game client is built ontop of Cocos2d-x. Earlier this year I migrated my entire development platform from Windows to Linux, which improved my development flow tremendously.
The thing is I never actually intended to release on Linux. I've read and heard unpleasant stories from other indie game developers on supporting linux builds, and I'm sure you've heard the stories as well (like <3% of sales but 30% of the support tickets, 0.1% user 20% crash rate etc).
The mobile versions of my game are set to be released very soon, and now I have this "extra" Linux build, where I do most of the development and testing. But it doesn't make any sense for me to launch it. For a game my size for example, say I sell another thousand copies through this update. With Linux at 3% user base is 30 copies. At $10 a copy after fees and taxes I net an extra $150… For $150 to support the most diverse OS on in the world just doesn't seem to be worth it.
And just to give you another perspective interms of Linux support for completely custom code: I statically link libstdc++ for my server for it to operate on the cloud so I have the greatest compatibility with most distros without having to rebuild. Yet when I deploy to various cloud platforms I still run into kernel compatibility issues. I end up having to switch providers who can offer distros with newer kernels.
I feel like this is an unsolvable problem for linux gaming. You want an easy way to deploy on Linux, but the Linux ecosystem fights back at you. It's seems backwards that the optimal method to play games on Linux right now seems to be through a compatibility layer. And for small indie games like mine, Linux release just seems like a bad idea even when the development is done natively on Linux.
This was originally posted on Reddit.
Reddit aftermath
I knew about the Linux distribution problem long ago. This is one of the primary reasons Linux is not a mainstream desktop OS. I find it intriguing, comical, and a bit sad that I developed the game on Linux that deployed to all platform except Linux.
Many redditors brought Flatpak, Snap as possible solutions. I personally don't think these are great solutions. As a developer I have no interest in manually creating images for deployment platform. I expect it to be taken care of by the platform. If I distrube on Steam, Google Play, App Store, then I expect it to work on that platform by the tools they offer. Every major OS/platform has figured that out. You have a single point of deployment and single point of consumption, except Linux. So when someone mentioned Steam has a Linux runtime I thought that was actually a decent solution. If I used Snap, and the package didn't work for a user, it's my fault. But if I used Steam runtime, and it didn't work for a certain user, it's Steam's fault. The axis of support shifts from the developer's side to the platform side. This is important as a solo dev as I can only spend so much time offering support.
Lastly, many said the support percentage is debunked. It's not. The number may be exaggerated, but the problem is real. I wish I had empirical data on this. I've heard similar remarks and anecdotes from indie devs, GDC talks, and Linux gamers. The sales to support ratio is order of magnitude higher for Linux.