Screen Resolutions

Hey, all,

I’m trying to support as many generations of iOS devices with my game as I can. I can run the game on everything from an iPhone 3GS to an iPhone4S, but have run into a bit of a problem.

The iPhone 4.

Basically, as this has only slightly faster graphics processor than the 3GS, there is no way I can support the Retina Display - the game would just grind to a halt. On the other hand, the iPhone 4S is so fast that I am having to artificially slow the game down to keep it playable, so I’d really like to use the retina display on that device.

So therein lies the pinch. Is there any way I can alter the resolution of the game dynamically? I know I can build the game to support retina displays, but the problem with the iPhone 4 mentioned above stops me from being able to do that. What this means is that on the iPhone 4S, I’ll have to stick with using the standard iPhone 480x320, unless I can find a way to switch them dynamically.

So, to clarify - I want to achieve the following resolutions per device:

iPhone 3GS: 480x320
iPhone 4: 480x320
iPhone 4S: 960x640

Anyone have any ideas?

Cheers,

SB

What you can do is setup two different Quality levels, one with full resolution textures and one that uses low resolution textures. Then run the game at native resolution, but set the Quality programatically based on which device is being used. That should get you close to the same performance as if you were running at the low resolution.

Unfortunately not - the issue is more the use of Alphas. I have a lot of smoke and transparent particle effects in my game, which means that just the extra screen-space will kill the performance.

So there’s no way to actually do this, then?

What would actually happen at runtime in terms of textures? Let’s say I detect 3G and set my Texture Quality to Eighth Res at runtime for example. Well the textures in memory are still full size, so how is the texturing done? A particular mipmap level effectively becomes the main texture? Is mipmapping still done (if more mipmaps lower down)? So, I guess this does not work for textures set to GUI anyway?