Optimizing a game for mobile platforms are extremely important task. You may have nice graphics, nice gameplay and nice features, but if the game is not optimized enough, a glitchy game play, with lags, hiccups may ruin everything. All of these tiny issues will lead to low ratings and bad comments.
I have been working on Unity3D for a long time, in here I will make a list for all optimization tips for all mobile platforms (Android, iOS, WindowsPhone) and I will update regularly in future.
NO | TIP |
---|---|
01 | Pooling systems, use pooling system for your object management, especially for platform style game. Definitely keep away from Instantiate/Destroy. I/D will cause heap memory to grow, you will notice rapid frame rate drops after while in your game. Pool managers are essential for especially for mobile platforms. |
02 | Draw-calls and Poly numbers, keep them under reasonable numbers, do not trust high end testing devices. If the game works really great on high end device like the latest iPhone, it does not mean, game will continue perform %100 same like in the beginning. Mobile devices heats very quickly, and many of them automatically reduce their computanial powers. Additionally garbage collectors can cause problems later in the game play. |
03 | Aiming for low poly, try to model yourself and work with 3D model artist directly rather than using ready 3D models from stores. Creating a low poly model is an art, not a very easy task. For example, you will not many faces of a model in the game. For example, 3D building in a platformer, you wont need behind and bottom faces of the building, delete them. Also check for double vertices, and remove them. |
04 | Aiming for low poly, when you model an object, do as much as less extrusion, instead use textures with little shadow plays to give 3D feeling |
05 | Reducing draw calls, use a single texture atlas for your game, and try to use advance GUI system like NGUI, many of them aiming 1 draw call. |
06 | Reducing draw calls, share materials between objects. Instead using many materials and textures use texture atlases and less materials, then share them between objects. This will incredible reduce draw calls. |
07 | Reducing draw calls, do not use dynamic shadows or blob shadows, or any kind of shadows unless it is extremely necessary. Shadows are extremely expensive to use. You can fake shadows with a plane at bottom of an object and black texture on it easily. |
08 | Reducing draw calls, use static batching (Static check box on top right) for the objects do not move or rotate to reduce CPU power |
09 | RigidBodies, use less rigid bodies if possible, especially for objects do not move. |
10 | Learn about Update, FixedUpdate, LateUpdate, and make sure you use the right one for right purpose. For example, rigid body forces should be handled in FixedUpdate. Additionally, do not forget any empty update function in scripts. |
11 | Play with FixedTimeStep int Time Settings. You may set it a bit higher to gain couple more frame rate. |
12 | Optimised Mesh Data, check this in Player Settings. This will remove unused meshes from the game, and increased performance. |
13 | Play with quality settings in Quality section. This can change the look of the game, and improve performance. |
14 | Try to use C# as language, it is a compiled and faster language. Many people reports that, C# performs much better than JavaScript and Boo. Moreover taking advantage of Object-Oriented Programming is great, this will lead much reliable and maintainable codes. |
15 | Colliders, mesh colliders are very expensive. Best type of collider for mobile is Box Colliders. Try to use the box colliders, when you need colliders. |
16 | Use compressed textures, this will help to improve rendering performance. |
0 yorum:
Yorum Gönder