Wiki

Clone wiki

RTO Core / Home

RTO Promo

Introduction

About RTO

Easy good-to-use high-quality platform-based optimization tool with dynamic quality adjustment to avoid production branches and expand supported platforms.

As a side effect, can make your game run smoothly on platforms that you aren`t expecting or solve that little chunk.

*<STRONG>Real Time Profiler v0.1.1</STRONG> and <STRONG>Preprocessor Directive Manager v0.1.1</STRONG> Included.

Real-Time optimizer was conceived with few bullets on mind:

Respect the desirable quality based on target platform

Avoid Production Branches

Run smoothly on desired platforms

Dynamic quality adjustment at run-time.

Improve quality if resource is available.

Be costless

Asset Optimization

Fast

Better ROI

More Platforms

Easy to use

Easy to setup

RTO is fully documented composed by several components that can be disabled anytime.

_RTO can become a little unstable according platform and Unity version. This can even result in crash. Please, report if this happen informing Unity Version, Platform, Target Device and describing when this happened.*_

How to Use

You can simple drag and drop Optimizer Prefab into your scene and tweak it`s parameters to fit your requirements.

How to Debug

It’s not rare an inconvenient being caused by RTO. Usually it’s not RTO fault but some Unity/Platform Issue. You can able/disable any component you want, so, if something bad happened after you start to use RTO, the easiest way to avoid the problem is to identify what component has the defective call and disable it.

Usually, Real Time Profiler and Optimizer Manager are required by other components and should be enabled. There’s a “debug” variable into some components. Change this variable value to true and some info will be displayed.      

Components

Real Time Profiler (AKA: RTP)

This class is responsible for costless performance measure and is included in RTO. Frequency affects the cost of this optimizer but also the efficiency. Please reporto to RTP_Readme for more info.

Optimizer Manager

This class manages the whole optimization system. You can disable all Optimizer by disabling this component.

Contingency Layer (Deprecated)

This class is a brute way to adapt your application to run with the desired performance. It`s trigged only in critical case scenario. Internally it simple changes the Overall Quality, so, you should do a fine-setup at Quality Settings in order to get the best result from Contingency Layer.

Resolution Layer

Resolution have a huge impact over overall quality and overall performance being the best option to avoid fillrate bottleneck. We never reduce or increase it too much also. Also, we prefer similar aspect ratio.

CAUTION:     Resolution change is even more invasive than change the Overall Quality (Contingency). Several stuff can go wrong when resolution is changed at Real-Time so, please, make sure to extra-test this component before use it on final release. (this problem is far more critical on Unity 5.2 or earlier)

Memory Manager

Implements some tricks to reduce memory usage. You should inform if you`re using some external polling or if your project frequently creates or destroy elements (High Memory Allocation).

Time Setup

At scene start, this class set fixedDeltaTime and maximumDeltaTime to some good values reducing CPU cost. Ive used some good numbers based on my experience but, please, feel free to change this values. In order to avoid noob mistakes, I didnt exposed this variables hard-coding it`s values, however, Unity has these same variables exposed into Time Settings.

Terrain Optimizer

Adjust all terrains variables over time. If you're creating new terrains in runtime, you should check createNewTerrainsAtRuntime. So far, the only exposed variable is maxPixelError because it has a huge visual impact on the overall perception of the terrain. I`ll expose more stuff as its importance grows with user feedback. You also can manually set a quality by calling SetTerrainQuality(float newQuality).

Camera Optimizer

Camera Optimizer changes camera far clip and can turn in or turn off HDR.

Light Optimizer

Light optimizer is responsible for lights. Light optimizer acts over Light Components, Reflection Probes and GI. LightOptimizer evaluate your shadow mode before change it, so if youre not using Soft Shadow or Hard Shadow due art direction, we dont make a mess.

Renderers Optimizer

All Renderers are tweaked on this class with specific implementation for Cloth and SkinnedMeshRenderers. Internally, we added a distance and Max number to SkinnedMeshRenderers and Cloth so we can reduce processor use when these elements are far or in huge number.

You can disable this behavior by setting off optimizeClothRenderer or optimizeSkinnedMeshRenderer. Also, you should set instantiatingSkinnedMeshAtRuntime and instantiatingClothAtRuntimeif  if you create new ones at runtime.

Particle Optimizer

Particle Optimizer is based on the fact that usually we can decrease the total number of particles a little bit without losing too much quality. You can control the reduction rate using minQuality.

If you are using a costless particle, particle optimizer will maintain this particle as it is.

Texture Optimizer

Texture Optimizer adapt anisotropic level, mipmap bias and mipmap filter. Anisotropic level is related to how your texture looks on oblique angles, if you really know how to setup anisotropic levels, uncheck canChangeAnisoLevel. Mipmap filter is how mipmaps, again, if you set filter mode manually, uncheck canChangeMipmapFilter.

Shader Optimizer

Shader Optimizer just change your Shader GlobalMaximumLOD. ​

Roadmap

Version 1.0 (Planned)

Promo update

Tutorial update

Version 0.9 (Planned)

Component tests

Improve RTO core (Add layered measument methods: Profile linked, GPU/CPU, GPUGem3, Empirical)

Real-time tips

Bug fix

Version 0.8 (Planned)

RTO update to Unity 2018

Post-Processing Optimizer

Improve Shader Optimizer

Improve Particles optimizer

Handle Layer Occlusion

Improve Memory Optimizer setting GC properlly.

Add a Navmesh optimizer (Reduce quality and so on)

Update used RTP to newest version

Camera Optimizer: Change Animation framerate over distance

Cull flare, cull mirror, cull particles world space

Version 0.7

RTO updated to Unity 2017

RTO documentation and Issue track changed

Minor bugs fixed

RTO price updated ​

Version 0.6

Improve Release Version Info

Real Time profiler now also track battery temperature on mobile devices

More coherent optimization calls on all components

Contingency Layer was removed

Several optimizations added in all components  (Split of Contingency Component)

IMGUI replaced by UGUI

RTO Page Created (this one)

uGUI Utility embedded ​

Version 0.5

Several fixes

Now you can use n quality settings definitions

Optimizer Manager is now less deterministic

Video Tutorial added

There's a missing code on the last releases with huge impact over RTO benefits. ​

Version 0.4

Resolution Optimizer Code review\tutorial ​

Version 0.3

Not tracked ​

Version 0.2

Not tracked ​

Version 0.1

First Release

IMAGE ALT TEXT

Be cool and sexy!

Updated