New Humanoid Physics Controller - Beta

Some random weird flaws from memory:
Objects are too slippery and sometimes you randomly start sliding or losing control when on unanchored objects.
External forces cause you to be flung.
I’ve experienced someone when jumping out of a seat in a plane, I get sent to the Null zone except, the last stage of the null zone where Roblox gives up and your screen flashes black and sky.
Walking in circles with a tool causes you to trip or wobble.
I’m able to climb upside-down on some unanchored surfaces.
Climbing on non-truss parts is finicky and you spam between a state of climbing and not-climbing.
The air momentum doesn’t work on parts that are rotating as opposed to regularly moving, this one is minor.
You can simply start sliding off moving objects which the old Humanoid did not do. Also, the character sometimes randomly jumps.
Jumping off a moving part that is relatively loose can cause that part to have extreme amounts of velocity applied downward to it.
Walking on a stationary but unanchored large structure (mesh) can cause your character to suddenly tilt everywhere.
Getting in seats is 10x harder.
Air momentum can be incorrectly calculated if the part the character was previously on starts to erratically move, causing the character to just fly around as if they were welded to it.
Edit2: I can go up a truss really fast if it’s unanchored and still by holding the spacebar whilst climbing.
EDIT: This was all experienced in one game, but I don’t want to give it out publicly.
I can’t wait for the new Strafing and Humanoid Physics controller to finally come out.

2 Likes

There’s also another bug where the Humanoid can’t jump off the edges of any part, just wanted to point that out.

They must’ve accidently deleted the Coyote Line causing that to happen.

2 Likes

Found a Bug where, on a custom R15-based rig the Controller won’t fire Humanoid .Running when walking, but it would on transitions alike to Jumping and Falling.

This Rig’s .Running event works normally with the Current System, so i must assume it’s something related to the Controller.

1 Like

Running into a wall will fling the character when the HumanoidRootPart’s CFrame is being set constantly:
robloxapp-20221118-2131484.wmv (3.6 MB)

1 Like

Controller Beta Update - v0.3

What a year! We have another set of Controller updates and fixes releasing today that address more of your bugs and feedback.

  • AirController.CancelAirMomenum replaced with AirController.MaintainLinearMomentum and AirController.MaintainAngularMomenum to allow you to separately toggle whether you keep your angular and/or linear momentum when transitioning to this Controller.
  • ControllerManager input properties now replicate from client to server, so the player will maintain control of their character if it becomes owned by the server.
  • Using certain Constraints with the Controllers no longer causes the character to explode. (thanks @MikesDSL)
  • Character no longer maintains their pre-jump ground speed after freefalling and changing direction in the air. (thanks @JoyfulFlowerMary)
  • General stability improvements to the GroundController. Character no longer tips over when running into walls. We encourage you to disable RigidityEnabled again and experiment with balance torques!
  • Other small bug fixes for ControllerManager initialization.

Known Issues

  • There are still issues with GroundController acceleration/deceleration, such as being able to continue accelerating by running back and forth.
  • Certain stair configurations can still be a bit buggy.

Thanks again for feedback and keep it coming! This is the last update of the year, so see you next year!

17 Likes

Could you allow us to disable conserving momentum while not in the air or standing on moving objects as well? meaning that moving objects using physics would act the same as cframed objects when standing ontop of them.

With this developers would be able to create their own code to conserve momentum much easier, since right now if i would like to disable conserving momentum for physics parts, i would need to use “hacky” methods, which would be solved with the ability to disable momentum conservation completely for physics based moving objects.

3 Likes

@kleptonaut

This might be a tall ask but I wanted to get my request in early, or at least put this on the table somewhere – is there any possibility of support for manipulating an UpVector of a Character via the GroundController or the Humanoid Object? Maybe an UpVector property that would let the developer set the Upwards direction of a character thus making it easier to create games where certain gravity needs would call for the character to be oriented in different directions (i.e, walking on the side of a spaceship, walking around a planet in proper oriented space, walking around complex objects Super Mario Gravity-style). Even if this wouldn’t be supported by the game’s internal gravity, having the ability to simply rotate the character safely on the engine via these objects would significantly improve backend development for a project I’m working on.

Support for this on the engine would also mean access to Humanoid states & events that are difficult to access on a Custom Character Controller which these desired effects currently require.

4 Likes

As I usually do with each update, I’ve tested this character controller again and found some more bugs! Ignoring the known bug mentioned in the latest update post, here’s three things I’ve noticed that should probably be corrected:

1 Like

for some reason it reminded me of old games

2 Likes

Thanks again!

The first one is a neat find, I’ll try to look into what’s causing that. Were all Controllers using the default property values for this?

For the second, I think this is just due to your GroundController’s Friction. With a lower friction, you’ll slide more after landing. GroundController.DecellerationTime isn’t taken into account in this situation, but maybe it should to keep things consistent.

And for the third, this is tunable via the AirController’s MoveMaxForce property. A higher force means you have more immediate control over your air movement, try lowering this value.

7 Likes

Not a tall ask at all! Having a customizable UpVector is planned, it’s mentioned in the FAQ on the main post. Customizing states is coming too.

11 Likes

@kleptonaut Hey, i was wondering if that new Humanoid Physics Controller fix Knockback issues, all my combat systems have issues with Knockback, usually take a delay time to player Knockback cause Humanoid issues, hope that new Controller fix my problems.

Hi!

No, I customized them. I moved all of the instances out of ControllerManager (so it generated the default settings) and I can say that now the first glitch doesn’t happen.

However, I’ve found another way to make my character fall down and “become a helicopter”; On my test map, there’s a block attached to a rope. If I move against it to make it start swinging wildly, then I jump onto it while its side is facing upwards, my character tilts sideways strangely, then once she hits the ground, she starts spinning uncontrollably. Here’s a video of the glitch; I’m using default values here:


Since this bug is probably pretty specific, should I try to make a reproduction RBXL file and attach it to a new post?

Maybe. Also, yeah, it should probably be consistent; What I like about PhysicsCharacterController is how consistent the momentum and movement are. I can jump, change directions, and my momentum smoothly transitions between the states. The video I posted here doesn’t show that, but I would like to see the new official character controller have as “slippery and smooth” of movement as it.

I’ll have to try that sometime.

I hope my posts in this topic don’t come off as harsh or anything close to that; I do like that Roblox’s improving the default character movement with proper physics, but ever since I tried PhysicsCharacterController, I’ve started to wonder if the official one will be as smooth and (nearly) glitch-free.

(PhysicsCharacterController has one almost fatal flaw; Any kind of lag bounces the player into the sky. The official one, as far as I know, doesn’t have that bug, so it’s better in that way.)

1 Like

Switching characters to r6 makes your legs noclip through the floor?

5 Likes

Thank you! Should’ve checked that first.

3 Likes

Check the RunningController.GroundOffset property. Depending on how you’re initializing the Controller instances, it may not be automatically set accurately. This property is more or less equivalent to Humanoid.HipHeight.

3 Likes

This is because the default HipHeight for R6 is set to 0. For the standard controller, R6 rigs will automatically adjust the height depending on the size of the legs (if there are any), and HipHeight acts more like an offset to the leg height. For R15 rigs and the new character controller, they behave differently and HipHeight will be 2 in most cases, due to it being the leg height instead of the offset to the leg height.

Simply fix this by setting Humanoid.HipHeight to 2 or RunningController.GroundOffset to 2.

2 Likes

there’s also another bug that’s been lasting since the beta and it’s still not fixed

the coyote line might’ve accidentally been deleted while making the beta

the bug is actually really easy to reproduce, just do that same build in this video:
physics coyote line test - YouTube (not intended advertising)
(you can use the keyboard sounds in the bugged behavior clip for reference)

hope the no-coyote-line bug can be fixed soon! @kleptonaut

5 Likes

when you jump and land while moving it shouldnt take time to re-accelerate imo.
you already have the velocity but it acts like you just started walking again
(presumably this is because running and landed got merged into one controller? so landing applies the same things as restarting a run?)

  • Running and LandedGroundController “RunningController”
3 Likes

I only just tried the new controllers today. One thing I did notice, in the posts, was a request to allow the modification of the ‘float’ and ‘sink’ speed while in water.

This has been an issue with water for a long time, and though everyone says ‘you can fix this with a script’ there is something inconsistent with how the density of parts are calculated, and there is no script that can accurately fix the ‘sink/float’ issue for any given character.

Not to mention the other issues that can arise from changing character densities to try and get a non float, non sink situation.

So, not sure if this is something that could or will be addressed with these new controllers, as its not really a ‘movement’ issue, but rather a ‘density’ issue.

However, if there is a way to allow us to even ‘disable’ the calculation of density in water with these new controllers that would be great! Such as a way to say, I want to move in water the same way I would fly in air, with my density not causing me to float nor sink, but to rather just hover in place (and not hover as in remain a constant height above ground, but to remain in place, not sinking or rising)

Thanks.

2 Likes