Pausing Physics in Studio [Beta]

So what Iā€™d love to be able to do is have some time scale propety like workspace.TimeScale.
A property that can be set both on client and server but is not replicated by default.

A time scale of 1 would be the normal speed at which physics are simulated.

But setting the time scale to 0.5 for instance would simulate physics at half-speed.
It would also affect currently active animation tracks on characters but not scripts.

Thereā€™s a few reasons I absolutely NEED this property.

I have a few projects (some multiplayer, some where you can play solo) where I want to implement things like time-stop or slowing down time when a boss is defeated so you can watch an explosion in slow-motion with debris flying around.

Time-stop can be used to make things like critical hits from weapons feel VERY powerful by pausing all physics, animation tracks and particle effects for a split second.

And being able to slow down time to sayā€¦ x0.1 would be super cool for cut scenes, exploding buildings, etc.

Having ragdoll physics in slow motion or being able to create a game like Superhot on Roblox where time only moves when the player moves would also be absolutely amazing.

Thereā€™s so many ideas that I have in mind that all involve manipulating time and physics stepping speed.
Being able to speed up everything can also have itā€™s own usecases, such as making a fast-paced game more difficult without having to write a ton of code to adjust the movement speed and gravity of all characters in a game.

Edit: also would like to mention that almost every game engine has some kind of time scale or global simulation speed property or something similar to it.

46 Likes

this^^^^

this is exactly the idea i also had, it would be insanely helpful to be able to manipulate time like this

12 Likes

Seems useful, for sure will use in order to figure out issues with physics.

9 Likes

interested to see how adjusting timestepping would work with network ownership and all that; it seems like thereā€™d be issues with latency and desyncs and stuff like that

9 Likes

Weā€™ll follow up on the slow motion capabilities - itā€™s great to see thereā€™s a lot of desire for it!

33 Likes

now let us toggle physics replication per client :fire: :fire: :fire:

15 Likes

love how we can stop time now :blush: thank you!

10 Likes

Now let us: :fire::fire::fire::fire::fire::fire::fire::fire::fire::fire::fire:

  • Control physics and property replication
  • Physical API control and insight
11 Likes

Best Update ever! Now we have to work hard on our game to make it awesome! right guys?

10 Likes

I would like to see a ā€œfast-forwardā€ feature to the physics engine to enable simulations to run faster than real-time, skipping rendering all together. This feature would allow developers to adjust simulation speed up to 10x or more, read and record physics properties of parts at every step, and dynamically apply force changes. Such enhancements would significantly accelerate the training of neural networks by reducing the time required for iterative testing and development.

10 Likes

This could be the time where you could make it so we can do this with scripts

7 Likes

We want slo-mo but how do you think it should be implemented?

  • Add extra delay between physics steps so that the result is always the same whether ran slo-mo or normal speed.
  • Decrease the distance objects are moved each step so that when ran at very low speed the simulation doesnā€™t look choppy.
  • Add a option in studio to decide what method to use.

0 voters

EDIT: Another user pointed out that the 2nd option doesnā€™t account for the acceleration of objects per simulation step.

9 Likes

Wow! Iā€™ve been wondering when something like this would happen, if it even would. Glad to know that just days after it would become a thing. Canā€™t wait to try this out, great job!

9 Likes

This is an awesome feature! Using it will be able to enhance our Roblox Studio experience and help us efficiently build something like ruins for a building.

7 Likes

Thus instead of mainly using, print(ā€œBug Foundā€) or warn(ā€œā€) to find bugs. You can just look at the script.

Does this mean, I can pause everything, then edit a number in a script, unpause everything, it will continue with the change?

7 Likes

Would also be a good feature in production as a proper pausing mechanism on singleplayer games

8 Likes

Built-in decal wrapping please!

7 Likes

Thank you for making pausing like how it used to be a long time ago. It can be super useful, so it is very much appreciated!

9 Likes

i think the closest thing to this you could do is anchor the entire world, and then reset it back to how it was, although not sure how fast it would be as you need to loop through the entire workspace and anchor it, maybe you could use tag service to tag physical objects so you donā€™t waste time looping through static objects like the map and stuff.

8 Likes

couldnā€™t this be done by just dividing the deltaTime used to step physics in the engine by a number we provide?, or is it more complicated than that.

7 Likes