Many building games on roblox need some kind of dragger. The problem is, its very difficult to create your own. So you either use some kind of simplified system, or use the roblox dragger instance.
To encourage people to make more building games and such (which should be well supported, as it seems to be the focus of the platform!), I feel the dragger instance should be updated, to better customize it for a given games requirements.
- Add black/whitelists for parts to ignore/acknowledge. Currently dragger messes up if you have some invisible brick to implement some visual effect, or if theres some tiny blocks all over the place as detail. Let us choose which bricks are relevant for building, and which are not. It would be useful if there were separate lists for parts you can place ON, and parts it will not allow placing IN. Like some scenery tree, you dont want to place inside it, but you dont want to allow attaching parts on it either. Its just an obstacle, not a building surface (Did Locked property do this?).
- Maximum range. If you point beyond this, the part shall hover exactly at this range from the āoriginā. So if you then place the part, it will be dropped within reasonable range of you.
- RangeOrigin instance (probably your camera, or your head, usually). AtMaxRange read-only boolean.
- ForceRotate checkbox. Currently the tool wont rotate if parts in the way. So rotation does nothing in many situations. This forces rotation, even if it results in clipping (currently I implement this manually).
- IsClipping read-only boolean, so if the above fails to find non-clipping rotation, you can check this before allowing placement (optional, this can be manually checked as well).
- Make mouseup return the list of surfaces/parts the placed object is touching at the moment of placement (I assume this information is available). Welding happens serverside, so information of the surfaces must be sent as well (not just what object to place and where), otherwise placing on moving surfaces is impossible.
- If there are any MoveIncrement / RotationIncrement variables that can be exposed, do so.
- Boolean read-only variable that tells whether the current position of the placed object is rougly where the mouse is, or if it was āleft behindā somewhere else because the current mouse ray has no good locations on it. So you can tell the user āObject doesnt fit hereā or such (currently the object is just nowhere to be seen, which isnt very good UX).
I think those are the main ones that I would find useful.
I would also make sure that there are simple dragger/clone/destroy tools, implemented in Lua, easily available and discoverable, so people can easily make their own building games, and add custom limitations (limited range, limit which blocks you can use, and where you can place themā¦). Building games have always been kind of bad because people only had the hard-coded drag/clone/destroy tools which werent modifiable.