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!
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
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.