By Mark Damon Hughes <kamikaze@kuoi.asui.uidaho.edu>
I write all my computer games in Java or Python. I do this for two primary reasons:
- They're nice languages. REALLY nice. I can get 5-10x the productivity in Java or Python that I did when I used C, and I was a superb C programmer. They're safer (no hand-holding memory management!), more elegant, and more "naturally expressive" - it's easier for me to code what I have in mind in Java or Python.
- They work identically on multiple platforms, including graphics. C/C++ and SDL do this, too, if and only if you have all those platforms to compile it on. Windoze and Mac end-users can't compile C/C++ code, so releasing it open-source only helps Unix users.
I'm fairly regularly asked by Linux users why I don't write Linux native games; the Windows and Mac users don't ask these questions - the Windows users are confident in their hegemony, and Mac users have been beaten down into a state of sullen silence. My answer in public forums is usually more polite (yeah, good old soft-spoken Mark Damon Hughes), but in these articles I'm under no obligation to be polite. The honest answer is: "Are you crazy?"
Making Linux-only games means restricting yourself to one teeny little market, most of whom don't like paying for software (for values of "don't like" ranging from "extreme reluctance" to "want to come and burn your house down if you dare sell software for money"). I don't make games to get rich, or even to make a living (I write other software for that, as I'm unfond of the current games industry), but I like money as much as anyone else. I think people giving money to someone in exchange for their work is a pretty neat idea, and I like being that "someone".
I really like having games on my Linux box - I do everything with Linux. But I also really don't like dictating platform to my users. I'm frustrated whenever I see a neat game that says "Requires Windows", leaving me out in the cold just because I want to use a better OS. Why would I want to make my players feel that bad? I want them to have fun playing my games, and I'm under no delusion that my games, no matter how great they are, will ever make people switch platforms. It ain't gonna happen.
And really, what would being native give you? You need to install Java or Python if you don't have it, and then most Java or Python games are all but indistinguishable from native games. I can only think of two Java-mandated artifacts in my Hephaestus engine currently, and both could be eliminated if I wanted to waste time on them.