|
With the
release of Mac OS X, the Macintosh platform gains a new path to easy-to-use
and high-performance gaming. This article will address how you can easily
port your current game over to the Mac and the APIs in Mac OS X that you
can use to do so. Many of the issues involved with porting to a new operating
system are common to porting to any new OS, not just the Mac.
I'll primarily
be addressing this subject from my experiences in porting games such as
Quake 3: Arena, Star Trek: Voyager — Elite Force, Oni,
and American McGee's Alice. All of these titles obviously belong
to a similar style, but the techniques I'll describe in this article are
applicable to any game. We at Omni have been able to port well-structured
games successfully in a matter of days, and sometimes hours, due to the
productivity and ease-of-use advancements in OS X.
Why Port to the
Mac?
The first
reason is obviously economics. Sure, writing games is one of the most
exciting and most challenging jobs around, but if you aren't generating
income, you are either independently wealthy, or you won't be doing it
for very long. Every developer should strive to write portable and modular
code as a matter of course. The benefits of doing this are many and diverse.
One of the benefits is being able to move your code easily to a new platform
and attract an audience that you wouldn't have attracted otherwise. If
your game is written correctly from the beginning, a port to the Mac will
generate much more money than the cost of porting it. If you don't do
the port, you might as well toss money in the trash.
Revenue
in the Mac market will certainly not be as high as in the PC or console
markets, but neither are costs. Advertising does not cost millions of
dollars in the Mac market. Due to the high level of community, the word-of-mouth
advertising, and possibly piggybacking on your PC marketing, if you have
a simultaneous release date it can yield very good market penetration.
The Mac market also doesn't demand that you produce a game with a $3 million
budget. If you are looking at original development on the Mac, you can
build games very cheaply that will be well received (and perhaps focus
more on gameplay rather than having to spend time on all the latest graphics
effects just to get on the shelf). Simple and well-designed titles are
possible on the Mac.
The Mac
market has a longer shelf life for titles than the PC market, and there
is less overall competition. Thus, while it is very easy to lose money
on a PC or console title, it takes much more effort to do so on a Mac
title.
Also, if
you license your PC publication rights, you can often hold back the Mac
rights. Many PC publishers will not see the economy of scale on the Mac
that they need in order for them to turn a profit. By doing so, you can
either publish on the Mac yourself or find a publisher that specializes
in the Mac market and knows how to make money there. This will give your
development house additional income beyond the advances and royalties
you get from your PC publisher.
There are
other, less obviously money-grubbing reasons to port to the Mac. If you
plan on licensing or reusing the engine that you are using for your current
title, the work in making your engine run on the Mac can be amortized
over multiple titles, and it can generate more licensing interest.
Finally,
moving your code to another platform can help uncover many latent bugs
in your code. In this case, the extra effort involved in supporting multiple
platforms can actually reduce the amount of work at the tail end of a
project by ensuring that the base you are building your game on is as
stable as possible.
Planning Your Game
As with
any complicated task, large gains in productivity can be had if you plan
your effort before embarking on it. The first step in planning a project
is deciding where you want to end up after all your effort has been expended.
This applies to both the features you want in your game and the platforms
on which it will run. The earlier you decide on your supported platforms,
the easier it will be to achieve your goals.
The decision
of which features your game will include is related to the platforms you
will support. For example, if you are planning on supporting wireless
gaming, you probably won't be using Open GL for at least a couple of years
(beyond that, who knows?). Likewise, if you are going to write games that
are going to run on the Mac, you need to pick foundation technologies
that are available there. This excludes proprietary technologies like
DirectThis and DirectThat (and Mac proprietary technologies such as Core
Graphics, Cocoa, Carbon, and so on if you are going to run on Windows).
There are
many well-known software techniques for multi-platform development. I'll
assume you are familiar with these for the purpose of this article, and
I'll focus exclusively on Mac OS X-specific techniques. Some of the arrows
in your quiver for multi-platform development should include separating
code using ifdefs based on the platform, using custom data types to steer
clear of standard type system dependencies, avoiding depending on bitfield
order, steering clear of compiler- and linker-specific behaviors, and
of course using a good source code control system and open APIs.
|