My iPhone game is choppy - how can I improve the framerate?

My game is choppy (below 20 fps) with <30 draw calls and <4.4K tris.

Is this gameObjects count fault ?

Too many game Objects ?

How many gameObject can an iphone3G / ipod2G have ? 1000 ?

I'm using now for my level 120 pieces (Mesh) with 4-24 box colliders each. That will be many thousand (around 3000-4000) gameobject in the scene, and in fact, even if stats tell me that polycount is 4.4K and draw calls are 19, my framerate dropped from 29 to 19 FPS.

Why ?

Turn on the profiler (the instructions are in the Unity iPhone Manual, under Optimization, I think), and see how much of your frame time is spent in rendering, physics, script, etc, then you'll have a better idea what to investigate.

Switch from "Safe and Slow" to "Fast and no exception", maybe that helps :D

Don't know how many objects the iPhone can handle, but it somehow sounds too much to me but i don't know.. i rarely have more than 20-30 objects and 10-20 drawcalls.

It can also be some scripts which rum slow, although 3000 objects sounds like suite a lot, try deactivating some scripts and see if it helps.

Ok, I'll profile more deeply.

I have already "Fast and no exception" in the player settings And I have only 4 / 5 optimized scripts for running the whole game.

You mean try to disable the gameobjects by script? Because I don't feel to disable any of the 5 scripts I use for the game :P

That's the problem! :)

i rarely have more than 20-30 objects

By the way, I shot 3000, but we are around 1200 objects ( I actually almost counted them ). Problem is that we can't put 10 colliders on a single gameObject in Unity, you need 10 gameObjects !

And of course I'm talking about an iPod 8 gb and an iPhone3G stats, not the newer 3Gs and ipod32gb.

I achived this high number of objects because I have multiple box colliders as children of my mesh object, some of this have up to 30 box colliders as children, I still don't understand how you can state you games only have 20-30 objects, maybe you are doing FPS so you use occlusion culling, but on my project this is not possible as it is not an FPS, or third person.

Do you suggest a Custom Script which disables all static level meshes/pieces/gameObjects which are not-in-view and check this every single frame ? Won't this script be a cpu-killer ?

What Am I missing ? Perhaps there is a way to combine 10 box colliders in one object ?

We finally solved the problem reducing DRASTICALLY the game objects count.

We could did this merging the more possible the box colliders and using mesh colliders for complex meshes.

The mesh colliders are in a certain numbers, but not many (like 20-30) on simple max 200 polys meshes. And this is going very good now, because the same level dropped to 19, now runs at a constant 29.85 fps :-)

Thanks in advance all.