A little over 13 months ago I ended my last post with the following words:
“For sanity and experience I’m taking a brief detour to go through the process of getting an app onto the app store. The features I’ve spent the last few months creating lend themselves nicely to building what could only be described as a hugely over-engineered sand timer.”
“I also intend to do it by the end of the month, which is very possible if I stop procrastinating, worrying and second guessing myself.”
Two days ago I finally pushed The Hourglass Emporium into the review process on iTunes. At current rates I should be accepted or rejected by the end of the week, so I thought it about time to look back at a the process of making an app that went, what can only be described as, somewhat beyond the end of the month.
Thanks to source control, I’ve got a very accurate picture of the timeline of the project, at least technically. On the 8th of March 2013 I checked in my first hourglass level. I found an appropriate image on google (this one to be precise), then carved out the glass area to put sand in. On the 11th I had added a flow rate controller, to mediate the sand and count down whatever time I chose. By the 13th I had added a system for pre-calculating where the sand would fall and colouring the initial sand correctly to build a picture as the sand flowed into the bottom bulb. Nothing technically difficult, just running the simulation twice and ensuring I used the same inputs and pseudo-random numbers both times. On the 18th I added taking photos, so you could use an image of your choosing as the sand texture and either watch it fall apart or reconstruct from a mess of grains into your chosen image. Then came reflection and refraction, using the front facing camera to place the user’s image dimly reflected and distorted onto the glass.
Sometime near the start of March I had received a text out of the blue from a guy called Matt who told me “Chris said you were looking for an artist”. After some initial confusion, I worked out that “Chris” was Chris Knott (at the time working at Lionhead, now at Rodeo Games), the beefiest and most Zangief animator you could ever hope to meet. Matt was Chris’ next door neighbour and offered to knock up some hourglass art for me. After a little back and forth he sent me this sketch of a darling little octopod, ever since referred to as The Kraken. After colouration and polish, the final art looks like this. With the winking (or blinking? we’ll never know) animation he makes for a very loveable character. It felt great to have actual art turn the app from coder demo to something you could imagine on other people’s phones. When I took prototypes of game ideas to the indie dev meet up in Guildford, I was surprised at how difficult it was, even for very experienced developers, to see past coder art and temporary textures and objectively view the gameplay. Seeing how high fidelity art transformed my prototype into something I felt could sit unashamed on the app store was a great feeling.
Around the time Matt was turning his sketch into final product, I was lucky enough that my friend Tamsin (of Wonderland and JiggeryPokery) put me in contact with an artist she’d mentored on an animation course, Silvia Bartoli. Silvia is a maker of many a fine critter and beastie and, while she was mostly interested in making games, she did me the great service of offering up her artistic abilities to create an hourglass for me.
An hourglass formed almost entirely of cats.
You can find a snapshot of that artistic finery here. Blinking animations followed again, bringing the hourglass to life, and it still looks pretty much unchanged from where it stood almost a year ago.
Another hourglass soon followed from yet another friend of Tam’s, Imi Hayati, who worked at Wonderland back in the day. In less than a week he went from a water soaked pencil sketch to this finished hourglass, replete with blinking animations and fading cat (blinking and cats forming an unexpected, yet continuing theme in the world of virtual hourglasses). All this happened by the start of June 2013, while I was bug fixing, adding features and optimising code. Certainly more than a month had slipped by since I started this endeavour, but I had no intention of releasing something sub-par, even if it was a pet project that had no realistic chance of being a break-out hit (I feel the market for quality, high fidelity hourglasses is somewhere between “tiny” and “non-existent”, but it might unexpectedly be as large as “some”). However, my eye was on the longer term goals of both writing systems I could re-use in future endeavours and making an app that, if it didn’t make me money, would at least be something I could use to get me a job, should the need arise.
In fact I was starting to feel the pinch financially. Whilst I was nowhere near the bottom of my savings barrel, going for an all-or-nothing strategy of blowing those savings to support myself, whilst making an app that might, at best, pay for a few hot dinners, didn’t seem like any kind of winning formula. It had gotten to the middle of June and I was on a family holiday, with my computer set up on the pool table in a cottage in Wales. Between bouts of bug fixing (and occasionally seeing my family), I was writing up design ideas for what I would do after the hourglass app was finished. I’d been going back and forth between a sand castle idea (too much art required), a sand art app (is there a market for it? what would it take to make it fun?) and an app revolving around the blowing up of things into tiny, tiny pieces (is it a game? is it a toy? what’s the monetization strategy). Any of which I would have enjoyed making but all of which had issues and none of which seemed like the perfect course of action.
As I circled myself in interminable uncertainty, I received two job offers in the space of 24 hours. One from a friend who wanted an app to be made for his business, the other from Lionhead asking if I wanted to come back and contract for 4 weeks on Fable Anniversary: a reworking of Fable 1 onto Xbox360. Be it serendipity or random chance (clue: it’s random chance) I took them both up on their offers, to give myself time (and funds) to figure out what I would do next.
Working 5 days a week slowed the final development of the app significantly. I’d chosen a name: The Hourglass Emporium. I’d also chosen and cut the features down to a manageable set. Taking pictures and rebuilding images were both out. The reality of user images against the cartoon backdrops jarred too much and whilst rebuilding the image while counting down from 10 seconds would take a few seconds to calculate (by running the simulation through to completion before starting the timer), the pre-calculation increased linearly with the time chosen, turning an interesting idea into an annoyance for the user. Reflections and refractions were also dropped, as they never looked right and were just non-core features eating CPU and GPU cycles.
I added in iAds and in-app purchases so I could give the app away for free and still hope to make a little money out of it. Drawing people in with a wall of cats then up-selling them Krakens, Wonderlands, Demons and Angel Bears (the former by my friend Clare Innes, the latter again by the octopod loving Matt Brown). Choosing between hourglasses meant adding a carousel feature (open sourced from here, but it’s never as simple as dragging and dropping), then a page in the GUI for each artist, giving them a bio and a link to their web pages, which is the least you can do for people you feel guilty for working so hard on something you deeply expect will give them back very nearly nothing. I added a variety of alarms, each stolen from free sound, options for changing the clock sizes and timing from a second, to a second short of a day. I installed credits and hints pages, a variety of methods for pausing and restarting the hourglasses and the ability for users to email me feedback, should the fancy take them (I can only imagine nothing good will come of this).
I also added five different sizes of grains of sand, because this would, in no way, be a complete pain in the ass. If you couple the limits of CPU power across the range of Apple devices, multiply it by the different screen sizes and their respective aspect ratios, then fuse that with five sizes of sand grain, which you want to be as plentiful as possible, but pass through the neck of the hourglass with enough alacrity to countdown whatever time the user chooses, then you might just find yourself sitting in front of xml files at some ungodly hour of the morning, minutely adjusting an endless stream of numbers for reasons you’ve either forgotten or regret or both.
But it’s over now and, thanks to writing a test harness at the 11th hour, I’ve had an iPad and iPhone faking touch inputs, level loads and random gravity for 24 hours apiece without crashing. I feel I’ve achieved making an hourglass timer of robustness, fidelity and finery, far beyond the realms of the necessary and will have plenty of code and systems that will make the next thing I work on a giant leap easier than it would otherwise be.
Onto the next thing.