iPad

I’ve decided to open source PicSlide, which was one of my first iOS games. It isn’t selling enough to make it worthwhile updating for the iPhone 5. When I looked at the code I didn’t find it too embarrassing and it didn’t make me want to vomit, despite being written in 2009, so I decided to share it. Some pieces like scaling & slicing images and doing Quartz drawing may be helpful as sample code.

The source code is now available on Github at https://github.com/mike3k/picslide

Nexus 7

I’ve had a Nexus 7 for two weeks and there are lots of things I love about it and some things I really dislike.

Good:

  • I love the size. After using it, I really want a 7″ iPad.
  • I really like the universal back button at the bottom of the screen.
  • The soft home button moves to the correct position when you use it in landscape mode.
  • Rearranging icons is less annoying than in iOS.
  • Widgets can be placed on the home screen.

Not so good:

  • UI is ugly. No rounded corners, shadows, or gradients. Everything looks flat & square.
  • Endless march of notification icons across the top of the screen.
  • Many of my favorite apps aren’t available for Android. The only Twitter app I use is Echofon because it’s the only one that syncs my mute settings as well as unread tweets. It isn’t available on Android, which seriously limits my ability to use Twitter on the Nexus 7.

For a long time I dismissed the rumors of a 7″ iPad, but after using the Nexus 7 it makes perfect sense. A 7″ tablet is a lot more comfortable to use than a 10″ tablet, yet the amount of screen real estate is just as usable.

For some reason I don’t understand, iDjembe, which is my least interesting and lowest-rated app, is outselling my other apps, including Sugar Rush. This is not good because the low ratings brings down my average app store ratings, despite Removr & Sugar Rush’s much higher ratings.

Last week I tried to kill iDjembe by quietly raising the price to $1.40. That did stop iDjembe sales, but at the same time it brought down the sales of my other apps. Rather than kill it, I tried the opposite by making it free. That experiment seemed to work, and I’m now getting 700-800 free downloads a day, so I decided to keep it free and use it to help sell my other apps.

To go along with the pricing change, I submitted a minor update to iDjembe, version 2.1.2, which updates the info screen with the description & app store link for Sugar Rush, and makes the info button a little more prominent with a cute sugar rush player icon.

Screen Shot 2011-06-26 at 5.25.43 PM.png

I’ve been able to test my apps in iOS 5 and the only one that has an issue is Removr. Sugar Rush is 100% compatible with iOS 5 and doesn’t require an update.

Removr immediately returns to the menu when you tap play or try to go to a level. I’ve already fixed it and will submit the update after some further testing as soon as Apple accepts iOS 5 application updates.

There seems to be a change in SQLite’s behavior under iOS 5 which affected Removr. I’m storing the level maps as a SQLite database in the application bundle. In the current version, I’m opening the database as follows:


int err = sqlite3_open([self.dbpath UTF8String], &db);

Under iOS 5, that fails unless readonly mode is specified when opening the database. The simple fix was merely to specify read only mode as follows:


int err = sqlite3_open_v2([self.dbpath UTF8String], &db,SQLITE_OPEN_READONLY,NULL);

I will release a Removr beta in the next few days to anyone whose device ID I have (I can’t add any new devices until July 16).

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.