Say Hello to the New Lua Draggers

Hello everyone!

Today, we are extremely excited to move a brand new feature from beta to release: new draggers! The new Move, Scale, and Rotate tools are meant to be familiar to Studio users but also to make building a lot more effortless and efficient. They will be rolling out to all Studio users over the next few weeks. Oh, and the icing on the cake? They’re based on a reusable Lua framework available to all of you should you want to make your own draggers.

We had two goals in mind as we embarked on the epic adventure to create the new draggers in Studio.

  • Improved Experience
    The design of the new Move, Scale, and Rotate tools are informed by the following principles:
    • Minimalism: Tools enhance user productivity and stay out of the way. They use the minimum UI needed to clearly communicate their functions and facilitate user interaction.
    • Familiarity: Tools incorporate common design idioms that developers would expect, such as RGB axis colors, arrows for move, rings for rotate, and so on.
    • Predictability: Tools should have predictable and consistent behavior so that they work how creators expect.
  • Reusable Framework
    The new Move, Scale, and Rotate tools are built on top of a framework that can be leveraged by our developer community. Developers can create their own new draggers and manipulators or copy the core draggers and make minor adjustments to their behavior so that they work better for some particular task on one of their projects.

We made a few changes to the draggers to make building with native tools more efficient. The primary improvements to the draggers are in the behavior of the freeform dragging invoked when you click on a part and drag & drop it to a new location in the Workspace with any of the core draggers (or any manipulators you build using the reusable framework in the future!)

We hope that this new dragger solves some of the key issues that many of you have pointed out and makes building in Studio a lot easier!

Big kudos to @tnavarts and @LuckyKobold for making this happen!

201 Likes

Finally! Dragging has became much more versatile for daily use. I now use this feature all the time, ever since it was in beta. Glad everyone can use it now. :smiley:

It is especially useful when I want an object to stick to the ground. Doing this with the move tool is very hard, as I’d have to move the part in very small increments. Not any longer! When I want to add something to be flat on the ground, I use the dragger!

Love this feature. Before this was in beta, whenever I’d want to move an object using the dragger, it would always come with the annoyance of not conforming to different angles from it’s origin. Not any longer!

These are also two very important aspects of the new Lua Draggers. It will make the dragger much more versatile.

It’s great that you’re focusing on precision building, which often works with off-grid increments. Love this change too.

Thank god you’ve implemented this new behavior. Often working in places floating in space, the dragger was so difficult to use because of the parts flying out into the void. This made the dragger virtually useless, bu with all these new changes. that won’t be the case any longer.

Thank you!

13 Likes

FINALLY! I’ve been needing this for a while now. Seems like AGES!

7 Likes

Oh heck yeah. The new Lua draggers are a major improvement over the C++ ones. Thank you Roblox!

4 Likes

Omg, thank you so much! I’ve been waiting for this for so long, this will definitely help with my future projects! :+1:

6 Likes

Holy moly cow! This is amazing!!!

Finally another excuse for more people to use less plugins for everything!!

7 Likes

A lot Better!! That is a dramatic difference!

4 Likes

Amazing!

@tnavarts did say in a release notes that these were soon going to be out of beta, and here we are. Time travel is an awesome thing.

Can we have a fix to this classic issue, also found in the old draggers?

This is like saying bye to Lua Draggers (literally because it’s going offscreen, unintentionally)!

Nonetheless, this is so good, that I want to start draggin’ parts around just for the sake of it!
Keep it up, Roblox! :roblox: :roblox_light:

15 Likes

It’s actually kind of working as intended. The mathematical function that I choose for how it should drag has that implication at the extreme edge cases.

We’re looking at doing further redesign on the draggers in the near future after we get feedback on the full draggers release. Improving what happens in those edge cases is on my radar.

7 Likes

I’ve been having an issue with any game that has a reasonably high part count (the place I’m testing with only has like ~5500 parts in the background). It’s way slower/laggier when using the move tool on parts that are adjacent to others (creating the white selection box on the face that is touching).
Old:


