[Activated!] Sleeping Part Behavior Improvements

This is another massive yet very important change in Roblox.

Honestly 2019 has been great for this, and 2020 is looking even better.

I’m glad this was updated; physics sleep problems have been a problem for a very long time, and this is a great change on that.

Thank you.

24 Likes

Yea pretty much. We take “force imbalance” into account better. So if a part’s instantaneous velocity is 0, but there is still a unbalanced force applied to the part, it should stay awake.

23 Likes

This is an great improvement for Roblox, I hope there is going to be less unexcpected flungs now, which were in old version of Roblox very common. From the images I like the idea that blocks now automatically move once pulled.

5 Likes

Are there any expected performance gains or implications?

10 Likes

Nani?!?! Thanks for making this! I can finally create a physics game!

11 Likes

This is pretty ground breaking, because this allows for physics-based games to be more reliant on said physics. We’ve had a slew of issues with sleeping parts. One that comes to mind is this one about a hockey puck:

cc @Bananacb
cc @C_Sharper - Pretty sure you had a issue with sleeping parts in regards to bowling too.

13 Likes

Oh heck yeah! This update is amazing. Thank you!

Do you expect to deliver future updates in terms of physics ownership being transferred properly too? For example, when a physics owner part runs into another one, I hope ownership transfers accordingly.

14 Likes

Does this fix parts not being woken up by BodyForce/VectorForce in cases where very little force is being exerted? Tested newtonian space flight a while back and ran into issues with RCS thrusters not being able to move the ship around if it was sitting idle because they didn’t exert much force.

9 Likes

I personally would love it if the API was released. Theres many parts I would prefer to be constantly asleep without having to anchor it. Would make my life a lot easier haha.

15 Likes

Looks quite smooth and realistic, what a[color=cyan] cool[/color] update to the Physics Engine!

Thanks for especially changing to Non Zero Gravity! Would really change my life.

9 Likes

I like it, I gonna try it. ._.

4 Likes

Parts should stay awake with lower accelerations or forces than before.
However, it is still finite. We can’t support infinitesimally small forces/velocities.

You should try your space flight with the change enabled and see if it works! Otherwise, maybe scaling things up a bit could help?

7 Likes

Could you elaborate? Why do you want to keep something asleep rather than keep it anchored?

7 Likes

Let’s say these edge cases don’t occur in my games and this feature is still on. Will it have an impact on performance?

5 Likes

This sounds like a great change, I’ve definitely come across sleeping parts before without even knowing this was intentional.

Is there any chance that this issue was due to the part sleeping as a result of it moving at such a low angular velocity? And if so, would this be fixed too? I’m not on my computer to test, but maybe this is a completely unrelated issue anyway.
EDIT: This issue doesn’t seeem to be fixed by this change, at least not in the beta. Perhaps the part isn’t sleeping, and it’s another issue? I don’t know, and I’m not sure how I could find out if it’s sleeping.

Either way, this is a great change for physics based games!

The issue I’m referring to in this post is this:


As you can see, when the angular velocity is set to values below ~0.3, it appears that the part ends up sleeping after moving a small amount. This issue is the same regardless of friction, as I have tested it with the part suspended in the air. This issue seems to be present for both new and legacy body movers, no matter what constraint is used.

15 Likes

Awesome! How can we go about enabling this??

3 Likes

As with all beta features, you can enable it in File > Beta Features, as shown here:
image
image

9 Likes

I’m excited to test it!

I had to hackishly disable sleeping parts entirely for a large part of one game. I had a game where you could punch objects for points and they would scatter outward. Problem was they would go to sleep as soon as they slightly got too far away from the character. I solved it by detaching the parts from the server when replicating them (placing the maps into the Backpack and having the client clone them).
In the end this ended up working in my favor (players could not steal points from other players by breaking all objects in the game and I could choose what maps to replicate). But I would of loved to have the choice!

3 Likes

Is there a documentation that lists the specific criteria for what caused a part to fall asleep and wake up? Also will we ever be getting an API to set parts to sleeping or awake (or disable sleeping entirely?) instead of just anchoring them? (I am not aware of any API so of there already is one I’m unaware)

9 Likes

Wow this is truly amazing. I don’t have much use for it but plenty of users will. Thank you.

3 Likes