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.
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!
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)
I’ve been hoping this type of improvement would come, thank you guys for the awesome update! This will greatly improve many physics-related things in my projects!
I’m with Suggyiem here, I don’t have a specific use case but having that extra feedom is always beneficial, like how in Unreal we can choose between Static → Stationary–> Movable.
It may not be prevelant now but having that customization straight to the developer for whatever cases do come up in the future is great; It’s quite difficult coming up with use cases when we simply can’t get our hands on it and experiment but I will say I have found this option amazingly useful in unreal and i’m sure will do here to, if it’s released.
Not to sound rude or anything but… FINALLY! as a developer that has created many physics based objects, and being a railroad developer, i have been complaining and waiting for this update for… idk how many years now! Thank you so much for finding a fix to this problem! i have a constraint powered engine that will finally be able to operate in game rather then sometimes in studio. While driving cars, in what ever reason, if loose parts fell into the road and you hit them at around 30+ mph, you will come to a dead stop like it was anchored when you hit a part, but you could get out and push the part around… this annoyed me to no end, i’m so happy it soon will come to a end, maybe i could finally do live loads in my rail cars, or use a turn table without the need of welding the engine to the table, this update can bring so many possibility and freedom!
Im under the assumption that asleep but non anchored parts still can be moved around on the client (if client has ownership) around. As for when I have an anchored client part, the parts dont really show movement across the server while anchored.
However if a part can be asleep on the server, and a client has ownership of it and moves it around with its own mini physics, I feel as though that would lag less as roblox’s physics are no longer being applied to it while still having it move around on the server if the client moves it.
I hope this explains it well. If not ill elaborate better.
I’m so glad to see the physics engine become more reliable, especially with how Roblox’s gravity works with its physics which definitely has lots, and lots of bugs that have been seen since 2006, and are still being improved upon and solved to this day. Imagine the puzzles that can be made through more reliable physics.
Anyways, thank you for this. You guys never fail to give us something good to look forward to
long time ago. i made a car and a trailer using physics constraints but the car wasn’t able to pull the trailer at any chance. would this update fix it?! back then i didn’t think about the trailer parts was sleeping
The behavior of an anchored part and an asleep part are essentially the same.
If a client has ownership of a non-anchored part and moves it, the part is awake and simulated on the client. The positions are replicated to the server and other clients automatically, so they see position updates.
You can’t have something owned and simulating while also being asleep. Just like how you can’t assign ownership to anchored parts.
I am working on a physics-based game and I have been dealing with this issue a lot (especially since I am working with NetworkOwnership). Hopefully, this is going to help me.
I tested this feature but… I don’t see any effect. Parts wake up and fall asleep just like before, and the van full of unwelded boxes is still very slow. But this might fix the issue with the van in my game, when one of the wheels will fall asleep and you can’t drive it.
Also, this is the only beta feature that has a dot in the end of it’s name. Just a little typo that I find funny:
Alright then that is fine. I do still believe there could be many uses to a part remaining asleep.
For example, in 1 - Player games. However thank you for clearing that up to me.