Changes to Part Surfaces

lol really? well i was totally wrong, i had know idea you could drive a car without yellow hinges. i may also be a little stuck in the old ways that things where done. anyway, thanks for the corrections! this is one reason why i came to dev forum to begin with.

2 Likes

Scripts are the crux of the issue. Without surface hinges, VehicleSeats are basically defunct and only serve as a shortcut to get user input and camera behavior. So you have to use scripts of some kind.

I knew this would be an issue so I made a Vehicle Seat re-implementation for constraints, called VehicleSeat2

There are a few differences because of my personal style, but I’ve included fairly comprehensive instructions. It will allow you to do everything VehicleSeats do and more, including powered bogies for diesel locomotives.


On a different topic, what will happen to ManualWelds? Will they be deprecated like normal deprecated objects or are they going to get removed? Thousands of train models on roblox rely on ManualWelds because the original weld coupler used them and everyone has used the same script (and derivatives) since. WeldConstraints are actually a very poor object for this use case, so I have some concerns.

4 Likes

Thank you space, brilliant as usual! to salve the issue though, i think roblox needs to be responsible of adding a way to work vehicleseats into the constraint system. This could bring in many new possibility’s that can be installed simply and be operated with our keyboard. For example, we could use up and down (w and s) to extend and retract a rope, by checking a box in the rope setting’s to allow a link between seat and the rope, and another space where we can enter which keys will control the rope, or leave it be and the rope stays as is. There’s opportunity’s like this for most of the constraints, including a full replacement of the surface hinges. More hinges can be added along with allowing wheel interaction, and we can tell the hinges which will react to a vehicle seat, and which will not. this could be done by anyone while scripting can continue to be a optional feature as i believe it should be Not everyone starts roblox by learning how to script after all, they may want to build a vehicle, and i would hate to see them hit a wall ones they realize that constraint hinges can’t be manually interacted with without a script.

1 Like

Personally I’m not a huge fan for something like that being added by default. If Roblox wasn’t a game engine like it is, it would be more pertinent. As much as you don’t like scripts, I think the complexity of such a suggestion is best left to scripts instead of being baked into the engine. Whether or not it’s a script or part of the engine, you’re going to have to configure the motors and such somehow and it doesn’t strike me as particularly pythonic (or would that be robloxic?) to do that as an engine-level feature.

1 Like

Its not that i don’t like script, im just trying to come up with ways for new developers to continue to be able to throw wheels on a chassis with a seat and go. Anyway you do make a fair point and fully respect it.

2 Likes

Another quick question, if it’s off and the way everything is functioning when it’s off, is that how it’ll function after this update?

image Also will these welds still work?

2 Likes

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