Ability to set Lighting.Technology at runtime

As a developer of Phantom Forces to have the ability to alter the lighting technology from a script would allow more user-decisive quality to our game. But at the current moment it is impossible due to the “unscriptable” reflection property that it has.

The reason why we want to be able to set this is that not all hardware is equal in performance. In Phantom Forces we can make maps look sooo much better with voxel/shadowmap.
But the current problem we are facing is that is preventing us from just switching over to voxel or shadowmap is that voxel/shadowmap just takes too much of a performance impact for the older hardware that some of our players have.
So as a result currently we are stuck using compatibility setting to account those lower-end players.
The ability to set would allow it so our users can decide which lighting setting they prefer and if their hardware can effectively handle it.

As I’m are aware the behavioral differences between these settings are quite large I’ve come up with a effective “Lighting Profile” system for our maps to allow users to switch between if this gets adjusted.

69 Likes

A current solution might be letting players enable/disable Lighting.GlobalShadows and keep shadowmap enabled

13 Likes

But even then it still induces a extra millisecond of latency overall in the lighting “perform” label in the microprofiler compared to the compatibility setting. That is still a millisecond that would be done every frame (or more depending on hardware) that the players would have to compute. Even then I would rather have a proper solution than a hack solution. From my experience in PF most stuff that broke is because it was a hack solution.

9 Likes

Introduction

As a Roblox developer, it is currently too hard to create effective optimizations for our games due to the extremely limited amount of graphic options. If this issue is addressed, it will improve my development experience by allowing players to customize how they want to view the game, and allow lower-end devices to play easily.

While there is a reason it’s not already in games, the sole argument of performance being affected doesn’t really suffice in some cases, especially if it’s only modifiable via the client. Not to mention it can be changed in studio, while play testing with basically zero issues. Lighting technology is something that can be pretty graphic-intense, so if we could prompt the users for what lighting technology they would like to use, it could allow low-end device users to easily play without sacrificing performance.

Cases & Proposal

Really, the only graphics options we can provide to the users is CastShadow. You could create your own graphics settings by using magnitude checks and destroying the parts if the user is a certain distance from it. The issue is that this is simply not enough, especially with lighting technology being one of the main issues for performance, as well as some developers not being experienced enough to create advanced systems like that.

In one of the few games that creates their own graphics options, Welcome to Bloxburg, the developer has said that you must use another device if yours can’t handle it. If an alternative device isn’t available, tough luck! You can’t play.
Screen Shot 2020-07-11 at 7.21.05 PM

With my own firsthand experience, having graphic-intense builds in this game, with my graphics at 1, I still experience lots of lag; both mobile and computer, keep in mind that I own fairly up-to-date devices. This lag would be reduced if we were given the option to change lighting via LocalScripts.

Conclusion

To revisit my points, I would like to create a brief summary to my points:
1- We have an extremely limited amount of graphic options to give users, these options are sometimes not enough.
2- Many games could, in theory, benefit from this feature.
3- Lighting technology can significantly reduce lag as some technologies are extremely graphic intense

Thank you for reading my proposal!

18 Likes

Do not support this at all. The Technology enums are very intentionally unscriptable. They are extremely temporary afaik, with Roblox planning to release better controls for lighting in the future.

I see lots of developers who like to forget that Roblox literally exposes a slider via the escape menu so players can tune their graphics quality depending on their hardware. Turn on Future/ShadowMap lighting for high-end players to enjoy and let low-end players tune their own graphics settings. Most play on levels 1 - 4 anyway, where these new modes are disabled. Graphics settings exist for a reason, use them.

4 Likes

honestly i dont see why they arent scriptable, you can change the technology at runtime in studio via properties

using the graphics slider ruins the quality of all of the graphics, it doesnt just change the lighting

3 Likes

I would love to see this added.

You can change it with exploits during runtime. It’s weird how ROBLOX restricts stuff for no reason.

8 Likes

bumping this, since it would be such a great performance feature

I’m still waiting for a response from the Roblox staff as to why this idea hasn’t been implemented yet. As mentioned earlier, we can change parameters directly in the game via properties. But why can’t we do the same via a script in Roblox itself?

1 Like

This is just another weirdly restricted thing that roblox has
Even just letting plugins use it would be nice
This and game.Players:CreateLocalPlayer() are 2 things I don’t understand being avaliable to plugins

because they’re always changing things in that setting, its the same thing with the decoration property in terrain, it’s not scriptable because it will be replaced by something else

image

4 Likes

This is just speculation, but I think that’s because the Explorer is being converted to a regular Luau plugin, so properties like Technology need to be made Scriptable so the new version can modify it.

1 Like