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.