Slow down or speed up part physics for slow-motion and time-control effects

It would help if it could be adjusted per WorldModel, and WorldModels gained the ability to run physics simulation.
And/or WorldModels could have a :StepPhysics method on them, which would inherently allow for time scaling using the delta time input.

Regardless, time scaling at any level would be super useful and helpful, it’d be important to allow timescale to be 0 though, to allow simple & efficient physics pausing.

1 Like

I think the best approach is to use other Engines as a reference

I don’t know exactly how they do it I just know how and what I would use it for

I would like to be able to make the game speed faster or slower so say GameSpeed = 2 everything in the game will speed up 2x, this is useful for Tower Defense games, and testing

Essentially the engine runs 2x faster than normal or more depending on the value set

1 Like

Even if it is place wide, this could open up all kinds of possibilities! One request I have is to allow the client to slow its physics separate from the server, this of course would only apply to objects that are network owned by that client. This could be very useful for many things, I have a game that’s mostly client based, where users exist in worlds separate from each other, the entire game is mostly client sided and users can simply see each other if they are in the same world. Having this option would make it fun to use in that game where i could slow time for events and whatnot. But outside of my exact use case I could see this being very useful for a few use cases that local (non place wide) physics time control. You could simply give network ownership to a client with a set physics speed to achieve all kinds of cool things!

1 Like

Roblox has a system which slows down the physics calculation when there is too many parts to calculate so this is for sure possible to just add it as a feature we can change, it would also be nice if we could make the engine prioritize the calculation speed rather than perfomence (if possible obviously)

Currently, for my use cases, it would be great to have “TimeScale” as either a property of a WorldModel or RunService, so I can easily speed up/slow down time.
I also like the ideas of Slow down or speed up part physics for slow-motion and time-control effects - #21 by drewbluewasabi

I’d personally rather both to be possible.

First off, a place wide option definitely, which would perhaps multiply the delta time passed on by RunService events, or would at least affect all physics-related Instances when physics are calculated.
Changing delta time may or may not be beneficial, however it can always be modified to match the time scale by the developer whenever they use it.
This would already allow for tons of slow-motion effects to spice up the gameplay, or in some cases, like with SuperHot-like games, would be almost essential to the experience. For example, slow-mo cams on kills, winning a game, and in cutscenes.

Secondly, it’d be very useful in some cases if this could be applied to individual WorldModels and Assemblies. Tho if this is also added, changing the delta time passed on by RunService events becomes apparently unintuitive, so at that point it’d most likely, if required, have to be calculated by the developer.
This would give far more flexibility to the system, since it wouldn’t be either everything slow-mo or nothing slow-mo, but rather more specific objects for a plethora of visual (and even audial) effects. And not only effects, but even gameplay mechanics could emerge from this.

1 Like

i THINK the demand for this feature has been much higher. chop chop roblox staff

They’ve had so long to implement this feature, they’re just lazy at this point.

agreed after that one incident abt schlep :sob:

It’d be awesome either way!

Also just to make it clear, this should preferably be a true universal time speed setting, which even slows down particles, trails, delta-time, and even the task scheduler if possible.

But it’s nothing new in game development — in fact, it’s quite essential, and most game engines have such a feature nowadays. That’s exactly why you need to implement this in your engine.

1 Like

Absolutely want this.
I think ideally, this should be local to each machine.

Like, slowing down the physics simulation will only slow it down for server-simulated parts.

Slowing physics on the client will only slow down the physics for that specific client and all parts owned by that client.

That way, no conflicts should occur, it’s a non-replicated thing.
Though if a player at normal speed interacts with an object moving at half speed, the force should probably also be halved to prevent unstable / glitchy physics.

But I would sooo make use of it.
Could be used for slow-motion cutscenes and dramatic stuff.
And there’s of course also the niche genre of singleplayer-oriented games or games where most things are client-sided.

Quite frankly, I do absolutely not want to code a physics engine from scratch in Luau that performs way worse, is more complicated or lacks features just for a slow-motion effect.

Also, think of things like time-stop, stopping time when landing a hit on a enemy for 0.1 seconds?
Adds an insane amount of impact to heavy attacks or parries.

Alright lil bro, where’s this feature already? It’s been months.

“reconsider” doesn’t mean “start working on”. There might be higher-priority features that various teams are busy with, like Server Authority.