I have a question about game performance (fps) when running in different devices.
For example, Breaker runs fine at 60fps on my iPhone 6S+, but it’s very sluggish on my old iPad 3rd gen (20 - 30 fps). I’ve seen that if I disable floor reflectivity and switch off one or two lights, the fps go up to a more playable 40 - 45 fps on the iPad.
Is there any way to know the device GPU capabilities or processing power beforehand, so I can disable some of these features in code in order to maintain an acceptable framerate on older devices?
There are other API’s that deals with your request. Have a look at UIDevice, part of UIKit - it will provide you with all the current device information.
The reflectivity of the floor is definitely a performance hogger. If you take a closer look, you’ll actually notice that it duplicates everything in your scene, ultimately doubling the poly count. So use it with caution.
Also have a look at the geometry primitive attributes, most of them got a segment counter. This controls the generated poly count - make this as low as possible, but high enough so that the geometry still represents what it’s supposed to be.
Thanks for your suggestions, Chris. I’ll take a look at the UIDevice documentation.
Great book, by the way. I’m really enjoying it :]