When making a mobile game it’s important you test on physical devices as early as possible and frequently. I can’t emphasise that enough. It’s all too easy to rely on whatever simulator your development tool provides and assume that everything will just work when you eventually stick a build onto a device. If that’s your plan then you’re asking for a world of pain later on.

You might be experiencing silky smooth 60 frames-per-second when running from your desktop but there’s absolutely no guarantee that your target devices will be able to match that performance. Also, testing on only one device can seriously mislead you. Take iOS for example. Everything might be running fine on your iPhone 6 but that doesn’t mean you’ll get the same performance from an iPhone 5, an iPhone 6S, an iPad mini, or an iPad Air. Each device will have a different CPU, GPU, and memory. Plus there’s also the different aspect ratios and screen resolutions across your range of target devices to worry about too!

Getting your hands on so many devices however isn’t easy. Of course if you’ve got the cash then you can go out and purchase them but that’s gonna be expensive. Even second-hand devices aren’t always cheap. Friends and family are a good bet and it’s the route I took. I was able to source a good number of devices that gave me enough coverage to be confident that Dare the Monkey was going to run on most iOS devices out there.

One thing to be careful of is the actual specification of a particular model. For example, the iPhone 5 comes in many flavours. There’s the original iPhone 5, the 5C, and the 5S. Both the 5 and 5C are 32-bit devices whereas the newer 5S has a 64-bit architecture. I opted to test with the original iPhone 5 because it had the lowest hardware spec. If I could get the game to run fine on that then it would also work comfortably on the higher spec 5S.

I used the same tactic when testing on iPad. The iPad mini 2 was the lowest spec Retina iPad I could get my hands on so I took that above a few other iPads that were offered to me. While I wasn’t that fussed about non-Retina iPads, I was also able to get my hands on an iPad 2 and thought that it would be worth the effort getting things running on it. After all, the iPad 2 was an incredibly popular device and there still seems to be a huge number of them out there. To my delight the iPad 2 actually ran Dare just about flawlessly!

One other device I needed to look closely at was the iPhone 6 Plus. I’d naively assumed that Dare would run fine on it if it was already working perfectly on the standard iPhone 6. This turned out to be a false assumption. While the 6 Plus has a much larger screen resolution it actually has the exact same CPU and GPU as the 6 and therefore has more work to do to hit 60 fps. I got hold of a 6 Plus a little later than I should have and I’m currently having to spend more time than I would have liked making tweaks to maximise the frame rate on it. Even the slightest optimisations to my level designs this late in the day takes ages and is holding me back from actually pushing on with the remaining levels. Lesson learned though and I’ll know better next time.

While most of the performance tweaks I’ve made aren’t difficult to do, it is extremely time consuming making the necessary adjustments to each level. I was able to catch most of my issues early on but only because I tested on devices from the start. I can’t imagine how difficult it would have been if I’d waited until the end of the project to actually test on devices. Given how long it has taken even at this stage, I’m not sure I’d have the energy to go back and make the changes at the end of the project.