Performance,Mobiles & Art

It is indeed true ( at least as of now .... ) that mobile platforms run at a much less horsepower than its desktop counterparts, so a lot more thought needs to be given to how software is being designed and integrated with 3D artwork. 

But, before pointing to the platform, are you sure that you've actually reached this point and its not software that is causing the first-set of problems? Software should compliment the art, not constrain it. Unless the limit is actually proven to be  platform-related, default attitude should be  to mould software to fit the art, and not the other way! Which brings us to the fundamental question - how do you understand what the limits are?

  • Your polygon budget is a function of Game Engine being used, rendering method & platform. This is not a hard limit, but rather a guideline. Vendors of 3D rendering / game engines document that very clearly but do not look at this as a constraint, you can do wonders before hitting on this limit! 
  • Monitor Draw calls -the information on each asset that is sent to the GPU ( Graphics Processor Card ) before rendering. Depending on the complexity of the object - for example, the textures, shaders, vertex count, it could happen that more than 1 call is sent to the GPU for rendering a single object. Once the draw calls for a scene start eating into your frame rate - proceed with caution! Most commercial game engines have a way of displaying this info for debugging purposes, and also have mechanisms to optimize this, provided the art assets are built along the guidelines provided.
  • Keep track of the kind of Shaders & Textures being used. In Chichi Reef Warrior game, most of the shaders are diffuse shaders. This is where is artist's innovation comes in handy ... by using clever colors and lighting, you really don't need complex stuff on most occasions.
  • Another area which affects the frame rate is the physics in your app. The first aspect that comes to my mind here is the collision detection & response mechanisms. Selectively decide on what assets require colliders and only enable collision between objects that are required for the gameplay. Although rigid body dynamics, makes your app/game much more realistic, it may be worthwhile to toggle this mode as and when required. 

In subsequent articles, I will be dissecting each of the above and attempt to map all this to a robust software architecture, which not only makes the app performance efficient, but also minimize memory required.