iPhone

I haven’t had a chance to write any blog posts last week while I was at WWDC, but I had a great time and learned a lot. This may have been the most important WWDC in recent years.

While last year’s WWDC focused primarily on iOS, this year’s conference was about equally split between iOS 5 and Mac OS X Lion. Both systems share some major enhancements including iCloud storage and Objective C runtime improvements that make memory management easier and a lot faster. I can’t write about much of what I saw, since everything except the keynote is under NDA. I will say that I’m running iOS 5 on my iPad and Lion on my MacBook Air and I’m very happy with both and find them stable enough for regular use. I haven’t installed iOS 5 on my iPhone, though.

On Sunday I went on the annual bus Pilgrimage to Apple’s headquarters in Cupertino. As always, the only thing we were able to see was the Apple company store. I took advantage of it to pick up a USB Ethernet adapter for my MacBook Air, since large downloads aren’t allowed over wireless connections during WWDC. I was pleasantly surprised by how fast the MacBook Air USB adapter is and how it just works without any fuss, unlike USB ethernet adapters I’ve used in the past.

1 Infinite Loop

WWDC isn’t all work. There are also a few fun events, starting with Tuesday night’s Apple Design Awards and Stump The Experts. One highlight of the conference is always the Thursday night WWDC Bash. Since the Bash moved from Apple’s campus in previous years to Yerba Buena Garden across from Moscone Center, Apple has been getting major bands to perform at the Bash. In previous years they had Ozomotli, Barenaked Ladies, Cake, and OK Go. This year they got Michael Franti & Spearhead for a great show.

The conference ended at noon on Friday, so I took advantage of the rest of the day to enjoy San Francisco. I walked from Moscone to the Ferry Building & took lots of pictures, which you can see here. I only brought my Canon G12, since I didn’t feel like lugging the D90. I’m very happy with the results, both for still photos & videos.

Our early sales for Sugar Rush were very low, despite a big PR push.  We had a problem on the first day when the screen shots disappeared for a few hours after I tried to update the description & screen shots. Second day sales were even worse.

However, I noticed something very interesting: the number of users in Game Center and the number of users reported by Flurry Analytics were at least 3 times the total number of sales reported in iTunes Connect. At first I thought the iTunes reports were delayed, but a google search revealed that there are lots of pirated copies available. If the numbers are accurate, this means there are at least 3 or 4 times as many pirated downloads as we had legal sales.

I’m amazed and disappointed that an app can be that widely pirated after only two days of sales, especially when the legal sales were lackluster.

As a result I’m very unlikely to develop any future iOS apps, since it looks like I can’t make a living on app sales.

UPDATE: according to a source, the illegal copy got 2000 downloads, which is a lot more than 4x the number of legal downloads.

Sugar Rush

For the last 2 months I’ve been working full-time on Sugar Rush, my new iPhone game. It’s finally going to be released on Tuesday, May 10. We now have a new company, Notion, founded by myself & Patrick Mandia to market Removr & Sugar Rush, as well as other apps we develop in the future.

Thanks to Jonas for designing the original Flash game and providing the graphics for the app.

We’re now designing the iPad version, which will be a separate app since we want to take advantage of the larger display and provide an alternative to accelerometer control, which can get tiring with an iPad.

Although Xcode is all you really need to get started with iOS development, there are a lot of useful tools that can make your life a lot easier.

When you’re writing code, Accessorizer can eliminate a lot of the drudgery. You usually find yourself creating lots of properties, which involves declaring an instance variable, adding a @property declaration, and @synthesize in your implementation file. With Accessorizer, you simply select the instance variables, hit a hotkey, and copy the generated code into your source. For example, if you have the following ivars:

NSString *title;
UIView *aView;
NSInteger count;

Accessorizer will generate the property declarations & implementations, which you can customize. In the simplest case, you’ll get this:

@property (nonatomic, copy) NSString *title;
@property (nonatomic, retain) IBOutlet UIView *aView;
@property (nonatomic, assign) NSInteger count;

@synthesize title;
@synthesize aView;
@synthesize count;


You can also have it generate init & dealloc methods and accessor methods.

For source control, you’ll probably want something more advanced than Xcode’s built in source control, especially if you’re still using Xcode 3.2.x. Even with Xcode 4, it only tracks files included in the project, not related files such as artwork & documentation not included in the project.

For Subversion, I like Versions. After looking at every Git GUI client, the only one I found that I like is Tower. For a file comparison & merge utility more advanced than Apple’s FileMerge, I like Changes. It gives a lot of display options and is also really nice for comparing directories.

If you’re using Cocos2D, you’ll need a few utilities to generate sprite sheets, textures, and particle effects,

One tool that’s absolutely essential is a sprite sheet generator such as TexturePacker. It takes a collection of single images and packs them into a single image file with the most efficient arrangement along with a plist that tells how to access each piece. TexturePacker is available in several free & paid versions.

In many apps, you’ll use some particle effects such as smoke, fire, and explosions. Particle Designer makes creating them fun & relatively easy with a large online collection of shared emitters. The plist file it generates can be used with a single line of code.

If you’re using a tile map, Tiled is a nice, free tile map editor.

If your app uses the accelerometer, you’ll need iSimulate to test it in the simulator. iSimulator consists of two components: an iPhone app and a library you include in your simulator builds. When you run the iSimulate app, all movements & multi-touch events will be sent to your app.

Finally, you’ll need to create a nice demo video for your app. Sound Stage is a great way to record videos from the simulator. It can record either the app content only, the app running inside the iPhone, or a custom background. You can also use iSimulate with it.

I just submitted a minor update to iDjembe that adds Retina display graphics, a new icon, and a new app info screen. For some bizarre reason it’s selling fairly well, so using it to cross-promote Removr and my upcoming game, Sugar Rush, may help the sales of my other apps.

Speaking of Sugar Rush, the first beta went out yesterday. I’m still waiting for some of the final graphics & sounds. The release is scheduled for Apr. 28.

I’m working on a new game that depends on the accelerometer, which makes testing in the simulator difficult. I asked on Twitter about a hack to use the accelerometer in the simulator and was pointed to iSimulate.

iSimulate is a brilliant application that runs on your iPhone, along with a library that needs to be linked into simulator builds of your application. The iSimulate application connects to your computer over your wireless network and lets you send accelerometer, compass, and multi-touch events to the iSimulate-enabled application running in the simulator.

After you finish developing your app, you can then use iSimulate to record video trailers & demos of your app.