Tech Focus: Firemint on iPad 2 development
Digital Foundry talks with the makers of Real Racing on the challenges and opportunities of high-end iOS development
In anticipating the iPad 2 release we were actually working with a matrix of different possibilities for what it might be, as time went by and we heard rumours we would adjust the probabilities in each configuration. We worked on basically two versions for iPad 2, one was built for about 25 per cent to 50 per cent performance increase, the other was the "hit it out of the park" kind of performance increase.
When we saw the keynote we switched gears rapidly to the "hit it out of the park" version that meant that we were finishing off a new graphics set that we had been working on. Even with our "hit it out of the park" version we were able to turn on full screen anti-aliasing and many other effects that we didn't think would make it, so Apple surprised us also, but I think we were far more ready for it than other developers.
We considered other things that we could do with the increased iPad 2 power. The 40-car demo that we showed for Real Racing 1 on a 3GS was a great way to demonstrate the power of the new device but hardly practical for the game itself. Better graphics and smoother performance is what we most wanted to explore.
Actually, the game will support both 1080p and 720p through HDMI, but the Full HD version (1080p) got us the most excited. Plus, we wanted to go a step beyond what your typical console game provides - there aren't a lot of current-gen titles out there that run naturally at 1080p without upscaling. The game doesn't just drive the 1920x1080 display on the TV, but it also runs its own 1024x768 screen at the same time. That's a lot of pixels.
Once the iPad 2 spec was locked, the main changes to the speculative code were to import and polish up all the new graphics we were working on and then turn on effects like anti-aliasing, anisotropic filtering etc. There were a lot of details to sort out too, just because the code is quite complex.
We had a solid speculative build within roughly a week from the announcement and then polished from there. Real Racing 2 HD on iPad 2 was not an update - it was the first release of the iPad version of the game.
We had a solid speculative build within roughly a week from the announcement and then polished from there. Real Racing 2 HD on iPad 2 was not an update - it was the first release of the iPad version of the game.
You will get a big performance boost for free without making any code changes. Beyond that it's a matter of tailoring your CPU code and graphics engine to take advantage of the additional horsepower.
There is no need to use any new libraries to see how much faster everything runs on iPad 2. If you want to use the CPU to its fullest though, you may want to think about how you architect your code to utilise multiple threads and there are some more sophisticated things you can do with Apple APIs.
Utilising threads within your game will activate the multi-core CPU without having to do any magic. We have some threads within Real Racing 2 HD that have benefitted from this. However you can use some of the Apple SDK to take tight control over multi-core CPUs, so that is something exciting to explore in the future.
An important point to remember is that the full screen 1080p output coming to Real Racing 2 HD is dual screen. We're not simply throwing the image up onto a HDTV - we're providing a new, exciting way to engage with the game.
We haven't used the phrase "home console mode", and I don't believe it best describes what we're out to achieve. In the years to come, we want playing experience for users to be seamless so you don't have to jump between mobile, console and whatever other device you might have.
We want it to be invisible and natural. One minute you might be hooked up to your big screen at home, iPad 2 in hand speeding along in Real Racing 2 HD. The next you're disconnected and on the go, playing the same race - and all you had to do was unplug a single cable. We don't want users thinking about connectivity, it should just happen.