Being able to force the amount of segments or LOD for beams

As a Roblox developer, it is currently too hard to make beams look great on low settings.

gif1
My hexagon ring.

I use hexagon-like rings for my project. The part uses 2 animated beams with 2 attachment points.
Beams are using 3 segments.
They are like this, because their animation looks really smooth and pretty.
It’s also opted and it’s really easy to manage them.
On lower settings, their level of detail gets… uhh…


Level 1-5, 6-7 and 8-10

Do we really have to opt something that is already opted?
Maybe some kind of bool named like “ForceSegments” could prevent engine from doing this?

If Roblox does something about my issue, that would save me from using local script hacks.
I don’t want to use them just because of a three-segmented beam.

If not, then I hope only beams with higher amount of segments get affected.

88 Likes

Support.

1 Like

The major flaw in beams, trails, glass, particles, and even lights and shadows is that we can’t use any of them for actual gameplay because we can’t make sure the user will actually be able to see them. All these features are so great but their uses are limited to unimportant visial effects because they don’t appear properly for a lot of players.

39 Likes

It’s not that great how quality level acts as a multiplier for segments. Six segments is nothing – it doesn’t affect performance – but despite that the multiplier butchers the #segments. On the contrary, if I have way too many beams, just adding a multiplier isn’t going to help performance – there are still too many.

Instead of quality level being a multiplier for segments, there should be a maximum number of segments depending on quality level. That way, responsible use of beams doesn’t decrease #segments, and irresponsible spamming of beams is performant on low quality levels. This obviously doesn’t solve the issue Sharksie pointed out, but it would be better behavior than a multiplier.

17 Likes

Support. I’d like similar options for parts.

1 Like

Yeah they should not be optimized like that, that makes them unusable

1 Like

Yeah. Bringing the thread back up a bit, because I’m really worried about it.

The only fix for now is to make a local script which tries to fix the LOD or make 1-segmented beams with LOADS of attachments (annoying).

2 Likes

I’d also really like some way to force a certain minimum amount of segments.

Here I’d like to align the beam with a model, which looks fine on maximum quality with a low amount of segments per curve (~5–6):

image

However, when reducing graphics quality, it starts to look like this, where all beams get reduced to a single segment:

image

This can be “fixed” by multiplying the number of segments by 5, which adds only a single additional segment per curved beam on the lowest quality setting, making it look good enough for me. That obviously has the side effect that there are a lot of unnecessary segments drawn on higher quality graphics settings, which is something I’d obviously like to avoid…

23 Likes

This, so much. Roblox lacks options for gameplay visuals significantly. It’s why you see so many games that lack visual feedback for tons of actions and features.

9 Likes

I’m not even entirely sure why beams behave this way, especially at such a low polygon count in the first place. If they’re using planes for beams, there’d only be about 36 triangles in the level 8-10 image, 16 if we don’t we add in the extra ones on the other side. I don’t see how or why such low polys need to be clipped, unless of course, this is a regression caused by mobile device support. Could be wrong though.

1 Like

They behave this way because the intended functionality was for them to serve a graphical purpose, i.e. as a special effect. They were not made for showing curves in fixed shapes regardless of quality level. That’s why we have this feature request.

The correct word would be “feature”, not “regression”. Nothing has regressed, this is all intended functionality.

1 Like

This would be useful for collision meshes as well - when a collision mesh is generated, it would be nice to have a maximum amount of collision triangles allowed in the world at a time, and the collision mesh would change accordingly. This would allow for small maps to have accurate collision when there are few meshes in a world.

1 Like

needing this right abut now for a circular gradient effect, little bummed i cant use the beam feature
support

4 Likes

@Player1unknown @Mah_Bucket Please provide use cases instead of simple “we need this” replies, it gives engineers a better gauge of why they should prioritize this feature.

3 Likes

Beams are currently completely useless for functional purposes in-game. Even for visual purposes they are crippled. I am unable to make beams in my game visually coherent on all quality levels while still preserving my artistic vision.

Here is just one example of where even the purely presentational use of this feature is messed up by having no control over number of segments. This waterfall requires at least 2-3 segments to curve enough so that it does not clip into the wall while still blending decently into the terrain water. Fudging this waterfall to still work with one segment takes an extremely long time iterating back and forth between quality levels and results in an artistically inferior result by the end because I cannot rely on the beam being able to curve even a little.


We need the ability to set the minimum number of segments for a beam so that LoD can simply scale between the desired number and the minimum, instead of being hardcoded to scale all the way down to one.

The onus is on developers to not be stupid with it.

8 Likes

Posted a solution for all cases (unless roblox themselves changes the LOD structure in the future so keep in mind), this removes the interference from the engine when camera is too far away or graphics quality is changed in settings so it provides the intended visuals by developers.

1 Like