100 highlights would destroy low end devices, so it really is “for performance reasons” but a solution could be lowering the resolution of the outlines based on the hardware
That should be left up to the developer instead of the game engine. Why does Roblox think they need to determine that for us? A game that doesn’t perform well will lose players, causing the developers to update it or suffer the losses of revenue. Why is Roblox trying to be in charge of a game’s performance? “For performance reasons” is not a valid excuse, as performance should be dictated by the game developer and not the game engine itself. That’s like telling Unreal engine to remove all realistic lighting features because a couple of mobile devices can’t run them properly. Completely backwards logic.
32 parts in a single model highlighted: only one instance used.
32 highlight instances for 32 parts: same effect but now we hit a limit.
This limit is arbitrary and does nothing but get in the way.
I find it weird how people complain when Roblox tries to optimise your games for you but you also complain when they don’t, I don’t know if you’ve heard of pick a lane but if you need more than 30 highlights you’re doing something wrong.
There are other ways to do this:
ViewportFrames (If you don’t want occlusion)
BaseParts (Just resize them to be slightly larger than the limb)
SelectionBoxes (Works with outlines so…)
OR
Use Highlights but in moderation.
Just because there may be performance implications of adding the feature right now, that doesn’t mean that a solution for that won’t be found in the future which may make it way more feasible to implement. Also, if the reason for not adding this feature is solely performance reasons (which from what I can tell, that isn’t solely the case), I’d rather be able to optionally take that performance hit if I find that I need more highlights.
Unfortunately, there are some drawbacks with these alternatives;
ViewportFrames: As you mentioned, occlusion is not supported with this. Outlines are also not supported by this solution.
BaseParts: Draw order of transparent parts is not guarenteed on Roblox so this isn’t an ideal solution as if the player has any translucent accessories they will fight to be visible on top of the highlight effect. On top of this, there will unfortunately be visible seams where two parts meet which (in some cases) could also fight to be displayed on top of each other.
SelectionBoxes: This unfortunately doesn’t work for dynamic shaped objects which are not basic cubes.
Hmm well I dont know if its legal for me to reply on this age old thread, but ill do it anyways
My theory is that roblox limits it to 31, so that cheaters cant create 10 billion esp highlights. It sucks, since there are few games where 31 esp highlights make a difference (31 highlighted players? you’d need 31 players in a server for that!)
I doubt that’s the case.
Just like the limited resolution of decals, I reckon its to do with performance concerns for lower end devices.
To that end, I don’t understand why they can’t just adjust the limit according to the player’s graphics settings instead of making things more difficult for developers.
For my use case, I use highlights for a FLIR camera on my helicopters, and this limit greatly affects its usability.
I’ve read on another thread, this limitation arises from OpenGL ES 2.0, which is apparently still supported even though Roblox states the minimum required is OpenGL ES 3. For your information, OpenGL ES 2.0 is a 17 year old graphics API. Which around 1% of all android users were using in Dec 31, 2021 and 0.1% of all iOS players. I’m not sure why the decision of removing it was overturned, maybe they just didn’t remove it yet because the engine is dependent on something? I’m not sure but this is the problem that causes the highlight limit here, that graphics API.
This wouldn’t make sense since 99% of games have under 12 players. Why would they pick a limit like 31 when almost no games have that many players? As someone else suggested in this thread it is likely to do with outdated graphics API still supported by the Roblox engine. Matter of fact that is probably the reason we lack a lot of modern features. The Roblox engine itself is outdated and continues to fall further and further behind.
i’d like this, but i think it would also be much better if there was an easier way to tag multiple objects to use the same highlight. the current best option is to parent what you want highlighted to the same instance, but this can over-complicate things very quickly. there should be an easier way to set multiple parts/models to a singular highlight