Post feature RSS Performance optimization in Unity Part I: Streaming obejcts

A description on some of the techniques that we are using to optimize our game with unity.

Posted by on

Everyone that has been using Unity to develop a game, know exactly how tough it is to actually achieve a consistent and stable framerate needed to give the player the best possible gaming experience.

The main problem is how to manage correctly the CPU and the GPU as to avoid collapsing it under a tremendous flow of data and calculations that will make your framerate start to fall as leaves from trees during autumn.

There are a lot of optimization techniques that can be used and that can be found with a couple of simple queries on google, from optimizing our code and how we compute all calculations in the, to give the engine the less possible amount of data to "chew" without choking.

In the last weeks we have been especially work on the later as to try to have a stable amount of objects to be processed across the level in order for the game engine to use correctly the CPU and GPU without causing overruns.

To do that, we have basically created a simple streaming algorithm that starts by disabling all objects during the load of the scene. Yo cannot disable the overall object because if not, it would be impossible to awake it again when the correct events are generated. Reason why, we have organized most of our scenes with a main empty game object that serves as a template for the final gameobject that holds the logic and the animations of the game. This way, we don´t have to think on what to disable or what to enable, and we turn off the gameobject child.

By, this we are already saving a lot of cycles on the amount of physics calculations and frustrum visibility checkups , which is quite good for the overall framerate.

To reactivate the object, we have created a Box that follows the camera ( not attached to the camera, because since our game has a dual world setup, the camera needs to rotate to pass to the other dimensions, and the cost of the rotations with triggers boxes would be to high) and that when an object is triggered activates it back to its logic.

The result is a reduction of the usage in the memory, CPU and GPU Usage and in a more stable gameplay experience.

You can find more about the game on our Steam EarlyAccess page.

Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.