iOS Device Consideration

Currently the active iOS device range is quite large. Apple still sells devices as far back as the iPhone 4. The current range of devices available directly from Apple are the iPhone 4, 4S, and 5. Apple recently updated the iPod Touch product line, and only the iPod Touch 5th generation is available now. Apple sells three different iPad models currently, the iPad Mini, iPad 2, and iPad 4. Aside from what is currently available, people do not update their older iPod Touches and iPads that often. We still have an iPod Touch 3rd Generation that gets semi-active use, mainly with Pandora in our iPod docks. Our iPad 2 gets constant use, and still performs great.

So what does this mean when developing games with Unity, targetting iOS? You actually have a large range of devices you might want to support, with different features and screen resolutions. The biggest range of devices I would recommend supporting would be iPhone 3GS, 4, 4S, and 5, the iPad 1, 2, 3, Mini, and 4, and the iPod Touch 3rd, 4th, and 5th generation. Why this range? The bottom rung of devices all have similar performance considerations, and if you are going to support the iPhone 4, it is close enough to the iPhone 3GS, and iPad 1, and 3rd and 4th generation iPod Touches that it might be worth your effort to stretch a bit more and cover these devices. First I am going to run you through what the stats are for each device, and then cover the implications of these stats.

The iPad 1 and 2 have screen resolutions of 1024 x 768 pixels, at 132 pixels per inch each. The iPad 3 and 4 both have screen resolutions of 2048 x 1536 pixels, at 264 pixels per inch. The iPad Mini has a screen resolution of 1024 x 768 pixels, at 163 pixels per inch. The iPod Touch 3rd generation has a screen resolution of 480 x 320 pixels, at 163 pixels per inch. The iPod Touch 4th generation has a screen resolution of 960 x 640 pixels, at 326 pixels per inch. The 5th generation iPod Touch displays 326 pixels per inch, for a screen resolution of 1136 x 640 pixels. The resolution of the iPhone 3GS is 480 x 320 pixels, displayed at 163 pixels per inch. The iPhone 4 and 4S share a screen resolution of 960 x 640 pixels, at 326 pixels per inch. The iPhone 5 was a little taller, and has a screen resolution of 1136 x 640, but keeps the 326 pixels per inch.

Lets talk GPU next. The raw numbers of the GPU generally do not mean much, so I will instead cover the relative increase or decrease of power each generation. The GPU is what drives all these pixels. For every device category release so far, when Apple has bumped the screen resolution to retina, they have generally doubled the GPU power. A retina resolution jump has generally been doubling the pixels in each dimension, for a total of four times the pixels to display. This means that the per-pixel rendering power of the first generation of retina devices: iPhone 4, iPod Touch 4th generation, and iPad 3, all have about half the rendering power per pixel of the previous device in that product line. The iPad 1 actually performs very close to the iPhone 4 in per pixel power, but is a little worse. They share a GPU, the PowerVR SGX535. The iPhone 4 is driving a total of 614,400 pixels with this GPU, and the iPad 1 is pushing 786,432 pixels, or 128% of the pixels of the iPhone 4. The end result of this is, if you can support the iPad 1 when it comes to GPU and rendering concerns, you should be able to support every other device I listed in my recommended device support list.

Device memory is a little misleading. There are so many factors in what memory might be available to you, the lower the number, the less breathing room you have before iOS will send your game low memory warnings and shut it down. This is also a large cutoff point for devices you might support. There are two low end memory targets you are probably going to be choosing between: 256 MB devices and 512 MB devices. There are only three iOS devices with more ram than 512 MB, all at 1024 MB: iPhone 5, iPad 3, and iPad 4. The 256 MB devices are iPad 1, iPhone 3GS, and iPod Touch 3rd and 4th generation. All other devices you might support fall at that 512 MB spot. Luckily, Apple has discontinued sales for all 256 MB devices. Unfortunately, this has only happened recently, the iPod Touch 4th generation was still for sale as the lowest priced iPod Touch until May 30th, 2013. When figuring out your list of devices to support based on device memory, if you are supporting any of the 256 MB devices, you should probably just support the rest. If you are curious what 256 MB of device memory means for your app, if the user has freshly rebooted their device and has no apps running in the background, you might be able to get away with pushing past 130 MB of used memory. In reality, there’s a chance someone playing your game might have Google maps running in the background, Pandora streaming and playing music in the background, and your game running in the foreground. I know this is actually a situation I encounter frequently, when we plug my fiance’s phone into my car’s stereo to provide music and GPS to a destination, while she is on Facebook or playing a game. In a situation like this, if the game crashes due to running out of memory, Pandora and Google Maps are not going to be turned off, she will just switch to a different game or app to run in the foreground. Generally I recommend targeting about 80 MB max memory usage for your app, giving yourself a little leeway to go up to 90 MB if you have to.

The last major piece of the puzzle for narrowing down your device support list is the CPU. You might think this is where easy cuts can be made, but you will again run into a couple tradeoffs here you might not expect. While the iPad 1 has less memory available than the iPhone 4, of which it shares a lot of hardware, and even though the iPad 1 and iPhone 4 technically share the same CPU, the iPad 1 actually runs the CPU much faster than the iPhone 4. The hardware of the iPad product line is generally the same guts that went into the phones of that generation, leaving a lot of room inside the device for a gigantic battery. Apple would often underclock the CPU on the iPhones and iPod Touches, to maximize battery life, so for iPad devices the CPU is generally run at full speed. At this point you are probably wondering, what are the outliers of CPU performance? The iPhone 3GS and iPod Touch 3rd generation both run an Arm Cortex-A8 underclocked at 600 MHz. The iPod Touch 4th generation and iPhone 4 both run their CPUs underclocked at 800 MHz. Gauging the relative performance of devices above that gets a little tricky, Apple began to upgrade to dual core CPU for many of the devices. So it might seem like the iPhone 4S should perform similarly to the iPhone 4 because they both run their CPU at 800 MHz, the iPhone 4S is a dual core device, giving you a lot more performance wiggle, especially when it comes all the background tasks the device might be doing while your game is running.

The CPU, GPU, and device memory are often the most important concerns when it comes to device selection, but some game designs do require other hardware. If you want to build a motion controlled game, the iPad 1, iPod Touch 3rd generation, and iPhone 3GS only have accelerometers available, but all devices released past those also have gyroscopes, which provide much more detailed motion data. If you want to make use of cameras, the iPhone 3GS only has a rear facing camera, and the iPod Touch 3rd generation both have no cameras.

I recommend supporting the entire device range back to the iPod Touch 3rd generation, iPad 1, and iPhone 3GS. While there are not many of those devices left with people actively purchasing new apps for them, if you are supporting something like the currently still for sale iPhone 4, or very recently out of production iPod Touch 4th generation, it might not be a large leap to support the rest of these. For testing purposes, I recommend using an iPad 1 as your bottom end device for GPU and memory considerations, and the iPod Touch 3rd generation for CPU performance.


Joseph Stankowicz is a software engineer who has worked in the video games industry for over eight years. The last two years have had a heavy focus on Unity development, where he helped ship over eleven titles to iOS and Android platforms. He also is really excited about 3D printing, and keeps his Solidoodle 3 printing out stuff as often as possible. You can view his LinkedIn profile here

Tagged with:
Posted in Unity3D, Unity3D Performance
One comment on “iOS Device Consideration
  1. […] apps running. I covered some information on targeting platforms and memory available on iOS here: Even if you are only targeting iOS for release, you are still making a multiplatform game, and […]

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: