Have Parts anchored by default when inserting in Studio

A long standing issue I’ve had is inserting a Part, forgetting it’s unanchored, and finding out long after once testing the game. This results in a lot of backtracking to anchor everything, which can lead to mistakes of missing a part, or anchoring something I actually intended to be unanchored.

In the past, this has also resulted in large, unanchored Parts existing inside other Parts, and tanking a game’s FPS from the constant physics updates. My first thought when the game’s FPS dips is that something is up with the game’s code, rather than what should be a static map.

Given that build mode is dead and we’re no longer able to simulate physics until the game is explicitly played by the developer, it makes more sense for Studio to default to anchoring parts when inserting them. The Instance.new("Part") defaults could stay the same, but specifically when opening up the Insert Object menu and inserting a Part, having it anchored would be helpful.

50 Likes

We will likely never outright make it the default in Studio, but we have looked at solutions in the past to allow you to make this change yourself. No guarantees on timeline, but thank you for the report.

2 Likes

Why is Roblox so adamant about not changing this behavior?

I don’t think anyone expects parts to fall over by default. I remember years ago, I was so confused as to why my builds would fall apart. I didn’t even know what the anchor tool did. So if anything, this makes studio more frustrating for new users.

I’m sure I can speak for many developers when I say it’s fruitless having parts unanchored by default.

32 Likes

Honestly, how often do you spawn a part and want it non-anchored by default.

I find that often builders don’t think to go back and anchor parts and you can often be left with a ton of parts that I need to anchor myself.

17 Likes

I build in studio all day and when I forget to anchor a part it really sucks.

It gets in the way especially when you’re working around programmers who need certain parts un-anchored, since you can’t just select everything and anchor without breaking the game, that one wedge you quickly needed to add really comes back to haunt you.

9 Likes

It’s not directly what you want: But if you’re trying to look for unanchored parts, you can go into the studio settings and turn on “Physics → Display → Are Anchors Shown” to show which parts are anchored and which aren’t.

3 Likes

A temporary solution to this might be a plugin with the given code. This plugin will create a button in the Plugins tab of studio called “Anchor Inserted Parts”. Clicking on it will toggle this feature on or off.

Unfortunately, this has a number of critical caveats that I need to mention, for instance, cutting/pasting parts or copying/pasting parts will cause the pasted part to be anchored even if the copied part was unanchored. Of course, an official feature would be able to mitigate this problem.

You could probably upgrade the code to use a table to store these parts so that it knows which parts already existed, but that has some issues of its own as well.

If Attributes were live, this would be orders of magnitude easier, as it would be possible to set an attribute that effectively says “I already existed”, and this would be persistent so the plugin wouldn’t forget which parts are new and which aren’t between sessions. Oh well.

local Toolbar = plugin:CreateToolbar("Anchor Utility")
local Button = Toolbar:CreateButton("Anchor Inserted Parts", "When enabled, parts added to the workspace or one of its descendants will be anchored", "")

local IsActive = false
local InsertConnection = nil
Button.Click:Connect(function ()
	IsActive = not IsActive
	Button:SetActive(IsActive)
	if IsActive then
		InsertConnection = workspace.DescendantAdded:Connect(function (object)
			if object:IsA("BasePart") then
				object.Anchored = true
			end
		end)
	else
		InsertConnection:Disconnect()
		InsertConnection = nil
	end
end)

Wouldn’t this solution anchor all parts if you were dragging from RepStorage → Workspace

Yes, unfortunately, hence why it’s not exactly a good solution. It’s about as good as it’s gonna get, it’s probably possible to hack something together that can detect if a part is new or not like I said originally, but for lack of official support, things won’t look so hot for now.