All successful applications provide a great user experience. By spending some good time analyzing and preparing for a great experience will greatly pay off when users start to use the app. When the app users have a great experience they will in turn promote the app and make it spread good.
Goals for optimization
The main goal for optimization is of course to provide a great user experience. However, there are a number of other goals that are as well important. These other goals will in turn provide a great user experience.
The first goal is to have a fast loading. No one want to sit and wait for an application to load. A challenge is that many applications are large and will naturally take time to load. It is therefore very important that in the beginning of a project a good story board is developed so the content developers can develop the application in such a way that the initial loading time can be minimized. As a thumb roll one can think of when publishing for App Store you’re up will be rejected if the loading time exceeds 15 seconds.
Together with fast loading we also have fast response. Once the application is running and someone start to interact with it, the user do not want to have a user interface that does not respond. If the user has to click several times for something to happen it is likely that he will abandon the application and as well the application will misbehave because there were several clicks that will be handled eventually but unintentionally.
It is as well important to have an understanding of how the hardware works. You do not need to understand every bit and piece of how a computer or mobile phone works but it will always help to have an understanding for where we have possible bottlenecks. You need to have in mind what can be the users internet bandwith. Also the internal components of the device are important, the CPU, the GPU, the internal memory. These are the main parts of any computer or mobile device and it is important to understand both performance and memory capabilities.
When we have an application that does loading fast and has a fast response time and runs smooth on the device it is also important with a few other parts. Now we will look into what is being rendered onto the screen. First all is the visual quality. The ultimate goal is of course to have 100% photorealistic rendered image. We are not really there yet but the technology evolution is helping us more and more every year. By understanding the current technical possibilities, you should be able to create a very good visual quality independent of which device is being used for the publishing. The next thing is to have a reasonable frame rate. What is a reasonable frame rate can differ a lot depending on which device type you are publishing for. If you are developing for a desktop application you can go as low as may be below 20 frames per second and still the experience is okay. If you develop for the high-end virtual reality headsets like HTC Vive and Oculus Rift then you need to minimum of 90 frames per second. To stay at these 90 frames per second you also in need to be above this may be 120 frames per second or more in general. When you publish for a mobile device you should always expect the frame rate will drop. The final thing regarding frame rate is to avoid drops in frame rate. Due to the device you’re running on it is possible that something else will take over control for such long time that you get to drop in frame rate on your application. It is also possible that you have something in your application that cause the frame rate drop temporarily.
When developing for mobile devices which has limited memory and as well graphic performance, one always have to have a very good control of memory consumption. And here it is very important to have a daily control of number off polygons, number of meshes, how many unique materials are being used and the daily memory footprint. By having a good daily knowledge of the application performance you have a great recipe for a project success.
Every project should have a well-defined budget for memory consumption, frame rate, loading time, and a good definition of which devices the application should run well on.
This is a short introduction/overview of optimization. Please dig deeper into the other articles about optimization.