Iphone 3GS running better than the Iphone 4?

Hi guys quick question.

Does anyone know why an app would run better on the 3gs compared to the 4?

that is pretty normal if the game is graphics bound. Reduce the usage of transparency, pixel lights and heavy shaders and it should get better.
alternatively let the iphone 4 run at iphone 3GS resolution or at least not its native one (in Unity 4 you can use the Screen classes possibility to set the resolution to render at a smaller than native resolution to overcome apples bad decision on the GPU for iPhone4, iPod Touch 4 and iPad1)

The iPhone4 and the iPhone3GS have exactly the same graphics processor, but on the iPhone4 it has to render 4x the pixels.

Quick answer:
The hardware on the iPhone 4 is not that much better than 3GS, considering it has four times the number of pixels to take care of.

No way, Thats totally fu**ing retarded.

Thanks guys, Any good tips on performance optimisation, Our game is heavily depended on a 3D game world, with around 80-100 Drawcalls and a max of 20K Tris?

I mean we run at 20FPS but we want more :smile:

Either reduce the rendering resolution after game start with Screen.SetResolution to something between 960x640 and 480x320 or reduce the overdraw (the editor has an overdraw rendering mode) as thats likely causing the problem.

also keep in mind that every object hit by a pixel light is redrawn once again with an alpha texture so ensure to not ‘batch’ objects together if they are not local to each other and small enough as otherwise the redraw impact becomes pretty beefy. That might be causing your draw calls potentially and reducing light ranges / not making all pixel lights (use unimportant as light mode) might help significantly

Thanks Dreamora, We used low to medium resolution in the build settings and now getting a steady 25FPS on the Iphone 4. Again thanks mate.

Less pixel to draw and no GL2.0 on 3GS.

Is OpenGLes 2 still optional these days? I thought We were going to be forced to go for 2.

You can still disable it into AppController.mm

Not sure it is really a must to have if you do not need it…

There is an option within unity now

So i don’t think you have to mess with your xcode project, but I wasn’t sure apple were going to allow it.

Apple still allows it.
But apple has officially no hardware anymore that even is OpenGL ES 1.x only.

The last device that had it that was supported was the iPhone 3G which dropped out with iOS 4.3
iPhone 3GS+, iPod touch gen3+ and all iPads are OpenGL ES 2.0

Also if using this graphics setting helps the performance then the culprit is normally lights. Go through all your lights and set them to unimportant so they render as vertex lights.
Or simply go to the quality settings and set the mobile to use /create a quality level where 0 pixel lights are allowed. That way you don’t need to modify lights

100 draw calls wouldn’t be helping either! Ouch! Have you reviewed efficient use of textures?

My game currently runs at its peak at 35 draw calls and I’m not happy with that and currently reviewing textures/batching to lessen to it a preferred 25

I understand what you are saying, But 2 things

  1. Unity’s angry bots used about 80 Drawcalls.
  2. we are using the top down assets from Michael-O

Even with all of these draw calls we are still getting 25FPS on the 3GS now due to some optimisations we have carried out. and 30-35 fps on the 4.