New:

It can be a little hard to tell there, but it’s very noticeably slower when working in studio. This has been the sole reason I’ve stayed away from the Lua Draggers beta so I’m hoping it’ll be improved soon (I haven’t seen many other reports of lag like this - is anyone else even experiencing this issue?)
Still excited though, these new draggers are wayyy better.
8 Likes

This is an amazing update. No more dragging a small part to the void when I’m trying to move it like 10 studs away from it’s original position.

3 Likes

I prioritized performance with Join Surfaces off since the majority of developers do their work with it off. I’m going to do an optimization pass on the Joint code soon, and things should improve noticeably when I do.

If you find a particularly good practical test case with noticeably worse performance than other similar situations please share it, I’d like some good real world test cases to use when I do that optimization pass.

6 Likes

Oh, gotcha. I only keep Join Surfaces on because of the white selection box, found it helpful to know when two surfaces are aligned properly but I forgot I could turn it off lol.
If I find anything noticeably severe in terms of performance I’ll share :+1:

4 Likes

A dream come true. I’m excited to try this out, should make my life a whole lot easier.

4 Likes

This is an amazing and welcoming change, if my request for move/rotate/scale increments back a while ago ever makes it into the next updates, then I’ll certainly be more happier, because I’ve used qCmdUtl before.

This won’t be in the initial release, but is very likely to be added as part of the further improvements we have planned.

And at the same time, we get a WIP alligning plugin! Amazing.

4 Likes

Will this be able to be option, like will we be able to continue to use the old if we wanted, when I tried it when it was beta there was some things I didn’t really like about it, such as parts moving into other parts etc when dragging and some other things. Also the draggers seemed not as easy to click and hold to move. I cannot really explain it out.

That said there are some features like parts snapping to angles of other parts. The smooth and small movement of parts

Basically I’m fine with using the old way if it’s possible to still be able to use it.

9 Likes

Have you tried to enable collisions?

4 Likes

Thank you Roblox :roblox:, very cool!

The new Lua draggers are just fantastic, wayyy more cleaner than c++ one, a minor fps boost, but just 1 problem:

  1. Dragging Unions in the Z (Haven’t tried X) axis will cause them to go slightly down the longer you move them (after a long time, they will rotate in a circle type while moving). Sorry for the wording, I’m not very good at wording.
    Is this intentional or just a bug?

Anyways, this new feature is EPIC, thank you Roblox! :roblox_light:

2 Likes

No, the new draggers are currently force-enabled for 10% of users, and that will be increasing to 100% within a couple of weeks barring any significant issues coming up. We can temporarily disable the new draggers for you if you can explain a way in which they’re blocking your workflow while we work on a fix for that, but in the long run they will be forced for everyone.

We have planned features in the road-map which will fill the use case of actually “physically” freeform dragging something such that it never intersects with anything. In the meantime, let us know if there’s any use case which you’re actually blocked from completing with the new dragging behavior.

If I understand what you’re talking about correctly, you don’t like it that you can no longer click and slightly drag with your mouse to slightly adjust the position of a part (it will “jump” instead when you start the drag).

This is unfortunately a tradeoff that we had to make with the new dragging behavior: We decided that being able to predictably place a dragged object at almost any desired position was more important than being able to use the freeform dragging for those micro-adjustments.

1 Like

You probably have the “Constraints” toggle turned on. When this toggle is turned on the draggers use Inverse Kinematic movement rather than geometric movement, you can think of it as moving the objects by applying a force rather than moving them by an exact offset. That “force” is applied through the center of the bounding box of the selected objects. Thus, if you drag an asymmetrical object, it will rotate (in the same way that if you push with your finger on the side of an object it will rotate as well as move).

I’m aware that this is not generally desirable behavior, and I’m going to be improving the situation with some changes coming in the next few months. For now you can turn off Constraints while moving models that aren’t part of a constrained mechanism.

1 Like