« An introduction to our component architecture - what we started with | Main | A 360idev Game Jam post mortem… some useful things we learnt that you can apply elsewhere »

Mac App Store game dev quickstart for iOS developers (pointers, lists, links, how-tos and more)

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:

  1. Create certificates to sign the application bundle, and the installer - get these from http://developer.apple.com/certificates/index.action#overview.
  2. 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).
  3. 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.
  4. 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:


References (5)

References allow you to track sources for this article, as well as articles that were written in response to this article.
  • Response
    Response: free game apps
    Mac App Store game dev quickstart for iOS developers (pointers, lists, links, how-tos and more) - blog - 36peas.com
  • Response
    Response: www.sinar.com.br
    I did not understand your second paragraph in the least. What can you mean by that? It is an interesting topic with luck so I want to understand everything you must say. I became not able to find a great many other articles during my search although My business is not ...
  • Response
    Response: caa-htsval.org
  • Response
    Response: pokies funding
    Mac App Store game dev quickstart for iOS developers (pointers, lists, links, how-tos and more) - blog - 36peas.com
  • Response
    Mac App Store game dev quickstart for iOS developers (pointers, lists, links, how-tos and more) - blog - 36peas.com

Reader Comments (4)

I'm wondering if it is a good thing to release a Mac game on the first day. Surely, the store is going to be crowded if a lot of dev move from iphone to mac. I already have 2 mac games and it shouldn't take long to make them MacStore friendly, but I'm just not sure about releasing them on launch day of few months later when the waves of new apps as settle and that the market is bigger.


November 18, 2010 | Unregistered CommenterJC

Hi JC - it really depends on how the marketplace is presented by Apple. If it's anything like the iOS marketplace(s) then it does no harm to be there early on. In fact, because of the rankings system, having a quality product a day one will (should) require less transacted volume to chart early.

If I was in your position and had applications already available to ship, I'd absolutely be getting them up there on day 1 -- you can always take them down, update or modify them as you see fit in reaction to how the market pans out.


November 18, 2010 | Registered Commenter36peas

See last section of post -- just added a few more links.

April 17, 2011 | Registered Commenter36peas

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

Bosch Waschmaschinen

February 6, 2012 | Unregistered CommenterBosch Waschmaschinen

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>