Alastair’s Place

Software development, Cocoa, Objective-C, life. Stuff like that.

Portable Computer Games

Groklaw recently ran a poem by Scott Lazar about leaving Windows (for one of the Open Source operating systems). One of the posts in response to that pointed-out that a major factor preventing people from leaving Windows for other operating systems, including Mac OS X, was the availability (or rather lack of availability) of computer games; currently, an awful lot of games are released only on the Windows platform.

That got me thinking… how hard is it really to write a portable game? Games developers commonly claim that they don't have the time or inclination to port to the Mac, and that it would cost too much. That, however, seems like an odd position to take, given that there are 9 million users of Mac OS X, and another 10 or so million on Mac OS 9; assuming U.K.-like pricing, we're talking about anything up to £700 million of potential sales (that's about $1.2 billion at current exchange rates). Is it really that costly to do a port?

It's even more galling, in a way, because most of the portability issues have already been addressed; indeed, both id software and Epic Games Corp, the makers of the Quake and Unreal families of games software, have solved the problem of writing portable computer games. And the Open Source community has gone a long way towards helping realise this kind of thing, releasing a large number of portable libraries that can be used for games development.

Anyway, I've written a short article detailing some common mistakes that people might make in this context, as well as providing lots of useful links. I doubt anyone will take any notice, but we can always hope.


Update 2011-10-14

Since I wrote this, the situation has changed markedly, and many more games developers are actively writing portable code and/or explicitly targeting the Mac platform. It no longer seems terribly necessary to have the original article around, since there are plenty of better resources on the Internet.