iOS Performance

Hi Everyone,

So I’ve just finished publishing a game on the Windows (UWP), Android & iOS platforms.

It’s a simple 2D game that really doesn’t push the hardware or show anything of concern in the profiler.

The game is using the Unity defaults in terms of player & quality settings (all platforms are medium). VSync is Every V Blank.

For Production builds, logging is disabled as is the development build flag.

Build profiles are all Master\Release (where applicable) and IL2CPP is being used.

On a 7 year old Surface Pro 3 a production release is a pretty stable 60fps
On a 4 year old Android 8 tablet a production release is a pretty stable 60fps
On a 2020 iPad a production release appears to be capping out at 30fps and doesn’t appear as smooth as the other two platforms (in all areas\aspects of the game)

Now it could be that I’m spoilt by (and used to) the 60fps on Windows & Android and iOS looks poorer by comparison. It’s certainly not bad on iOS, just not as good.

Now I appreciate this post is a little vague in some respects, but is this to be expected with an iPad? (I’m new to Apple hardware & iOS). According to Apple specs the screen refresh rate is 60hz, so why does it not appear to be 60fps when the underlying hardware (CPU\GPU & Screen) is more than capable.

Is there anything obvious\specific to look out for with regards to 2D performance and iOS devices?

Any pointers would be greatly appreciated.

Hmm, just found this post…

https://www.reddit.com/r/ipad/comments/lx737t/ipad_102_8th_generation_screen_refresh_rate/

Think I’ll give it a go and see what happens as mine is an 8th gen.

Are you setting Application.targetFrameRate to 60?

Hi @AcidArrow ,

I left targetFrameRate as -1 (platform default) which I assumed would take into account screen refresh rate, regardless of OS. Tbh it was a decision made when I was new to Unity and likely flawed thinking.

After re-visiting the Unity docs, I’m beginning to think it’s best to offer a 30\60fps option in the game settings…

-1 is different on every platform. On iOS it definitely used to default to 30, not sure if it’s still the case, but why rely on defaults that are outside of your control?