IPhone Optimization Tips


 * Ragdolls make the game significantly slower. Give the player the option to use ragdolls or not.
 * Skinned Mesh Renderer:
 * Set Quality to 1 Bone
 * Uncheck Skin Normals
 * Set iPhone Script Call Optimization to “Fast but no Exceptions”. Naturally, set it to “Slow and Safe” during debug.
 * Don’t play new compressed music at the middle of the game, it freezes the game for a short duration. Play it at scene initialization instead.
 * Remove most (or all) lights from your scene. Use baked lighting instead.
 * In Project Settings > Time: Set Maximum Allowed Timestep to 0.1 bringing the game’s framerate to at least a guaranteed 10 fps minimum, assuming your bottleneck is coming from the physics. Use the profiler to find out where your bottleneck is.
 * Keep drawcalls under 20 if at all possible

Scripting tips:

 * Avoid SendMessage calls, create a script/class variable to hold a reference to the specific scripts you want to call, and use a standard method call. Method calls are ~100x faster than SendMessage!
 * Avoid Find or GetComponent type calls during normal runtime if at all possible, use script variables to hold references.
 * initialize script variables in Awake

For example in Javascript:


 * Limit FixedUpdate function complexity, perform most of your game processing in Update or LateUpdate
 * process player input (touches, accelometer, etc...) in Update
 * use timed and framerate function calling to reduce heavy processing every frame. For example, instead of processing an entire array of gameObjects every frame, create a coroutine, and call it on a frame schedule.
 * Ensure complex coroutines aren't called multiple times in a single frame

In Javascript: