We've been doing some preliminary research (and the more technical "fiddling") with Mac App Store potential for game development. So it seemed sensible to share our findings for this week's #idevblogaday post.
What you absolutely need to do first
Go join the Mac Developer Program. It costs $99/€59 and it's super simple if you already have an iOS Developer Program subscription.
Activations (the bit between you buying it and actually getting access to it) are now happening much faster than they were in the early days of the (then) iPhone Developer Program. Ours took about 40 minutes to come through.
When the Mac Dev Program first launched, we experienced some problems adding the program to our existing account as the primary Apple ID (mine) was associated with more than one iOS dev account. This seems to have been resolved now, and it prompted the expected "select your program" drop down.
Getting this done quickly is important for a couple of reasons - firstly because a lot of the resources from Apple are only available to registered program members, and secondly because it kicks off the process of submitting financial and contract information (if you've not already done this for an iOS dev program) - more on the pre-requisites to actually publishing Mac App Store apps later.
Clarifying a few things
Just to make this super clear for those who missed it: Apple is not launching an iOS layer atop of OS X, nor is it making the Cocoa Touch APIs available to Mac OS X applications.
What it is doing is providing a mechanism for packaging, selling, delivering, installing and updating applications that run on Mac OS X: the Mac App Store. Other than the review guidelines (see below), there's really little else guiding us at this stage. We know that we need to use XCode 3.2.5 to sign applications (and their installers), but even that may be up for debate (again, more on this later).
What can Apple tell us?
First port of call should be the Mac App Store Review Guidelines (you need to have your Mac dev account setup to access these). Love them or loathe them, they're a framework for what you can and can't do. And if we're talking specifically about game development, there's nothing really problematic. Hell, this is opening up a platform (and market) for indie games publishing that just didn't exist before. Take it for what it is and do your best, or go elsewhere.
There's also the Mac OS X Reference Library, but at the moment it doesn't really include anything specifically oriented toward apps targeting the Mac App Store.
Another valuable resource is the Mac App Store section of the Developer Forums (dev program account required). There's an excellent submissions FAQ post and amongst many others, a recent discussion on what "Copy Protection" really means (i.e. it's up to the developer). Again, this requires a dev program account.
We're going to get on to development tools and game dev-specific bits in a moment, but first...
Submitting applications
Make sure you've gotten your Mac Developer Program subscription.
Adding a Mac dev program to an existing iOS dev acct gets you free apps contract by default. I'm not sure what happens for completely new program enrolments.
From iTunes Connect's Contracts, Tax and Banking section, you need to submit / agree to the paid applications contract:
- Select request from the above page, then read and agree to the contract.
- Setup any items stating "setup" - this will require banking and tax setup if you're not coming from an iOS dev account / and/or already have those in place. This takes time and is worth doing right away. If you're a non US resident, it takes a while.
Once done, you can manage both iOS and OS X apps from the Manage Your Application interface of iTunes Connect. Apple have provided a pretty good pre-flight checklist that includes all the key information relating to building and submitting applications. Key steps are:
- Create certificates to sign the application bundle, and the installer - get these from http://developer.apple.com/certificates/index.action#overview.
- Create a Mac App ID - this needs an application name ("description") and an identifier (Bundle ID) - normally in reverse domain syntax (i.e. com.36peas.macapptest).
- From iTunes Connect, select Manage applications > Add new application > Mac OS X App and enter the app name, the SKU number and the Bundle ID you just created.
- Complete the availability and version information (which is identical to that required for iOS apps, apart from the screenshot having a 1280x800 minimum resolution).
Once you've done all this you'll be sent to a completed summary in iTunes Connect for this app/version indicating the app's status as "Prepare for Upload" or "Waiting for Upload". It should be showing "Waiting for Upload" before you can use the Application Loader to upload your binary.
Development tools - the basics
Basic toolset is XCode 3.2.5 (GM Seed currently). Best place for information on this is the home page of the Mac Dev Center itself, which includes an important "Important Note" about not being able to use 3.2.5 GM for building and submitting iOS applications.
If you want to do both (build for the Mac App Store and the iOS App Store) as of right now (November 2010) you'll need to either do a parallel install of the dev tools, or use separate machines. If you choose the former, there's information from Apple on the XCode installation configuration itself, a handy dev forum post with a step-by-step guide on installing XCode to a different folder and even instructions on how to change the icon for one of the versions of XCode to avoid confusion.
Development tools - for 2D games (Cocos2d)

So, we've not really talked specifically about games development just yet - here's where we start.
Given the relatively open nature of OS X, there's a good few options available to you. However, I thought it was worth focussing on just two - and two that are more likely to be useful/applicable to an iOS development audience. First up is Cocos2d...
The iPhone implementation of the (originally Python) Cocos2d framework has been a popular choice for iOS games developers for some time. It offers a relatively sophisticated and evolved (despite its <1.0 version) toolset for those looking to abstract away some of the basics.
A little while ago, in fact before the announcement of the Mac App Store if I recall correctly, the support for Mac targets was announced - effectively allowing the use of the Objective-C Cocos2d framework to create Mac-native applications.
Support at this stage is pretty limited, and there don't (at least from my somewhat basic desk-based survey) seem to be a huge amount of people moving forward with it. However, there's an application template available on the cocos2d-iphone.org forums that allows you to create an empty application that certainly builds and runs on the few Macs I've tried.
Development tools - for 3D games (Unity)

Gaining popularity amongst iOS developers is the Unity development toolkit for 3D (and 2D) games. It's a commercial piece of software with a free version that is limited on features but does allow you to build for Mac OS X, Windows PCs and a browser plugin. With the right licenses, you can also build for iPhone, iPad, Wii, PS3 and Xbox 360.
In addition to Unity itself, you'll likely also need some modelling tools - Blender's a popular open-source option. For Mac users there's also Cheetah3D -- featuring a somewhat more straightforward interface.
Unity is a visually-driven environment, but relies on the .Net-supported languages C#, JavaScript and Boo (via Mono) for scripting -- which is where the significant bulk of actual game logic in Unity games is found.
Ultimately, you'll likely want to end up paying the license fees ($1500 p/user w/out iPhone) -- and may actually be forced to if your business turns over more than $100,000 per anum.
Another important point to note about Unity applications is that at present, Unity itself cannot compile and sign an application ready for release on the Mac App Store. It's expected that this support will be announced/released soon, but right now if you want to submit a Unity-built application you'll need to go through hoops to get there. Instructions on exactly how to get through said hoops can be found here, here and here.
What's next (apart from these links)
The Mac platform, apart from Marathon, Myst, Blizzard's continued support and recently Steam's arrival, doesn't exactly have the reputation as a place for gaming that the Windows PC (or even the iPhone) does -- but that's not what matters. What matters is that very soon many millions of dedicated Mac users will be presented with a way to access (and buy) quality applications (you've got to assume the majority of said users are now familiar with the concept of an "app store") built by people like you.
Apple haven't been any more specific on dates yet, just that the App Store will come to Snow Leopard before Lion, and that it'll be in the November-January timeframe.
In the meantime, here's a bunch of useful posts from ourselves and other #idevblogaday bloggers that are relevant to games development for the Mac App Store:
Update: April 2011
Was just revisiting this for some additional resources on Unity targetting the Mac App store, in addition to the above, found: