Changes to Part Surfaces

I find them confusing so I don’t touch them much.

This is a great change for builders!

1 Like

Yes, although I would recommend using the newer WeldConstraint.

Sorry for very late reply but I wasn’t teaching them how to use studio controls I was teaching techniques period that works in studio and In game.
It uses default tools ROBLOX had and not custom ones. The in game tools act pretty much same as the studio ones but is just 1 stud type movement. I taught one of my friends to build and now they build better than me in studio. Learning studio isn’t much of a learning curve but you just get more options.

Weld script was intended for part that are inside each other I should have clarified that.

I understand what you are trying to teach, but you really should be teaching them in Studio. Relying on building in games is subject to change by the game creator and you will run into issues.

I can’t think of any particular use cases or reasons not to teach people in Studio.

Roblox does not offer any tools for building in-game. They did in the past for things such as personal servers, but those were phased out a while ago.

You can still use weld constraints to weld parts that are inside of each other.

I will phase it out though but it makes them know the physics more also. And please read my comment I was editing it but you replied allready.
I’m teaching in studio also which still act same. People have fe enabled tools also.

Studio pretty much just gives you more freedom of your work

ROBLOX has actual tools that have select, resize, material, the only tool that isn’t in there is move which is fine for real-time

Example place with the tools https://www.roblox.com/games/135335425/Build-and-Race
Edit: btw the type of tools i used before were before personal places. People update the tools to work with modern times. The example place has the default tools but gives options on how it can move also so I guess it’s modified but it stays true to the original.
I’m not good at getting my mind on posts sorry

1 Like

I have a suggestion I thought of while writing plugin scripts.

What if instead of removing the legacy surface tools, just disable them by default and provide an option to enable them from the settings screen under Advanced? This way, you achieve the goal of simplifying Studio for new builders while still providing builders a means of using the old tools if they’re still needed.

For now it’s just a fast flag, which is sorta like a setting.

For it’s overall usefulness, will this be much of a development burden long-term?


Speaking of scripts, I came up with a horribly-inefficient workaround for making scripts that use JoinToOutsiders continue to work as originally-designed.

It’s inefficient because it loops through arrays of objects a lot from the added overhead of tracking and deleting undesired joints made between the target parts, which can really bog down on performance when using legacy build tools to move lots of parts at once.

LegacyJoinToOutsiders Script
-- Creates joints between the bricks in the specified list and the bricks outside according to
-- legacy rules, while leaving existing joints between the specified bricks the same.
function LegacyJoinToOutsiders(objects)
	-- Scan for existing joints and write them to a table.
	-- 
	-- MakeJoints will only create joints parented just inside the individual parts, and it
	-- will not create duplicate joints, so we don't have to worry about scanning everything
	-- in Workspace for joints we care about, just inside the Parts given.
	local existingJoints = {}
	for _, part in ipairs(objects) do
		for _, joint in ipairs(part:GetChildren()) do
			if joint:IsA("JointInstance") then
				table.insert(existingJoints, joint)
			end
		end
	end
	
	-- Run MakeJoints on all the bricks.
	for _, part in ipairs(objects) do
		part:MakeJoints()
	end
	
	-- Scan for and destroy all the joints that were unintentionally made between the specified bricks.
	local function isInTable(t, partA)
		if partA == nil then
			return false
		end
		for _, partB in ipairs(t) do
			if partB == partA then
				return true
			end
		end
		return false
	end
	for _, part in ipairs(objects) do
		for _, joint in ipairs(part:GetChildren()) do
			if joint:IsA("JointInstance") and not isInTable(existingJoints, joint) and
				isInTable(objects, joint.Part0) and isInTable(objects, joint.Part1) then
				
				joint:Destroy()
			end
		end
	end
end

This is just-in-case I need to use something that depended on the legacy JoinToOutsiders for its don’t-weld-to-self functionality in combination with legacy surface joints.


If they do get completely hidden with no button to show them, I plan to make a Show Legacy Surfaces plugin that puts textures everywhere to simulate this. I’ve already written a Show Invisible Bricks plugin, so this shouldn’t be a nightmare.

The reason I need to see surface types is I still need to see how objects weld together with them.

3 Likes

Perhaps with the removal of surface joints, a “WeldStrength” property should be added, so developers can determine how weak or strong a weld is.

I have to say after seeing the Mechanized / Motor video covered in RDC I am looking forward to playing with these new features in Studio… Now what to do about the pesky Viewports!

1 Like

Would this script be affected by this update?

3 Likes

No, it should work the same. Though it is advised you use constraints instead unless the legacy hinges work better for some reason.

4 Likes

Looks awesome, I highly support this change and hope its up to public soon! Can’t wait to see what games will implement this.

The steering system for cars using my chassis won’t be affected, but in the future when they remove all joints, the tires will be affected. I will probably at some point make a retrofit kit to keep them working.

2 Likes

I don’t use any surfaces but smooth and my wheels work fine they don’t use the hinge system I just use the steercreate, will it still be affected if I’m not using the hinges for my wheels?

1 Like

If you are already using constraints for your wheels then you don’t have to do anything. I doubt they will do anything with Motors so you should be fine.

2 Likes

I’m not exactly sure what I’m using but I know my vehicle wheels don’t use hinges or any sort of surface attachment that’s being removed.

1 Like

No future surface joint change will intentionally break existing Toolbox models, including this one. You shouldn’t need to update anything.

4 Likes

So if my chassis is using hinges and this script it isn’t going to break?

2 Likes

You should enable the beta feature and see.

3 Likes

I don’t have the option as of right now, I’m currently on the Beta waiting list.

3 Likes