Perseverance vs The Sunk Cost Fallacy

I’ve just had a quick flick through my blog posts from last year. It makes me laugh, how much of a song and dance I made about learning Unity. It took a few months of struggle, but I’m in a comfortable spot with it now. Any game I want to create with it, I could do. Anything I don’t know how to do, I can learn. It’s amazing how much confidence you get from writing your own shaders 🙂

Don’t get me wrong – I still feel like I’m going to give myself RSI, what, with all the pointing and clicking you have to do in the interface (give me a Sublime Text any day!) The UI, being entirely alien to a text-editor jockey like myself, was the main cause of cognitive dissonance – not, as I had expected, the move from JS to C#. Unity is very opinionated in how it does things; in the end, it was simply a matter of agreeing to disagree, and doing things Unity’s way. Sometimes you have to write less than perfect code, rather than the glorious, perfectly encapsulated abstraction you had in mind. Does it grate? Yes. Does it matter? No. (Or, it might, later on, but you were going to go back and refactor anyway, weren’t you?)

You might wonder why I put myself through the trouble. I know JS pretty damn well, I could have easily written a mobile game (from scratch, with Impact.js, using Phaser (or whatever)) in half the time; wrapped it in Cordova and plonked it on the App Store, job done. So why didn’t I?

I’ve written a few HTML5 mobile games for clients. Some pretty big clients. And, clients being clients, they’re not bothered how much of a feat of engineering it was to get the same game working perfectly cross-browser, cross-platform, on desktops, tablets and mobile phones. They only care that sound doesn’t play in the Android stock browser on a (manufacturer modified) Jiazu N3 running Android v1.36.34x alpha-something or other when they hold the phone in landscape orientation whilst standing on one foot and hopping in a circle.

If it was painful for one client, I reasoned, what would it be like when your ‘clients’ are the general public? I don’t want to deal with one-star reviews and irate emails from players experiencing bugs on niche devices that I can’t possibly lay hands on. I’d rather spend more time up front and trust Unity to deliver a consistent cross-platform experience.

I appreciate that this rationale is contrary to my usual, lean-development minded take on things. There’s a lot to be said for getting an MVP released, and iterating on quickly based on customer feedback. But I’ve heard enough horror stories from fellow developers working on both desktop and mobile wrapped HTML5 games to confirm my views on this. Once my game is out, I need to be focused on player acquisition and implementing retention-focussed features – not firefighting edge case bugs and negative reviews.

So! That’s why – despite the fact that I love it to bits – I will not be using HTML5/JavaScript to build native(ish) mobile games.

In other news: PEAS! 😀

My lovely little veg garden is coming along – it’s already bigger than the herb garden I created last year. It’s amazing how a tiny plant – something that I could fit into the palm of my hand – is now almost as tall as I am, and provides me with fresh, delicious peas whenever I venture outside.