Make a quality option for your games: it is possible.
Hi guys, i always wondered why modern games doesn't have a quality option and a game that works amazingly on iPhone 5S, probably sucks on iPhone 4. And that's normal, but there is no way to turn the graphics down a bit.
I tried to make a method to swith on and off graphic features and it seems to work pretty nice. Imagine it as an option for your game:
so we have a game attribute game.Quality.
For this test i have only a boolean but you can make it an int so we have 1 to 5 for example:
if game.Quality is = "5":
spawn a lot of particles.
if game.Quality is >= "3" and < "5"
spawn very few particles.
if game.Quality is "1":
do nothing.**
or more simply
if game.Quality is true
spawn 5 "explosion" actors and destroy
otherwise
spawn 1 "explosion" actor and destroy**
the funny thing is that most of these "features" work in realtime, so you can affect game quality in realtime.
This video shows that: coins animations that stop, background animation stops(water), some background is not visible, some "colored overground" disappears, explosions are exchanged with non additive explosions, less particles when exploded, etc.
http://www.youtube.com/embed/BU5H4YAE45c
What do you think?
Comments
This is basically what Resolution Independence within GameSalad does, it generates lower resolution versions of all your game images - so a Retina iPad will get hi-res images and iPad 2 (and earlier) will use images that are only 1/4 the resolution.
Throw in your ideas about variable effects and so on and I think you've got a viable solution to slower / older machines.
You can even check the 'speed' of the device and set a quality automatically. There was a template that tested if the device was and iPad or iPhone or something, using something similar. You basically need to do a basic loop of some sort and compare the results on different devices on project start. For example "every 0.01 seconds test = test + 1". It should give different results on slower and faster CPUs (I think). And if not, I'm sure there is some method that we can guess how fast the device is.
I used to do this when we were still aiming for iPhone 4 performance. Though it would just be a boolean and entirely disables heavy particles and some other special effects. Worked wonders FPS-wise (e.g. boost of 10-15).
It got tiring after a while and less and less people were using 4, so we aimed for 4S minimum afterwards. Now the issue is no longer processing power; it's resolution. It's become quite a pain to design content-heavy interfaces for multiple resolutions