Choosing iOS only – the rationale

Some of you may know I’ve been working on a mobile game in my evenings and weekends. A solo developer, with lots of help from an artist.

Some have asked why I’ve not chosen the hybrid route so I can target Android, Windows Phone and iOS, and even PC all at the same time.

Here are the reasons, behind a Windows Developer choosing a MacBook Pro, Xcode, Objective C and SpriteKit.

I have an iPhone

I also have an Android tablet, but I prefer to use my iPhone. I love it! So I wanted my game on it. That still doesn’t explain why I’ve not chosen a hybrid route. Apart from wanting a MacBook pro because they looked shiny…..

I didn’t set out to make lots of money

Let’s be clear. If your strategy is to make millions, then you want to hit as many devices as possible and be accessible, translate into many languages and support all those going forward.

I’m only one person

I’ve been in the business of software product development for over 20 years; I know how much effort is required to support another operating system or database back-end. In the last few years, I’ve had first hand exposure into what’s required to deploy a simple PhoneGap/Cordova app to Windows 8, Blackberry, Android, iOS and Windows 8 Phone. My gut feeling is about 30% additional effort per platform, and that feeling of treading in treacle every time you add a single feature. That covers development, testing and designing within the different experiences expected of those devices. You’ve also got to take into account all the configuration of the setup, accounts, certificates, end user agreements, policies, best practice. I’m only one person.  I want to release!

Technology cost

You may think simulators are mature enough now that you don’t need any physical kit. You’d be wrong. Yes they are getting better, but you’ll find things like Apple’s hosted in-app purchase content can’t be bought without a real device. You’ll find it easier to test how your app interacts with phone calls, current music or other apps that might interrupt yours. In the PhoneGap scenario where you are writing HTML and Javascript, you’ll find that individual phone companies ship slightly different internet browsers, that are set to the default. Yes, you tested against the Chrome that comes with Android, but that’s not necessarily the same browser chosen by the phone vendor, and that’s what your app will run in.We’ve had to run down the shops and buy a phone costing £500 just to resolve these types of issues.

Native code is always up to date

One thing that worried me is the rate of new versions of iOS, Android. If you use a 3rd party wrapper, you’re at the mercy of the black box with (sometimes) no easy way to change or intercept that behaviour to workaround it. You might be stuck waiting for an update to Unity or have to write your own PhoneGap plugin to work around issues.

Getting the full developer experience

Working with PhoneGap using Javascript, HTML and CSS may be aligned to your future career needs and keep you current, but it’s really hard work, it wasn’t designed to be a game engine. I find it a poor and slow experience because it’s so hard to debug, navigate and not type safe (unless you’re TypeScripting etc). There’s nothing like using code designed to be used on a platform, with a development environment that’s designed to use that code and platform. I’ve been a Microsoft evangelist and used Visual Studio 6 to 2013. Xcode isn’t perfect, but I wanted to know what it was like to breathe the mac eco system. Obviously cross platform/portable code debugging is moving very fast recently and getting better all the time, but  not only do I want to get the game released – I want to experience how Apple intended me to experience development, and it’s pretty fun. Most questions were already answered on Stack Overflow, and I managed to add my own Q&A’s that hadn’t been found.

Will I regret it?

I now know SpriteKit. I’ve done this all in Objective C. All new to me. That’s not bad. I’ll have released a game. That’s not bad either. But, my game may be a complete flop and I’ll have been glad I’d not invested 200% more effort, and taken more time to develop & test a cross platform solution. Having said that, If I was doing 3D, I’d have probably chosen Unity and C#, but still focused on one of iOS, Android or Windows. – If the game becomes successful, I’ll hire some testers and buy some devices and then rewrite the code in some generic portable way.  Which shouldn’t be too hard – because I followed many SOLID principles and also didn’t put all the code behind UI events, or did I…..? I think there’s a lot to be said for choosing a hybrid solution if you’re really confident in doing so,  are performant in that development environment, and you’ve got the devices, manpower and patience of a saint.  Live by the sword – die by the sword.

I’m sure others won’t think the same way, and will have perfectly good rationale why they chose a different path. All I know is that I find learning another language really easy, and just want to use the best language that enables me to focus on solving the problem, rather than fighting with my favourite language to solve a problem.


One thought on “Choosing iOS only – the rationale

  1. Pingback: TapPhrase – the lowdown | @GilesDMiddleton

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s