Entries in mac (2)

Wednesday
Nov172010

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:

 

Wednesday
Oct202010

This is important: reflections on the Mac App Store from a (iOS) developer perspective

What does the Mac App Store mean for (iOS) developers? Simple: I have no idea.

Nobody could have predicted the creative and commercial innovation spawned by the (then) iPhone App Store. The same applies here.

My original #idevblogaday post for this week was going to be about game controller design patterns, and was going to be suffixed "...iPad not yet welcome". That suffix was a lead in to an enthusiastic, but still frustrated, mini-rant about how the iPad has really yet to shine as a gaming platform. The majority of its titles either use (or abuse) their iPhone ancestory when it comes to control mechanisms. That will change as the platform evolves, and I'm very excited to developing a title that I see being a part of that.

But, everything just changed. Again. The Mac App Store doesn't just open up new design patterns, it opens up new commercial models, a massivley expanded marketplace and another solid charge of creative enthusiasm.

So, what do we know?

Discovery

The App Store opens up access to millions of customers that you couldn't get to before. Suck up the 30% because the expanded market more than balences that out.

Things like paid upgrades and grandfathering in existing licenses will need to be sorted out for some of the significant studios currently doing OSX development. Apple responded to feedback on the iOS App Store, why wouldn't they with the Mac equivilent? Remember it's in their interests to do so.

The most important thing to point out (and it would seem that many miss this), is that people love to buy stuff if shown how. Even more, they love to buy quality stuff. This is where we, as app developers come in. It was possible to purchase software for your smartphone long before the iPhone and the App Store - but it only became significant when Apple guided users down the path to purchase.

Feasibility

The stream-lined route to market makes a million niche apps feasible all of a sudden. And there are _lot_ of niches when you consider the evolved (sans a real cloud strategy) desktop experience we're looking at.

Standalone App Store app, not part of iTunes

A minor detail to some, but a telling sign for many -- if this had been based around iTunes I'd have had significant reservations about Apple's commitment. They understand how important this is, and we now know that they also understand that iTunes is a burden to iOS and the App Store in general.

Technology

This almost certainly means new technology (at least in the install/update and encryption space), but most likely also in a form of UIKit. Although developer.apple.com is sparse on detail right now, I'm sure someone will shout when we see more on what's coming down the API/SDK pipeline.

For iOS game devs there are a couple of technology treats waiting for you already - cocos2d already supports Mac OSX targets for example. How far behind do you think Epic and Unity are? 

The many ways of multi-touch

As I said in the introduction to this post, even the iPad is yet to catch up to its multi-touch potential. Given the prevelance of multi-touch interfaces made available to us by Apple - particularly the MBP-style touchpad, the magic trackpad and the iOS devices (I'm not one for the Magic Mouse) - there's so much more scope for innovation here.

I'm particularly excited about touchpad-based multi-touch applications on a desktop interfaces - yes, the precision is not quite the same as on a touch screen, but there are no more thumbs in the way (and no more thumb prints).

Installation and updates

Ever try to explain mounting a .dmg, installing and unmounting to a non techie?

I've been a full-on Mac user for 2 years, and I'm still constantly frustrated (and often confused) by application updates. No two applications manage it the same way, and very few get close to acceptable user experience. I don't care why it's that way, I don't care that it's in part due to my impatience. I'm not an idiot and it frustrates me. I want it to be better - and the App Store update system makes it better.

Miscellany

Full screen apps - I've not seen many apps get this right on OSX. Blizzard's WOW and Starcraft share a CMD+M keyboard shortcut. That's about as good as it gets at the minute.

90 days - enough time to think, not too little to panic.

--

This is a positive thing. Yes, there are scary bits for existing Mac devs -- but I don't believe there are many who haven't envied the willing market the App Store provides. You've got a choice, get on with it and reap the rewards or don't. As @mattgemmell pointed out earlier, "Devs who are relieved the Mac App Store is optional haven’t yet realised that that’s an irrelevant point." And, just as importantly @chockenberry's "Remember how much the iOS App Store has changed over time (with our feedback) — the same thing will happen on the Mac."

Oh, and in other news, Chillingo was just aquired by EA for $20 million. It wasn't their Windows Mobile or RIM legacy that got them there.