Releasing Character Physics Controllers

It’s sad to see this is quite unusable at this moment in time, and I think roblox jumped the gun a bit when taking this out of beta preview.

I also think roblox should’ve provided a better “how to” guide when pushing this into public release as half of these questions are just developers not knowing how to use this product.

Theoretically, it’s a very good idea to give developers full control over how characters/objects percieve different forces in the 3D world space, but I feel it’s been implemented in a “chonky” way and it sort of feels rushed.

I definitely cannot wait until roblox provides full documentation on this and releases the other controllers and improvements as planned, but for now, I will not be using this.

2 Likes

Figure out anything concerning your post?

I’m still cooked with my post above yours. Staff reached out to me about it and we had back and forth dialogue for a couple weeks. But they have since stopped responding about it, and I’m going to assume they’re busy.

But it is a little frustrating because I switched my whole Character System to be built around the Controller. And it’s too late to turn back. But the motor issues are really gonna hold back my game’s visuals and features.

2 Likes

Nope. Have you experienced the bug I described?

I haven’t tried replicating it since then; I simply just run code every frame that detects if the ActiveController is inactive and rebuild the character if so (by disabling the Motor6Ds for a frame and then re-enabling them). This makes the bug a little more rare, but it still doesn’t fix all cases. I use an AirController and a GroundController, and IIRC sometimes both controllers become active at the same time or something like that, but I only check if the ActiveController controller is inactive, so the above method I described doesn’t do anything in that scenario.

As I mentioned in my original post though, it was hard to repro the issue so I understand why the staff might not have looked into or communicated about it too much. The project I’m working on is a game where ragdolling should be somewhat common, so I have just decided to ignore the issue for now because if the player gets ragdolled after getting bugged it should fix itself.

I have also built my game around these new controllers, and it would be a shame if I had to go back to humanoids after everything if I experience any more issues.

2 Likes

Has there been a silent update? I’m noticing that my game’s sliding mechanic has been made useless all of a sudden (Players don’t seem to be gaining any extra temporary momentum when sliding down hills) and I am also noticing a subtle bounce on terrain whenever I walk on it.

2 Likes

@OVERKILLCREATIONS
Apologies for the GroundController sliding/instabilities over the last day or so, they should be resolved now


Otherwise yes we are still trying to understand and fix the issues related to Motor6Ds, don’t have any updates to share right now

6 Likes

i’m not sure if this is related, but I’m having issues where moving up against a ramp or slope on the ground has been making my character fling very far and spin out of control when using the controller manager, can this issue be fixed?

3 Likes

Can you still reproduce this? This is what should have just been fixed earlier today.

If this is still happening, please post a bug report, thanks.

I just got an issue today with Disabling and Enabling them. I hadn’t been Disabling or Enabling Motor6Ds. But I had to for a ViewModel system. And when I disabled and enabled in combination with an Animation, my character flung, every time.

yes it still happens, seems to be something related to character tilting, although rigidity enabled is turned on to prevent the character from tilting.

Some character’s jump higher than others?

I’m not sure what’s causing this, but my avatar jumps lower than my friends avatar which jumps higher, despite the same vector3.

At first I thought this was caused by hats, but it’s not.

My avatar: ChargedCoil
My friend’s avatar: Galax_iez

1 Like

This is with using the provided scripts in this post?
If so, this is expected. The jump behavior is implemented with ApplyImpulse. So the resulting velocity will vary depending on mass.

If you want something that’s consistent respective of mass, you’ll want to apply a impulse that equals desiredAccel * ControllerManager.RootPart.AssemblyMass

2 Likes

Is the amount of Jump force (0, 500, 0) in the example scripts comparable to stock Humanoids? When we moved over to the new character controllers, jumping itself seems similar, but when applying the equal and opposite force on our boats, for example, the result is insane (and causes them to fly away)

Can we get a property for the sensed part’s material? We have to do perform a raycast to figure out what Material the character is standing on, if they’re standing on Terrain.

2 Likes

The raycasts aren’t expensive so you’re fine just getting the material yourself using the raycast

Sure, but it’s double work for no reason. The character controllers themselves are already performing the raycasts to determine the sensed part. They may as well pass that information along to us!

That’s more work for the APi; for example, for Humanoids they have to do more work when you request the FloorMaterial

That does not make logical sense. The physics controllers are raycasting. Assuming similar internal implementations of raycasting, they get a material out of this. They can then pass this along to us in a property.

I don’t think it would be worth the engineering time and QA to add a property that could be replaced with 1-5 lines of code… but if you really want it the formal way to request it is posting in #feature-requests:engine-features

What’s up with BuoyancySensor?

I’ve noticed that the character controller is still simulating something even though ActiveController is set to nil.

My game has boats. When another player sits in a boat that someone is driving, it completely prevents the driver from moving the boat-even after making all characters massless, non-collidable, etc. (I turn the boat with an AngularVelocity)

The only fix I’ve found for this is to set RootPart to nil for players sitting in the boat on the server (it doesn’t replicate)