Optimizing Unity Games With Adaptive Performance

Objective

In this tutorial, we will optimize the Unity game performance by using Adaptive Performance. We will be checking the device’s thermal status and adjust the target framerate, level of detail, and CPU/GPU clock to increase the game’s performance quality.

Overview

Galaxy GameSDK delivers an interface between game application and device which helps developers optimize their games. Integrating Unity Adaptive Performance with Galaxy GameSDK allows Unity developers to use this feature on Unity Editor within Unity Package Manager and also customize their game contents by C# Scripting. Game performance and quality settings can be adjusted in real-time by identifying device performance status and heat trends.

Samsung Galaxy S10 / Note10 devices onwards support Adaptive Performance.

Thermal Throttling

Mobile devices don’t have an active cooling system, so temperature continues to rise and it will limit the CPU / GPU clock to control heat and performance could be degraded.

The ideal goal is to make performance stable with low temperature. Adaptive Performance, whose main role is performance and quality balance management, can help achieve this.

Thermal Warning

Thermal warning can trigger thermal throttling and can adjust CPU / GPU clock. With this, it can adjust quality in advance to maintain a stable performance.

Adjust Quality

You can adjust CPU or GPU clock to keep temperature low.

Dynamic Quality Setting

You can scale the quality in real time to meet the desired performance. The GIF below shows how Level of Detail (LOD) changes.

MegaCity Demo

During this session you can learn how rendering with Vulkan API can be optimized to achieve best results.

Demo contains the following:

  • 8 million triangles

  • 6 million entities

  • 2000 cars

  • 100 audio source (heavy for mobile in general case)

  • Unity 2019.1

  • Visual Studio 2017

  • Android SDK + NDK 16b

  • Profiling: GPU Watch

  • Target device: Samsung Galaxy S10 / Note10

GPUWatch

Samsung delivers own profiling tool for GPU profiling: GPU Watch.

Short profiling stats description:

  1. 1. FPS counters

    • Current

    • Average

  2. 2. CPU / GPU load

    • CPU load

    • GPU load

    • GPU frequency

  3. 3. Frame info

    • Render pass stats

    • Vertex / Fragment shader load