i am thinking about a resolution strategy for my app. I don’t know if it makes sense. So i’d like to know what somebody more expert than me thinks about it.
For the interface of my App i use GUIText and GUITexture with explicit Pixel Inset values, …
I want to offer one and only one single App that can serve older 480x320 res devices and also the brilliant iphone4 960x320retina display (and can also run on Ipad with 960x320 but that’s not so important). So my plan is to implement a resolution factor variable in my script (for the inset-values) which is set to 1 when the app runs on an older machine (in my case i want to support iphone/pod second to third Gen) and 2 when it runs on a newer machine.
Later i want to make a second version only for the much stronger 1024x768px iPad using more detail or vertices and make different (more in depth) texts and layouts on screen. In contrast to make one for the old devices and one for iPhone4 and Ipad.
It made sense to me cause i thought i bring out one and the same 3d-content and texts panel layouts for the phones and pods (the small devices so to say). Only that it looks more brilliant on the iphone4 (actually hoping that the Iphones4s fillrate is 4 times stronger to be able to show the same 3d-content in higher res). And one second bigger version for the stronger iPad.
This way an Iphone4 user doesn’t feel pissed when there is coming out a bigger version for the iPad (and not that he might have bought a 480x320 version and than an iphone4/ipad-version is coming out).
my script would kinda look like this and should be future proof:
...
if (iPhoneGeneration.iPhone3G || iPhoneGeneration.iPhone3GS || iPhoneGeneration.iPodTouch2Gen || iPhoneGeneration.iPodTouch3Gen) {
resFac = 1;
}
else { // the rest can only be the new or yet unknown devices: iPhone4G, iPad1Gen, ...?
resFac = 2;
}
I just don’t know yet if the ipad is really strong enough to process more vertices on it’s 1024x768 res than a small device on it’s accordingly smaller 480x320 or 960x640 res.
as side a note: somebody wrote that there’s a distinction ‘universal’ (480x320 both on older devices and Iphone4) and ‘not universal’ (different res). But i have no proof of that.
But anyway the basic idea is to NOT confuse the phone with the ipad. Since they are two different devices that have different needs and ways to use. Whereas the iphone3s and iphone4 and the pods are all kind of the same small devices.
What do you thinkt? Does it make sense? It’s all based on pure speculation so i don’t know if this works with the scripts or if i missed anything.
I think it’s better to use resolution-independent GUIs, rather than pixel inset values and things like that. Then your game works on any resolution automatically, including any screen res if you port it to Mac/PC. It’s what I do anyway. Although it’s not appropriate in all cases; often it doesn’t make sense for UI elements to be scaled up when going from an iPhone screen to an iPad screen.
That’s not really future-proof, because nobody knows what screen resolutions will be made in the future (scaling by 2 might not necessarily work, and in fact doesn’t work on the iPad since 480x320 doesn’t go into 1024x768 evenly). Using resolution-independent techniques is future-proof however.
resolution independent UI is an option though only as long as you use the iphones.
for ipad, please do yourself but especially your users / customers something good and create an interface thats opted for it … there are so many games that just got lame 1 : 1 ports with interfaces totally unusable on the ipad (buttons near unreachable or worse, button toolbars at the bottom on something that has dualsticks, when the whole left / right border are free etc
(for the iphone only) you mean not use Inset-values and just scale and position with transform values? i will think about it deep. But i’m a kind of a pixel perfect fetishist. I have image and text layouts on top of driving in’n’out panels (where position values didn’t work anymore) so i had to take Inset-values. And i even want to use two sets of textures for the GUI where i have full control over scaling and it’s method (bicubic in PS and not linear by the engine) and most importantly create two font maps.
i forgot to write that this script is meant only the for the iphone version where i don’t expect a res-change in the near future except they bring out a square shaped iphone or anything.
And the iPad i hope will anyhow deal with it as an Iphone4 app (like show it 960x640 or any high-res future Ipad give the 2x option).
And if there will be any yet unknown device in the future (like e.g. 3d-capable holographic contact lenses) i expect Apple to anyhow make it possible that it can deal with it as an iphone4 app.
But i declare now at this point in time and space for now and the future that this app runs with exact pixel-inset values as an iphone4 app with the possibility to also run in a 480x320 mode on a specified set (in Connect) of older devices.
But doesn’t that mean that an dedicated 3rd Gen app runs as usual on the iphone4?
I just should own an Iphone4 and see it with my own eyes
Ah man, i think i’m gradually starting to suck with all these thoughts here.
Maybe if i want it all to be hyper super controlled pixel perfect it’s the easiest way to make one app for the 2nd and 3rd Gen market, one for the Iphone4 market, and another totally different one for the iPad market.
But it would be so much more elegant if i could serve both the old and the new iphones in one app.
no, the future device are of course STEREO 3d holographic contact lenses. And u can interact with both, hands and feet. Imagine, playing Fifa in Multiplayer would than feel almost as real as playing soccer with friends in the backyard ; ). I’m joking.
Actually i forgot to thank you for your replies. So thanx!
Actually this is how apple handles it. As of iOs4 every devce has a resolutionfactor, wich is 1 on all devices except iPhone 4. There it is 2. In the future there might be other devices with even higher values.
The system will automatically handle images by checking an imageresource to load. if the factor is 2, it will look for an image named imagename@2x.png.
Thats quite handy and takes all the fuzzy ifthenelse things away from you.
So, your approach seems to go in the same direction.
I anyways wonder how unity will or will not support resolutionindependence in terms of texture swapping by itself in future releases.
Unity does not use UIKit to render so the @2x functionality etc does not even exist or work.
also the scaling factor is nice but actually of no use for at least another 18 months cause the vast majority is and will remain OS3 (all 2nd gen devices where the user didn’t upgrade due to not informing himself - the 2nd gen makes over 65% of all devices thanks to apple still selling 2nd gen itouches day in and out)
I’m using the resolution-independent option (using the transform rather than pixel inset) and it seems to work really well, except for switching aspect ratios. The art was designed for iPad (1024), and it scales down nicely. The artist even included padding so that when switched to 3:2 it will have extra “bleed” on the sides.
However, when going to the 3:2 aspect ratio Unity just stretches all my GUI elements. I was trying to think of a way to compensate for this, like scanning my scene for any GUI elements and adjusting their transforms at run time to account for aspect ratio changes. Does anyone have thoughts on how to deal with this issue?