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.
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.
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.
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.
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 Build and Race - Roblox
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
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.
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!
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.
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?