Any tips how to optimize Slate (UMG)?

We are doing Mobile games and we encounter big Slate overhead in all of our games. 70% of game thread is causing Slate. Are there some tips how to improve Slate performance?

I think I need a bit of information before I can suggest why you are encountering slowness. Consider some of the following:

  1. Are you profiling in the editor? If so, then you are experiencing all the editor’s overhead. It has a substantial amount of UI in it.
  2. Have you used the widget reflector to check what widgets are being processed during the game? You might just have lots of hidden (but not collapsed) widgets that are being processed.
  3. Do you have a lot of properties bound to blueprint functions? These can get quite expensive.

These are just some things to consider.

  1. We are profiling directly on the device.
  2. Can you please tell me how to “use widget reflector to check which widgets are being processed”?
  3. Yes everything is binded, we thought that this is the best and indented method to override variables (text) instead of using Tick or Timers. What’s the best optimal way? Use events?
  1. Ok cool
  2. You must do this on a desktop. While playing hit ~ to summon the console window and use the WidgetReflector command. From there use the Pick mode to select a widget in your hierarchy. Use ESC to stop selecting. You will get a sense for what widgets slate is currently processing.
  3. Only binding to blueprint functions is slow. You can bind to C++ or to properties. But if you have a blueprint function in there, it will execute every frame and might get pretty slow.

That’s a lot. Please figure out how many widgets you are showing by using the widget reflector. Please include a screenshot.

Any other tips? I can see that we are binding texts only and our blueprint widget tick is something like 3% of the game thread the rest 70% is DrawSlate so on iPad2/iPad3 we have 15 fps with stable rendering thread (fully unlit) but overhead from game thread (which is slate).

Our game is really simple and have simple UI so it shouldnt be taking a lot of game thread. It’s a big problem on iPad3 / iPad2 and iPhone4. Unlit should work well enough on those devices but “thanks to UMG” it isn’t :slight_smile:

That UI looks fairly simple. It should be very fast.

In the widget reflector, you have SScissorRectBox collapsed, so nothing inside it is shown. Can you expand that to see that you have only the necessary widgets being processed?

Yes it’s simple, you guys should port tappy chicken ui to UMG and see by yourself that performance on ipad2/ipad3/iphone4 is really bad. I haven’t seen any UI example from you guys with finished graphics and functionality - I’ve seen only examples. It’s something that you should think about.

Heres screen with SScissorRectBox. Basically we are using Overlays/HorizontalBoxes to get the same results on all resolutions. (game is iOS/Android/Steam)

The next question would be : do you have any bindings on your widgets that are bound to a blueprint function? Perhaps you have some blueprint code being executed in tick? I would try putting up a comparable number of widgets but without any logic attached to them. What is the performance like?

Hi Nick, main menu have only one text that is binded to function, after deleting it performance is the same. I’ve checked every widget and we are barely using bindings for functions even with deleting them performance is the same. we aren’t using Tick. Basically if you guys don’t have time to create simple UI and check it out on iPad2/iPad3/iPhone4 (full unlit) I can create some scene for you to test.

Hello

Would it be possible for you to provide the project that you are having issues with so that we might take a closer look at it? If this is a viable plan going forward, you could send me a private message on the forums with a zipped down version of your project via dropbox or googledrive.

Hello

I am going to go ahead and close this issue. It has been a few months without activity and I could be mistaken but I believe that the develops contacted you about your questions. If you have any further questions about this issue please feel free to reopen this thread with a reply.

Make it a great day

I would like to know what the result of this thread was. We are also experiencing slow UMG performance on iPad2/3’s and we also have checked to make sure we are not attaching to blueprint functions, etc. Please post the results so others can benefit!!!

Hello ,

This was a special case with a private project and we are not able to divulge the results. I will need you to open up a new thread in the packaging and deployment section of the Answer Hub for tracking purposes and we will be able to address your question there. Please feel free to post a link to the new thread in a reply so that future users will be able to track the results.

Make it a great day

Rudy, I have opened a new thread related to this question, as you suggested (my apologies if it’s a dupe - I didn’t see a similar post from Voigt).