As a Roblox developer, it is currently too hard to design games around mid-long viewing distances, as it gets cut short (very aggressively) on low graphics settings.
- There’s many examples where render distance gets cut short even when the device can easily render the environment at a stable FPS.
- There’s many cases where a developer might want to prioritize rendering at a certain distance rather than having perfect 60 fps.
Let’s consider the first reason why this culling system should be improved - It’s currently an old, lazy and inefficient implementation.
In the example below have an empty baseplate of just 100 parts, a mere 2 drawcalls and 1.2k triangles (which is practically NOTHING to even the lowest of low end devices)
In the video above, as more parts come into view the maximum render distance is reduced to 200.
So at graphics level 01 something like 50 basic blocks is enough to overload the internal limit* and cause it to cull render distance, even if the device could very easily handle it. It does not care about context like scene complexity, device strength or developer intent, it just feels like a quick bandaid solution, which destroys a lot of games.
If such a simple scene triggers culling, pretty much every other game on roblox also does - they all cross this incredibly low threshold and sit at 200 stud render distance, which is not enough for a lot of games nowadays.
The second reason this culling system should be improved is to support competitive games that have long range combat, like snipers, air jets, tanks etc. These games become unplayable for players at lower graphics levels, because they require you to see opponents far away. There’s also many games that depend on large views and landscapes to guide the player towards key gameplay locations, a game design choice that becomes obsolete with such render distance limitations
Roblox has excellent tools to both automatically and manually optimize far away objects - LODs for meshes, terrain and for streamed out objects as well as great instancing/batching for reused assets. I feel like these features are being wasted, because in situations where they are most useful (low graphics levels, slow devices) they get culled off by these incredibly small render distances anyway.
I’d much prefer for my worlds to have lower visual quality (like the pictures above) and have continuity instead of cutting off abruptly and showing an empty void. And I’d gladly put in extra work to make this happen if any improvements to the engine allowed me to do so, but right now there’s nothing i can do about it, it’s just strictly enforced.
If Roblox is able to address this issue, it would improve my development experience because I’d be able to create even larger and more optimized worlds and showcase them to the fullest on any device, as well as design games with long distance combat, gameplay and viewing in mind
*There's a "FRM Blocks"/"FRM Visible" value that increases by a certain amount for every object thats visible, and as it reaches a maximum "target" the render distance lowers, this happens VERY fast and aggressively




