The Graphics Quality setting is too limiting and can easily break developer intent

It might be convenient for the users to have a universal graphics quality slider to remove complexity in adjusting the graphics fidelity, but on the side of developers, it is abysmally difficult to work with.
Here are some core issues I’d like to present


Issue 1: There’s no way to know it’s current state.
The user settings option for getting the current Quality Level might return automatic if that’s what it’s currently set to.
This means that the returned value is effectively useless, as if they set their quality to automatic, we’ll never know what the state it’s in.
So any attempt at working around its limitations are already impossible.


Issue 2: No way to set/get the cameras far plane.
While automatically resizing the frustums far plane to reduce rendering is nice in theory, this can easily break intent from certain games super easily. Especially when a lot of mobile players often have to go to the lowest graphics quality to play the game.
This is problematic if your game design requires you to see landmarks far away, players far away, billboards far away, camera is far from the scene, etc…
LODs that are also supposed to exist for lower end devices don’t even get used properly because they get culled off from the short render distance.
Games where the camera is following the player very far away (usually with a small FOV at graphics level 1) often completely break on lower graphics settings as the far plane doesn’t reach the required objects it needs to rendered.
Games that also rely on seeing players at far distances (e.g. using bows or sniper rifles) suffer from this issue greatly, as players on lower graphics level may not even see the player that is attacking them, which can lead to unfair advantages.


Issue 3: Lights also getting culled dynamically based on distance based on the current Graphics Level. This can easily ruin artistic intent.


Issue 4: Beam Segments change on graphics level
At max level a beam will look as intended, but every level down, it will reduce the amount of segments by some hard-coded formula.
This is really bad, as any curvature created with beams is effectively useless as it will no longer maintain it’s original shape.
So unless you have beams with only 1 segment, devs have to often just abandon beams altogether or risk users with lower devices seeing incorrect shapes.
(Or Alternatively, make a beam with an absurdly large amount of segments solely for players with graphics quality 1)
This has been a long standing issue:


Issue 5: Rate of Particle Emitters are globally affected:
Often the rate of Particles is hand-picked by devs on purpose to achieve certain visual styles.
To have the graphics slider globally reduce the rate for all emitters can easily ruin artistic intent.
Since there’s no way to communicate tag/important to these emitters, there’s no way to stop the engine from doing this without manually emitting particles yourself.
Additionally, the reduction doesn’t even guarantee a gain in performance, it’s indiscriminate to the state of the scene. This means even if your game has only 1 particle emitter, it will still get affected the same way.


Issue 6: Rendering logic is changed on lower graphics settings.
There are some known rendering changes based on the graphics quality setting.
Most famously glass will obscure water at higher graphics level, but will not at lower graphics level

Terrain Water will become opaque at a lower graphics level:


Ultimately, bundling up many graphics setting together is very difficult to work with, and can easily fight against developer intent. Ideally we’d have more control over the nuances on both the client and developer side, because it’s simply impossible to cover all intents in 1 graphics slider and it requires every developer to make excruciating compromises at times just so players at the Graphics Level 1 can even play the game.

Additional posts talking about this issue:

https://devforum.roblox.com/t/what-happened-to-the-zfeatureharmony-release-advanced-graphic-settings/2484765

36 Likes

This one please!

Render distance has been such a discouragement for me to pursue larger worlds in my games where big landmarks, terrain shape and composition serve the player as a guide, I bet many developers want to show off their environment to its fullest to every device, and would want to dedicate their time to optimizing their LODs and streaming, especially with the tools that roblox engineers put so much effort in delivering to us, it feels like these features are wasted because they will be completely cut off at lower quality levels, and often times it might not even be the culprit for the players performance dropping, it’s just directly tied to every other graphics setting in one slider. What if I as a developer want every player in my game to have a minimum render distance thats large enough to serve my games purpose? I could take responsibility for making sure it’s not something that causes problems with my game, heck maybe I want to compromise other quality settings for it, maybe I don’t care if PBR is rendered up until quality level 10 (or at all), or maybe I’d prefer textures to load at a lower quality instead, maybe I want my particles to be important instead, I’d love to be able to make such compromises, games could be so much more different from one another, each games settings specifically optimized for the experience it wants to offer, instead of every game trying to fit around a general standard.

Some games would be able to take a camera further away, lower their FOV and make isometric or flat renders, would be great to have lights working at that distance (in that specific game, specified by the developer), it doesn’t mean that it will necessarily lag, if the developer knows that they’re doing this would be a great tool to define their game… oh yeah, why not document these? sharing knowledge for developers on how the engine works, what could potentially be problematic if such settings were changed, there’s many of us that want to have extra control over these settings and have the understanding of the consequences it could lead to, let us be free with our choices and learn how to overcome the issues, instead of completely blocking and taking exclusive control over them

Being able to know through API whenever certain quality features are disabled or lowered in quality would be such a blessing. Knowing when a device can’t show highlight objects outlines, not able to render screen blur would allow me to set up alternative ways of displaying such information. This applies to nearly anything thats disabled through a players device, their rendering method and hardware.

A similar post that’s very popular is the following:

It’s understandable that many players might not be ready for more advanced options, but what I want to emphasize is that developers can, we could take responsibility and modify how this slider works for our own game

These are things that would open up doors for every developer, to learn more and be able to make important choices on whats important for your game, and what measures you’d take to make it accessible to a wide audience while retaining its core. I understand that it might be diffucult for many beginner developers to grasp and be handed such responsibilities, but I want the developers who are capable of going past these limitations to have the freedom to, and I want roblox to respect and trust them with these choices, It wouldn’t be too hard to set up appropriate warnings for those who may not want to step into these advanced topics, in which case the default settings would work just fine, but I certainly find it disappointing that we aren’t trusted with anything more than a single 10 scale slider and one preset for how each rendering feature interacts with the slider.

14 Likes

Roblox is behind every game released in the past 20 years when it comes to this
Source has better graphics settings than roblox. The original Half-Life has similar graphics settings to Roblox but even it lets you cahnge the gamma, brightness, resolution, and use non-HD models and roblox lacks even those basic quality settings.

3 Likes

It’s been so long and it’s still not a thing.

Graphics are currently one of Roblox’ biggest limitations.
The lack of options or developer-set parameters makes it a pain to work with.

It’s a feature that has been requested by many people for many years yet for some reason it feels like the people at Roblox aren’t listening or communicating?

Games are a work of art and I think it’s very important that people get to see said game as the creator intended without any visuals breaking or depending on the user having their settings at 7 or higher for example.

The render distance is also ridiculously low but I think it also has something to do with the weird way that Roblox renders things.

If I recall correctly, Roblox actually does not do any occlusion culling.
Which means that 3D objects covered behind walls are still calculated which is horribly expensive.

And I think the absurdly low render distance is there to compensate for the lack of occlusion culling.

4 Likes

I’ve seen similar post like these 3 times (one by me) … yet roblox hasnt done anything about it

2 Likes