Full screen behavior

Hi,

After seeing the first tests in the UI Canvas traits, I started to be curious about how full screen mode is going to behave.

Even if the UI Canvas is currently really basic, a lot of thoughts about resolutions, aspect ratios and relative positioning came up to my mind. These are possible future questions, as the tool matures; for now, I will focus on trying to understand the implications of the full screen mode. In order to illustrate / clarify my question, I will try to compare Unity and Unreal and relate this with past experiences. (Warning!: This information could be outdated, as I have not used them in a while).

Unity used to have an old-school approach to set the rendering resolution (I’m talking about the 4.X versions, never deployed nothing with 5.X versions). You used to choose which resolution you wanted to have (only in Win/Max/Linux, this is different for consoles and smart devices ).

This creates a lot of problems if you want to ensure a smooth experience for the user, as you don’t know a lot of things about the system. I could choose a 1024 x 768 resolution (4:3) and have a stretched image if the monitor has a 16:9 aspect ratio (or the other way around). Although 4:3 monitors are less common, now we have a mixture of 16:9 and 16:10 monitors aspect ratios in the market (I guess aspect ratio differences are going to exist forever).

One workaround for this was to try to start in windowed mode in another resolution, try to ask the system for the current desktop resolution (this also had it’s problems) and then switch to full screen resolution once you could calculate the real aspect ratio of the monitor. Workarounds to this changed from time to time, as different behaviors in Unity evolved over time.

Even if you ended with a correct aspect ratio, your problems were not over. If the performance was not ok, the user should be able to set a smaller resolution (keeping the aspect ratio if he knew how to do this) to improve rendering times. Opening a launcher dialog to let the user set the resolution when launching the game never seemed a good solution for me.

On the other hand, Unreal does something that I consider a better approach. It has an option to start full screen using the desktop resolution. Users usually have the correct resolution aspect ratio in desktop mode. And besides this, let’s you select a lower resolution when rendering to the render buffers (as screen percentage) and continue blitting to the same resolution upscaling it. So the aspect ratio problem is solved by default, and the performance problem can be adjusted in game time.

¿Will armory internal architecture allow a similar behavior to what Unreal does?

Great topic, investigating this for the upcoming build - added a property to start fullscreen at desktop resolution and would like to go the unreal way from there, eg. upscale render targets if lower resolution is set.

3 Likes

Really nice to hear that! :slight_smile: