Tip of the Month: Experience Design Choices to Optimize Performance
In a prior tip of the month we talked about minimal and ideal PC specifications to ensure the best experience performance. Our answer was that the minimal - though technically possible - really should be exceeded. Beyond that, get the best PC your budget allows, biasing investment to use of a solid state drive and then the most powerful CPU and GPU available for that device.
Let's now talk about the experience itself. What can you do with your design to optimize performance? IntuiFace is pretty smart about resource management and we've tried hard to prevent design choices that would sink performance. However, there are still a few things to keep in mind.
Note that these tips are focused solely on performance and thus may require design compromise. Choose only those that make sense for you.
Everything visible - even if just slid off-screen - consumes device resources. To prevent this consumption, deselect the "Visible" property of every unseen asset, collection and control. When the item is meant to be revealed, use triggers and actions to unhide the asset.
IntuiFace is smart enough to dynamically downsize images to accommodate the container size. For example, a Full HD image scaled down to a 300x200 button won't use Full HD resources. However, this is done on the fly and not done at all for videos and documents. By downsizing content proactively - e.g. reducing the resolution of a video that will never be more than 500x300 in size - you reduce the amount of system resources consumed. This can be a big resource saver. (One shortcut: use jpg instead of png for images as the former uses fewer system resources at the same resolution.)
Related to the prior point. Limit audio bitrate to 1500 kB/s or less. (Same goes for videos.) We recommend 10k facets or fewer for 3D models. For Deep Zoom, it's highly variable so just reduce it to what you require for your design and no more.
Rather than designing with multiple scenes, you could use the visibility property in a single scene to hide and show elements when required. This eliminates scene-to-scene transition, one less thing your users have to wait for. However, this can also lead to a complicated design so approach it wisely.
IntuiFace includes some very cool visual effects like blur and grayscale. These effects are amazing but can require a lot of processing power. Feel free to use them but do so judiciously - e.g. apply one at a time and only as much as necessary. And always test your work.
If not required, prevent the playback or use of more than one high resource media at a time. For example, favor playing one video at a time, manipulating one 3D model at a time, etc. Concurrent playback and interaction can overburden your device.
This is more cosmetic than anything. You can choose whether or not to show the IntuiFace loading indicator. See the Composer menu option Project -> Project Settings -> Loading Indicator Style. It's one less thing for your experience to do plus its absence doesn't reinforce the "I'm waiting" feeling. That said, the indicator might serve your design well so use it wisely.
Now you know how to give pep to your experiences. Have any performance tips of your own? Let us know!