Search Unity

Discussion Are there any tips and tricks for squeezing out more performance on mobile devices ?

Discussion in 'General Graphics' started by ArnoPlays252, Jan 6, 2024.

  1. ArnoPlays252

    ArnoPlays252

    Joined:
    Jan 12, 2019
    Posts:
    15
    Context : Realistic graphics, open world , nature , grass , towns/locations of interest, first person movement, unity built-in RP

    I want to start with saying that i have tried a lot of technique's to get more performance on Unity Mobile Built-In Render Pipeline. I have tried mesh terrains , imposters, static batching , instancing , tweaking all the graphic settings(out of which the resolution seems to be the main performance impact, the rest is neglible), different shader assets, pretty much all there is to offer on the asset store, which claim to be fast but aren't. Furthermore i have optimized meshes, textures and materials. I get decent performance, but it becomes clear to me that as my project moves on, performance will lack, and the game will be GPU bound.

    But this is where the big question mark comes in. Whenever i look at AAA releases for mobile devices, such as the new Tarkov clone "Arena Breakout" {made with UE5} , i tend to notice that not only do these games run way better, they do so while having way higher detailed meshes, higher res textures , good resolution and seemingly better looking shaders. This has lead me to my final suspicion, the Shaders and renderer itself must be tweaked ?

    It seems to me there are some non-mainstream practices these games use, which i can't get any resources about. I seem to always land on the standard optimization tips and tricks, which just aren't enough for the scope of the project. Lots of games have proven that it is possible on mobile, but information is very tight.
    With this post i was hoping to learn more about some of the experiences and insights of you guys on this topic.

    Thanks for taking time to read this !

    I haven't found any performance improvements using URP in a variety of scenario's, in fact it almost always results in a deacrease of performance. The specific scenario that i seek more knowledge about is an open-world realistic style map, such as Dayz, Arma III,ofcourse with a sizeable downscale of density since it mobile, but even that has proven difficult , despite other games seemingly pulling this off.
     
  2. kdgalla

    kdgalla

    Joined:
    Mar 15, 2013
    Posts:
    4,632
    arkano22 and MartinTilo like this.
  3. c0d3_m0nk3y

    c0d3_m0nk3y

    Joined:
    Oct 21, 2021
    Posts:
    666
    +1

    See also
    https://unity.com/resources/ultimate-guide-to-profiling-unity-games

    Also, mobile devices usually use tiled rendering which poses some optimization challenges. Unfortunately, I'm not an expert in that either but I know that you have to be careful with full-screen (post processing) passes, for example.

    You definitely need a good GPU profiler for whatever mobile platform you are using. Also my guess is that you need to make sure you have a low draw call count, so any form of batching is essential.
     
    Last edited: Jan 7, 2024
    MartinTilo likes this.
  4. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,141
    URP is slower compared to the built-in pipeline but it unlocks packages you will simply never have access to with the built-in pipeline like DOTS and VFX Graph (a GPU-powered particle system). I spent a few days with DOTS 1.0 back in June and my limited test results (GameObject heavy) were consistently 10x faster.

    AAA pays for direct access to engineers at the game engine companies. They're getting tips and tricks from people who know how the internals work. Occasionally some of this info is passed to the general public like this Unite talk but like you've noticed some of it is just not available to us.


    Speaking of resolution there is an open source release of FSR 2 for the built-in pipeline that has been confirmed to work on Android (Vulkan) and iOS (Metal).

    https://github.com/ndepoel/FSR2Unity
     
    Last edited: Jan 7, 2024
  5. chbran

    chbran

    Joined:
    Dec 9, 2018
    Posts:
    21
    i made only 1 handy game some time ago and reducing resolution was the main performance booster. I used the kronnect fps asset for it which i rewrote a little so it did render near to a fixed low resolution. Dont know if there are built in option for that now or better ways.

    Also default graphic quality is set to highest in a new unity project. you should set it to lower to increase performance.

    In an open world game it is easy to show the player to much. Try to reduce vision. (camera range, camera angle, map design , ...)
     
    Last edited: Jan 12, 2024