Search Unity

Question Question regarding Xbox one UWP performance

Discussion in 'Windows' started by nicg220, Nov 12, 2022.

  1. nicg220

    nicg220

    Joined:
    Nov 25, 2019
    Posts:
    16
    I'm currently testing my game on an Xbox one S using the windows device portal and a creators program account. Despite my game being fairly simplistic and running at a very high framerate on a computer with fairly basic hardware, the framerate on the Xbox is very low (runs 20 - 30fps on a very simple scene).

    I've read all over the forums and found a range of information from other forum users who faced similar issues and suggested different tips and unity settings to obtain the best performance, however in doing so I've still barely been able to increase the performance of my game. I've tested in both DX11 and DX12, tested running the project as an app and game, and then tweaked various other batching settings to little avail.

    I understand that this is an older console and it has limited CPU and graphical power, however I was disappointed at the power that seems to be available when exporting from Unity using the UWP platform.

    Basically I was wondering whether anyone knew whether this low level of performance is due to a limitation on the creators program or UWP platform. Do I need a ID@Xbox developers account in order to be able to unlock the full potential of this console? I hope that this is not too dated a question to ask, and appreciate any help!

    Thank you.
     
  2. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    10,680
    According to https://learn.microsoft.com/en-us/windows/uwp/xbox-apps/system-resource-allocation, this is what UWP games get:

    Code (csharp):
    1. RAM: 5 GB
    2. CPU: 4 exclusive and 2 shared CPU cores.
    3. GPU: full access to available GPU cycles.
    4. DirectX support: DirectX 12 with Hardware Feature Level 11.0
    Compared to what ID@Xbox gets, you get 2 shared cores instead of exclusive ones and some limited DirectX features. Performance wise, you're getting the same performance on 4 cores and the GPU. But that only applies if you are using both Game Mode AND DirectX 12. Performance with DirectX 11 is going to be severely limited.

    When testing, it might be useful to print SystemInfo.graphicsDeviceType just to make sure the engine doesn't accidentally fall back to DirectX 11. And I hope you aren't testing performance in the debug build config/with debugger enabled in build settings!

    Unfortunately, Xbox One hardware is slow. The GPU is equivalent to a mid-range PC from 10 years ago, while the CPU was much slower than that - I suspect you'll find that it is at least 4 times slower than whatever you're getting it on your computer.
     
  3. nicg220

    nicg220

    Joined:
    Nov 25, 2019
    Posts:
    16
    Thank you for your time and reply, that's all interesting to read and its good to know exactly what the system is able to make use of. So am I understanding correctly in that ID@Xbox gets full access to all 6 cores, rather than access to 4 exclusive and 2 shared cores?.

    I've tested that I'm running DirectX 12 using the method you mentioned (printing SystemInfo.graphicsDeviceType) and my game does appear to be running this version. Interestingly however there didn't seem to be a great deal of noticeable difference to me when running on DirectX 11.

    Unfortunately my game is still running very slowly, so perhaps the console is just a little bit too old to test on. I was hoping for more purely down to still being impressed by the games that this console is able to play despite its age. Is this all down to the optimization that the developers put into the games?

    Anyway, thank you again for your time.
     
  4. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    10,680
    Yup! And if DX11/DX12 performance is the same, you're limited by the CPU. It's likely that there is A LOT of room to grow when it comes to graphics by getting the GPU to do many more things (mostly more complex and better shaders & postprocessing).

    Did you try attaching the profiler to see what is slow? Did you make sure that you're running in release or master build config?
     
    stonstad likes this.
  5. nicg220

    nicg220

    Joined:
    Nov 25, 2019
    Posts:
    16
    Ah I see, that makes sense. I'll have to test that out today.

    Yes I did make sure that I was running in release or master, however I've not actually attached the profiler yet. I'll do some further testing today to see if I can improve the performance and pinpoint where the limitations are occurring.

    Thanks again for your time, you've been really helpful. I'll post back if I see any good improvement.