So you’re just minding your own business, building an epic level, when this happens:
When you set a part’s size, it is moved on top of all parts it intersects with, even if it needs to climb a skyscraper to do so. This happens in studio, as well as in-game.
Back in the day, this platform was primarily a physically simulated block building game. Many building features/tools were written into the API, for example: FormFactor, SurfaceType, Draggers, and this size set behavior. As we become a game platform, some of these features are becoming less useful, and can even get in the way.
It’s not intuitive
I think that changing one property should not change another property unless there is actually some constraint. If we want our build tools to change behavior, the functionality should be in the build tool, not in the parts (I’m looking at you FormFactor!) Many years ago, parts clipping through each other may have been considered a buggy behavior, (especially in unanchored parts) but people can create modern levels by CFraming parts. [size=2](I find this behavior is annoying even in old building games)[/size]
It’s slow
The behavior itself is laggy. I did some tests, and because of this behavior, setting a single part’s size can go from taking ~0.05 milliseconds to 20 milliseconds!
How we’re working around this
This lag can be avoided by parenting the part to nil, setting the size, then setting the parent back. People usually just set the size, then set the part’s cframe back to what it was supposed to be, but doing it that way will still lag.
My internship is over and I can’t really look into this myself. Does anyone have something that depends on this behavior, or does it just get in the way?
tl;dr: we should consider removing this behavior
edit: Replaced dead gyazo link with mp4