I’m writing this because it’s come to my attention recently that both Lighting.Technology and Workspace.Streaming (MinRadius and TargetRadius) are not scriptable?
Technology
Perhaps there’s something I don’t understand here - like maybe the engineer team thought it would be weird if the client could change their own lighting mode. Other than that, this feature would be incredibly useful as scriptable. Developers could set the game to be Voxel or Compatibility by default and then perhaps allow the user to change it to a more advanced option from the game’s user interface.
MinRadius / TargetRadius
This is another case I could see being similar to the case above, however this too would be incredibly useful for developers to have control over. StreamingEnabled and StreamingPauseMode are both already scriptable, why are these two settings unchangeable? Just like the Technology case, I could see this being used to change a player’s streaming radius on the fly depending on how their device is holding up - or even using player choice UI.
If there’s anyone out there who has any insight on these and what’s going on behind the scenes, I am very interested in hearing the situation. I was planning on using both of these for my upcoming game until I realized Roblox blocks scriptability on them. Otherwise, I would love to have these as features.
32 Likes
I’ve absolutely run into the use case of needing to change lighting technology (both client and serverside) at runtime. My use cases have both been aesthetic-based and performanced-based.
From what I recall, I believe the intent for lighting is that there’s no guarantee a specific lighting technology will exist in the future. Some were/are temporary steps on the path to the full “Future Is Bright” release.
That said, I feel like the current lighting techs all have their own needs and use cases. With maybe the exception of “Future”, I think at the very least “Compatibility”, “Voxel”, and “ShadowMap” seem pretty final to me.
I use all of these different lighting techs for very specific means, and I imagine other developers do too. If any of those techs were to go away, I’d have some level/world design issues to deal with.
6 Likes
+ for the rendering part.
Allowing different lighting modes on the same place would avoid having to fragment the community based on their devices.
Never used streaming (because it makes playing with slow connections impossible), but it doesn’t make sense when everything else is scriptable.
1 Like
If you mean the Roblox community as a whole, I doubt it would be fragmented in any serious way if certain users were allowed the choice to use better lighting options.
1 Like
I meant that developers creating multiple places for the same game to maintain a stable framerate for certain devices is a common occurrence. Imagine you have a medium-detail social game using the Future technology. Even the highest end smartphones will have a hard time running it at a higher framerate. A common way to fix this is by releasing a 2nd version of the game that uses Shadowmap or Voxel, but that means you won’t be able to meet people playing the Future version.
I personally experienced this playing State of Anarchy. In their case, the game has multiple maps using different lighting technologies, with each having varying performance impact. In my case, my favorite map is by far not light on the hardware at all, but my PC is powerful enough to run it at at least 90FPS; however, when I try playing it with some friends, they struggle to maintain 40FPS. In other words, it’s either playing alone on my favorite map, or playing with some friends on a map I’m not familiar with or don’t enjoy.
It’s called technology for a reason, it’s a completely different segmented part of the code base and libraries on the client to instruct it on how to build/load the game which instructs other graphics settings.
Trying to dynamically change this would be a huge feat in changing the engine drastically for this behavior which makes absolutely no sense at all to do when they could instead spend more time on more useful features.
I can’t think of a use case where this switching these is useful, because your game should be designed for a specific lighting configuration in the first place because not all lighting is the same and could be ugly on Voxel to Future or the reverse.
3 Likes
Would it though? I don’t know the inner workings of Roblox’s lighting, but most other engines allow you to switch the technology during runtime by simply reseting the rendering engine.
It might be separate code, but a well implemented rendering engine is just a higher level API that links the game’s world to a lower level API like DX or Vulkan. Any code that interacts with the world should be shared between the technologies. If switching between voxel lighting and shadowmaps causes your project to crash then you have a serious problem on your hands.
3 Likes
Studio uses much more resources and is only on PC for a reason. Studio is not on phone for a reason. You are forgetting that this is a cross platform engine that relies on multiple libraries on multiple devices to get the same end results. You want the application to use as few resources as possible in runtime.
Fact is, this feature request does not make logistical sense because there is not really many cases for it. A few edge cases where some people want to try it.
But to dedicated millions of dollars in work labor towards a 1% of developers or less would be insane.
I’m not speaking of Studio now. Remember the good old “Restart your game to apply the video settings” message from the DX9 times? That’s what Roblox is stuck in right now. Almost every modern game allows you to change major settings on the run, which includes the technologies you mentioned. For example, most games implementing tessellation and POM don’t require a complete restart when you switch between them; instead, they restart the rendering portion of the program.
1 Like