New Humanoid Physics Controller - Beta

This looks really cool!!!

4 Likes

finally! new truss part that can be properly scaled when :thinking:

7 Likes

Today is an amazing day, Roblox is finally bringing so many wanted updates! I really love how it generally feels
Here’s some issues I’ve noticed:

  • Falling animation doesn’t exist, instead the last played animation is looped when falling

  • Walking up stairs is very bumpy

  • Landing sometimes has some janky physics, pushing the player in random directions/rotations at high speeds and the player is EXTREMELY fragile to the point that landing from a fall the size of 2 players puts you into that PlatformStand mode

  • Dying just PlatformStands you instead of making you fall into pieces/ragdoll (honestly hoping that there could be a basic Active Ragdoll type thing that blends in with various animations like flailing and staggering to increase immersion and to compete with AAA game ragdolls)

  • As said before, the player is extremely “fragile”; basic actions like jumping under a rotated part can PlatformStand you, sometimes even flinging you to the distortion point.

  • Jumping at a wall can make you “glued” to the wall in midair and fling you to the distortion point.

  • Jumping on a climbable object increases your climbing speed to ridiculous amounts.

20 Likes

I love to see improvements made to core parts of the engine. I hope the testing stages go well and we can see this new tech live as soon as possible.

Conservation of momentum when jumping is probably my favourite thing added here! I can’t tell you how many times I’ve been on a moving object only to jump and be yeeted into the void.

4 Likes

One thing missing that I would like to tweak is the speed of the character rising/falling when swimming. I do not want the character to automatically swim upwards the majority of the time I have significant water areas.

Also if you toggle rigidity enabled on the swim controller, you break the character self-righting itself, but I guess this is the same reason why we shouldn’t modify the controller at runtime lol.
image

Another thing to note is that after inserting the controller manager and letting the defaults fill, jumping is broken, at least for my character. There does not seem to be enough force and I cannot find the setting for it.

14 Likes

Here’s an issue I ran into:


In the video you can see that changing directions shifts the character slightly which doesn’t feel great. At the end it doesn’t shift the character, it seems to depend on the direction you are going.


It would be awesome if the new character controller supported a rotated HumanoidRootPart. It’s currently impossible to use an upright cylinder because it’s not the default rotation.
image

17 Likes

I love this update a lot and will definitely be experimenting with it. I only have one issue with it; you cannot use JumpHeight with the controllers when I tested it. That’s something I use on all humanoids

4 Likes

To clarify, modifying the Controller properties is totally ok and expected! I was referring to trying to insert/remove the instances themselves. It sounds like this may be a bug!

As per your request, are you saying you’d like to customize the swimming move speed for up/down separately from forward/back?

Thanks for the video of the movement shifting, I’ll look into it.
As for the cylinder rotation issue, this is definitely something we want to support. You should be able to customize what you want your up and forward axes are.

I forgot to mention this! Several Humanoid properties have moved over to specific controllers and currently we do not write one to the other.

Jumping is tuned by setting the VectorForce property on the JumpController. Yes this means you can also add an X and Z dimension to your jump! (note this is probably going to get renamed as well)

HipHeight is also now defined on the GroundControllers as a GroundOffset property.

WalkSpeed is split between the ControllerManager.BaseMoveSpeed, and the MoveSpeedFactor property found on each controller. (final speed is BaseMoveSpeed * MoveSpeedFactor)

These should be getting set correctly if you’re inserting a ControllerManager via the StarterHumaonoid workflow mentioned in the post. Otherwise, you’ll need to set these manually if you want to change them at runtime.

15 Likes

Extremely excited to see component humanoids are still happening, and even nicer to see it implemented in a seemingly more straightforward and understandable way compared to the old setup shown a couple years back!

However, I do have one concern. I don’t see any mention of fully scriptable custom base controllers. Without this, the dream of component humanoids simply does not exist. No matter how many base controllers get released, there will always be some idea that requires a controller that Roblox will not be able to anticipate. If developers were to have the ability to write up new controllers from scratch, then the possibilities would be endless. Being able to control when and how custom states occur happen would mean we can write out virtually any scenario we want for our players to go through. I think the customizable properties on the default controllers are beneficial and should be explored but if that’s the extent of our ability to customize the humanoid system then we’re not far enough from the current implementation, developers will continue scrapping humanoids in favor of their own systems (with potential clunky interfacing between the base controllers), and there would need to be a whole new revamp to fix that issue.

Since it’s only the first step I might be a bit paranoid and full customization is the intention for humanoid componentization, but I want to leave this here just so there’s a clear understanding of the problems these updates intend to solve.

10 Likes

a bit higher is an understatement lol

my jump power is set to 13, by default the JumpController (auto created) is set to 50 and changing jump power does nothing unless you set it to 0. To somewhat match the jump power, I have to set the JumpController to 3 :skull_and_crossbones:

2 Likes

Specifically, when you do not touch the controls and you are underwater, the character will slowly swim back to the surface. I do not want this the majority of the time.

7 Likes

Is there a way to not use a VectorForce but use a height/offset like how JumpHeight uses? I never use forces for jumping because I like having jump height consistent with different gravity values. Will this be added as an option?

Yes this will be added. For now you should be able to still set your JumpHeight on the Humanoid, and obtain the computed JumpPower value. Then set this as the VectorForce.Y value.

1 Like

I like this update but oh my god stop spamming our messages

However, will there ever be a FreeFall controller?

1 Like

This sadly set the JumpHeight to 0 because it prioritized JumpPower’s value. I manually tried setting it to 12 (A height for my platformer) and it just went to 0 instead.

ok got it! Will explore this.


4 Likes

Will it always remain this way? I can see this feature breaking games that implemented an ‘AirController’ like-system when the feature did not exist (however I have not had a chance to test that hypothesis)

Will we ever see an expansion in the constraints that we can use as developers? I appreciate the addition of the magic new character controllers, even though they aren’t written in Lua like I’d hoped, but I’d really like to be able to implement things like mecanum wheels and hoverpads and so on without requiring lots of manual ApplyImpulses.

Love this update, will make our workflow much more easier to work with!

Incredible update. A new character controller is much appreciated after more or less having to use the default, less customizable one for years now. One thing I’ve always been dissatisfied with as a developer is how Roblox has no customization for ‘momentum’–I think they’ve said once it was to avoid Bhopping, but I think that should be less of a problem now. Being able to set characters to momentum and have to build up their speed over time in order to start running full speed, and to have strafing slow you down depending on the movement direction (much like some character controllers Unity games use) would be great.

EDIT: after messing around with this feature it’s definitely what I was hoping for and more! It’s great to see this added : D