User adjustable performance settings

Has anyone tried having performance settings that a user can change. I can’t recall seeing this in other apps.

My game runs nicely on 3GS, but needs physics settings turned down on a 2G touch. It’s still playable with these settings but occasionally will look a bit wrong. If the settings are unchanged the user will get stutters and pauses, particularly in later levels.

I like the idea of the user changing the settings instead of doing it transparently as it makes them aware that their device is part of the problem.

I was thinking of a performance setting in the options page, and a pop up that tells a user that they might like to lower settings to increase performance (pop up only shown to older device users).

To avoid any issue with Apple review I wouldn’t mention device versions. Just something generic like “You can make the game run smoother by changing the Performance Settings in the Option menu”.

What are your thoughts on this?

Any other games that I can look at that have a similar mechanism?

Thats actually a very bad idea.

Commonly the idea of having “4 different configs” only is to optimize it for it and you should really do that.
Be it by owning test devices on those generations yourself or by having it configurable during beta, let your testers find the values and then integrate it.
But in the end when released there should not be such settings, it should “just work” for your users, be as simple and intuitive as possible … phone users don’t want to learn about technical terms to play the game :slight_smile:
I don’t recall seing any game missinterpreting the iphone as a pc (pcs are the only platform where this kind of stuff is common due to multi billion configurations)

Also apple will potentially reject it if the idea is to make the user aware of “the device is the problem”. Such stuff mentioned in the description leads to rejected, it leads to rejection when you have popups about that …

Thanks for the input although I do not agree that it is a really bad idea. Maybe a slightly bad idea, or maybe just not what happens at the moment.

When it comes down to it the game experience is not as good on a lower end device. I’m effectively trying to convince these users not to write a bad review while at the same time not giving Apple grounds for rejection. As I attempted to make clear in the post nothing in the App description, game text, etc would ever suggest there is something wrong with the device, just that the user has some options.

That said it was only a thought, and I will probably stick with convention and an automated solution. I may implement a system which varies the settings on a level by level basis (some simpler levels run fine on both devices).

Are there any clear statistics on market share of app purchases for the various devices?

What dreamora was trying to say (I think) was that you should try to detect the device version and do the quality settings automatically through code based on the device. That would be a better user experience than having to tweak stuff themselves.

I’m also experiencing a big difference in performance on older devices. From my testing so far, I’m seeing something like the following:

  1. Newer devices:
    iPod 2nd gen, 3rd gen, plus iPhone 3GS
    Frames per second in the 45-55 range

  2. Older devices:
    iPod 1st gen, and iPhone origina/3G
    Frames per second about 20

These results seem to suggest that it is not acceptable to create one version for all devices. If the game is scaled for the older devices then you’ll have to compromise drastically on the eye candy, which I think is not a good idea. I’ve seen too many crappy games already, and I don’t want to join the queue. I want to do something different.

Does anyone know how to detect the version of the device, or detect the ARM CPU speed?

I’m planning to load different levels and different effects depending on the device capabilities. If I do this transparently, Apple won’t have a clue and there is zero chance of being rejected on that issue.

Thanks,
Mark

iPhoneSettings.generation

I wouldn’t qualify the iPod 2nd gen as fast though.

If you are good at scripting can’t you access the iphone version through some code? Then onload, detect which phone its running on and adjust settings accordingly?

Also, though like others have said making that user adjustable and not optimizing for all varients of your hardware is a bad idea. Sure it might not be as pretty on a 2G, but if you don’t want to mess with changing settings, build once to run all legacy and new hardware.

sure you can, just check for the iphone generation :slight_smile:

I know you can adjust automatically and this is the usual strategy. For my game it’s not even really an issue as it is fairly simple with a bit work I should be able to get it running fine.

However as a thought experiment imagine the following…

A game which has great graphics which are one of its selling points and runs well on 3rd Gen/3GS. In order to make it run well on the other devices lets assume you have some simpler versions of key models, some different textures and less effects. This significantly impacts the look of the game.

If this is changed automatically then you might get bad reviews from users of old devices “Was supposed to look good but really it is pretty average”.

If instead it starts off with the great graphics, and maybe a few levels in the older device begins to run into trouble users are told about the settings page. In this scenario their review might read “Looks great although I wish I had a newer device!”.

Not necessarily how it would play out, but I think with careful selection and appropriate use there may be some scenarios where such an approach has a positive effect.

Anyway I guess this forum is for practical advice not esoteric thought experiments.

:slight_smile:

Hi JohnnyA, I agree with your comments. From my experience, there is such a huge difference in performance between the difference generations of devices that it doesn’t make sense to optimise for the older devices. On the other hand, if the game is optimised for the newer devices, it will run very slow on older devices.

So, what is the best solution?. The best solution is whatever it takes to maximise sales and profits, and that has nothing to do with BS politics from Apple, or individual user experience. It’s all about maximising the user experience for the majority of users, and if that means screwing the 5% of people who own 2st gen devices, and pulling the wool over the eyes of Apple, then so be it.

I think the best solution is to scale the game according to the capabilities of the device, but focusing more on the overall user experience for the device that is most popular.

At the end of the day, performance scaling is essential in my opinion.

Lukas, you mentioned iPhoneSettings.generation. Is this a standard method provide by the Unity engine that gives outputs the device and device-generation?

http://forum.unity3d.com/viewtopic.php?p=217059&sid=c9d0f8c12c4d0029036f2fb9cf51c57e

Thanks for the feedback. That’s very good, and exactly what I need. I trust that Unity is doing this through the standard API, because I was under the impression that Apple was rejecting apps that changed settings depending on the model/generation.

I don’t want to get my app rejected, obviously.