What determines a "Ladder", as climbable by characters?

Roblox characters have two main types of “Ladders” that they can climb:
Truss parts, and literal “Ladders” as formed by bricks.

Does anyone know what specifically determines what characters count as a ladder? I’ve tried many formations of various parts together, at various angles and shapes, to see what a character actually needs to collide with to be considered a “Ladder”, but haven’t been able to secure specifics.

Is this information already provided/researched somewhere, or is it just an unknown?

Oh, another good one I might test myself later - Can mesh parts, with accurate enough physics, be used as ladders?

Edit: Grabbing a random ladder mesh confirms my last question, meshes can be used as it. So I’m not exactly sure what the characters are detecting - The gap in what they’re colliding with? What sorcery is this dynamic ladder code?

8 Likes

Oh, another good one I might test myself later - Can mesh parts, with accurate enough physics, be used as ladders?

Unions work too. I am actually really curious how this works too - it’d be cool for a Roblox dev to break down how exactly it works.

2 Likes

Try looking through the CoreScripts.

C:\Program Files (x86)\Roblox\Versions\version-84fce1adf9184b2e\ExtraContent\scripts
1 Like

They’re so mysterious. Must be one of the first things roblox coded for characters, really.

Was spinning my ladder. Spinning it has no effect, but rotating it towards the player or away has an… interesting result. weeee, slidey.

2 Likes

Oh cool, will check there definitely. Had no idea it was that easy to find.

1 Like

They’ve been porting basically everything client-side to Lua. I can only assume they did the same to our Humanoid at one point.

Just fascinating - Haven’t inspected the code yet, but look at this odd behavior. Earlier it was established that models with gaps can work just fine, but here we see a very simple thing I modeled - Literally just two faces at the top and bottom - and it is completely unclimbable when ontop of eachother, despite the gaps being fairly regular for a roblox ladder.

It almost seems that while the gaps are fine, because the models are touching, roblox no longer sees them as a ladder - Which is kind of confusing behavior to observe. I definitely need to investigate further.

Edit: This is likely due to decomposition Geometry, which is fixed when set to “Precise” - But, does that then make it less efficient than a truss? Surely not, since you’d require tons of trusses to fill in a gap vs 1 complex-ish model (that’s mostly still just flat faces)

The models you used to create a ladder are way more efficient than a truss. Trusses when in large groups (you can view this yourself using Wireframe Mode) have a lot of unnecessary triangles.

While I don’t know what determines a ladder, I just wanted to point that out. Have a good day.

This is very late, but important to note - In my game, I replaced Trusses around a climbable square-profile tower with layers of flat, separated parts (similar to shown, but using individual flat wide parts instead of say, a model like in the vide)

They’re invisible, so it’s hard to say if they’re increasing performance. They definitely make building easier - Since truss parts are so restricted in size you need to use dozens anyways, so might as well just use individual simplified ladder parts.

…But there is a nasty side-effect. If you jump off the ladder, I found you cannot easily re-attach while falling. Trusses do not have this issue, but honestly it’s upset me enough that I’ve just given up on working on that game for now while I re-think.

It’d be really stupid to have to re-make climbing code just because Roblox has 0% transparency to how a very basic baked in feature works.

Roblox, either make it less stupidly hard-coded (it’s 2021, come on) or at least tell us how it even remotely functions? Pretty please? I’m sure whatever absurd coding is going on behind trusses is hard to break down, but it’d be absurdly benifical to devs everywhere to separate ladders into something that can be applied to say, any basepart, not just a stupid truss.

2 Likes

This feature of trusses is interesting and I can see why that’s frustrating. I’ll do some digging to see if there’s a way to replicate it. Also by increasing performance on invisible trusses, the engine still calculates collisions and trusses have more than basic collision fidelity.

If I don’t ever edit this reply, it means I found nothing. Either way, I hope you can find a way past this an continue to edit your game. Goodluck.

Really? I always assumed trusses just had basic hull/square hitboxes

image

(Above is a Roblox truss being viewed with mesh decomposition geometry, in better words, collision)

Nope, their visual geometry is identical to their collision geometry. It’s probably no performance boost at all with a few trusses, but if you have tens or hundreds (really depends on the type of game), basic parts would work better for performance just judging by their collision. They’re probably both downloaded into the engine however, so honestly use whatever you want.

I’ve also found no solution to your problem, I wish you luck.

Ah. Well that’s good to know - my current method of just layering flat bricks definitely is more simple than this truss pattern. If it’s collision geometry is precise (crazy - can we drop a tiny ball on it to be sure?) then maybe the square-oriented truss configuration would work better in this case for performance, but still worse than my ladders.

If anyone has any more information on this sorta thing, and what can “stuck” players (can’t get on a ladder) lmk

1 Like

I just want to make quick note that roblox’s inconsistent climbing physics are basically ruining my game right now, and I’m going to be forced to code an entirely custom climbing solution to work with the otherwise entirely default character controller. How sad is that? Roblox, it’s time to update ladders and trusses.

1 Like

Agreed. Please make a Ladder class or provide a way how to set something climbable manually.

6 Likes