Part Surface Weld Changes [Activated!]

Heads up, we haven’t forgotten about this and we plan to globally release this tomorrow!

The previous bug was related to MoveTo, and has been fixed.

6 Likes

Hello, I just wanted to ask for a heads up on what to do if my game relies heavily on surface-types? Joining to outsiders seems to join smooth against smooth surfaces which is not ideal for major areas of my game. It’s following the brick-built style of classic games and the original surfaces worked perfectly.
Thank you!

If you game relies on building using original surface joints during gameplay, then you can use MakeJoints to still create the legacy joint types based on surfaces. This is described in the original thread. There’s also a reply that has a code example on how to recreate the original JoinToOutsiders behavior with MakeJoints. There may be other solutions for your case but I don’t know a lot of the details.

2 Likes

Thank you! I will put this to use.

I’ve noticed recently that random welds have started to appear on parts, even when the parts are anchored.

Does this have anything to do with this update, and is there any way to disable it?

It’s kind of annoying and messes with my game.

3 Likes

Yes, just disable “Join Surfaces” via the button shown in the post’s image.

“Join Surfaces” should be off if you ever want to handle welds yourself with WeldConstraints.

Would it be possible to change it so it doesn’t affect anchored parts though?

It’d be a great feature to use if it were to only work with non-anchored parts (which are the only ones it’d have effect with anyways), but having to enable it and disable it continuously every time I want to switch between buildings can get tedious.

Thanks for the reply though! :+1:

We can look into it, however this is existing behavior of the surface join system. Surface joining itself is not a new feature (its been around since the beginning), the only change here is that now all SurfaceTypes join with each other with the same joint type. If you weren’t using it before there’s little reason to start now, WeldConstraints are still the preferred method.

1 Like

So this is about the surfaces being removed, will those still work? (legacy hinges)
image

3 Likes

Just had to deal with this myself. This feature needs to be default off, I just had to run a command to remove all welds with Part0 == Terrain.

Dragging my vehicles across the terrain to place them would cause them to weld to the terrain…

3 Likes

wow I just spent 3 HOURS trying to figure out what was causing my armor welds to screw up, thought I messed my weld script up somewhere and rewrote it like 4 times
nope this stupid setting was on by default and was making a bunch of extra welds connecting pieces that shouldn’t be connected

thanks, roblox

4 Likes

There has been nearly 2 months notice about this change. It also appears in Studio’s What’s New widget.

1 Like

Not too much to ask to have things like this off by default. Or at the very least it shouldn’t weld parts if they are both anchored. Also would have been nice if it had respected my previous setup of having it set to never join surfaces when it changed.

Not everyone watches out for these smaller updates. All I really look out for it the big stuff like lighting overhauls/grass/etc.

1 Like

This change is on by default as part surface types are being removed for various reasnos.

In my opinion, JointCreationMode.Surface should work as it had to. I don’t see any reason for these changes. Part surfaces just existed, were rarely, but used, and did not cause any bugs or glitches. I know Roblox is moving towards constraints, but when building big and destructible building with moving elements, they both need to be used. When I was building my game, I noticed that surface and constraints complete each other, surface - fast to create but low-detailed and constraints - hard and slow to make, but big functionality.
What’s the solution?
I think it would be best to continue having this “join surfaces” toggle and place “allow surface joints” setting somewhere in the game settings, which when activated, replaces the toggle with drop-down menu.

3 Likes

Could you elaborate on what makes WeldConstraints hard and slow to make? Ideally, you should not need to use both. Surface joints are legacy objects, and all future projects should try to use Constraints. We want to continue improving the tools so they are simple and fast to use.

For me, using weld constraints is faster because I can select any number parts, click “Weld” from the constraints list, and all touching parts will be welded together. This removes any need for a kind of “weld script”. But there may be areas we are lacking, so feedback here would be super helpful!

This surface joint change distills the different kinds of surface joints being made down to 1 (exception being legacy hinges/motors). This simplifies things and can even slightly improve performance. It also makes it easier for us to change this single surface joint to something more similar to Weld Constraints in the future.

1 Like

I thought old Welds already behaved like WeldConstraints. Aside from disabling WeldConstraints with a boolean, what’s the difference?

You’re right, behaviorally they are pretty much the same, just different properties. Biggest differences lie in the tooling.

We don’t have any concrete plans to change Welds, but now that it’s just Welds, it’s easier for us to make improvements.

2 Likes

You forgot to note other 2 differences:

  1. WeldConstraints don’t break when you are dragging welded objects.
  2. With WeldConstraints, you can weld 2 parts even if they don’t touch each other.
    I’ll make a bigger post later.

We just enabled a small change that helps clean-up unused surface welds.

If you delete a part/selection that is welded to a part outside the selection, the weld will always be deleted even if it wasn’t in your selection. This solves issues like having several unused welds parented to Terrain after the parts they were connected to have been deleted.

Similarly, if you copy a selection that contains a weld connected to a part outside your selection, that weld will not be copied (unless you specifically select the weld in the Explorer when copying). This solves issues like having duplicate unused welds in selections that are copy/pasted over and over. The same rules apply when exporting a selection.

This also only applies for editing in studio. Removing from the workspace via a script will not remove a weld parented to some other part. It would still need to be explicitly removed in this case.
Also this only applies to Weld instances, not WeldConstraints, which can only ever be removed explicitly.

1 Like