hummer010: it drives me nuts the developers support windows and Mac and not Linux.
rtcvb32: I remember reading/talking with a dev once, and they talked about the annoyances of programming on linux. The annoyances have to do with how many API's you have to support to make the game work (
if it ever did), and the example i got had to do with the sound system. There was something like 4 sound systems you could install and use (
OSS, Asla, Aureal, raw, etc), and each of them required different ways to code it.
Then you have graphical options. There's XWindows (
Gnome, KDE, or some other window manager), or using one of multiple types of graphical API's (
including Curses, console output, SDL to name a few).
There are programs that take advantage of all of this, one good one being the Atari800 project, however you get the source code and it compiles based on what you want the target to be, and what hardware/libraries it finds.
In short there are too many options for Linux, making it difficult if not impossible to try and cover so many possibilities.
That and until recently hardware acceleration was non-existent and unsupported by NVidia, and they won't supply source code or hardware API data for our own drivers to be written.
What you say above is both true... and not quite so true... :) On the surface if a developer directly codes to the lowest level API, then yes there are a lot of them and it can be a real massive headache to support them all across a multitude of distributions and architectures (32/64 etc.) However, *many* developers may actually be looking at Linux "the hard way" and not capitalizing on the great cross platform wrapper interfaces that are available. Valve has given presentations and whitepapers on how to do this in Linux to make cross platform gaming much much simpler than coding directly to OS specific APIs on any given OS (including Windows). The very very short version is that game developers should be using SDL or similar, OpenGL, OpenAL, and/or other cross platform solutions wherever possible, then they end up with their game working on just about every platform that exists with very very little OS specific or arch specific coding needing to be done. If a developer has instead hard coded their game already to use Windows-only APIs then yes, they'll have some porting work to make it work on Linux or Mac or any other OS, but if they port it to SDL/OpenGL/OpenAL or use something like Unity or one of the other game frameworks out there, then non-Windows platforms are not nearly as difficult as some developers might make them out to be.
The problem only really arises when game developers develop their software from the beginning with lack of foresight about cross platform development. In today's massively heterogeneous computing world this is a rather amateur mistake to be making by any development team big or small, much like web developers who create brand new websites without making them responsive design by default.
There are other issues on Linux but things are getting a lot better due to all of the support that
is actually happening out there.
Hopefully more game developers will start using cross platform frameworks from the start so this becomes a non-issue going forward though.
rtcvb32: In short there are too many options for Linux, making it difficult if not impossible to try and cover so many possibilities.
rampancy: Surely one viable solution would be to "code for the middle", and target the libraries/dependencies/distros that are most likely to be installed on the majority of Linux systems out there? That's essentially what GOG's done for their Linux initiative, from what I understand.
Not so much a matter of coding for a particular distribution, but more a matter of building on a platform deemed the "official" one that builds are done on and only providing official technical support for the chosen distributions. Companies generally need to choose a small number of distributions to consider officially supported or otherwise they would end up with dozens of distributions to have to test on and fix obscure corner case issues that pop up. Of course that doesn't mean games etc. wont run on other distros that aren't officially supported, but just lets people set their expectations before putting out money and then being let down if something doesn't work on distribution #4829.
That's somewhat of an oversimplification I've given, but I think most reasonable folk would realize that companies can't test every possible distro/hardware combo out there and put some limits on "official" support, while still making a best effort to fix things that arise on any particular distro if enough details are present to diagnose and resolve an issue without major effort.