Slow Motion

I was wondering if its possible to do a slow mo effect in the game engine, and if so, how would you do it? I was thinking about an effect like in Beyond: Two Souls. Like when a fight action occurs(ex. a punch), the game slows down and you press a button then goes back to real time. Please explain to me very thoroughly if you can, for i am not much of a coder.

Yeah, like to know that too…

There is an option in the world tab that is labeled “Physics” and has mulitple options. Change the Framerate to 120 and make the substeps 5.

Then if you change the logic steps option(under the physics tab in the world options) to 1 all the physics go in slow motion. I’m not sure if this works with animation, but it works for physics based games… Hope this helps.

Just tried it but it doesn’t work (yes, I set it to blender game)
Also, how would you change it, should it work, on-the-fly mid-game?

That would require coding. Which I know little about. It might be possible through logic bricks. But that too would require some coding, just not as much as a straight python file.

you would have to bind a key to change the physics value and then change it back when you pressed the key again.

You can’t slow down the physics in a way that it still calculates fluent paths. But you can suspend a scene, to get a slower appearance. The negative side effect is, that animation goes “jumpy”.

Right, so no real slowmo… thats a pity…

Monster, what do you mean by “jumpy”?

No animation blending.

If you’re planning to use slow-motion in your game, you need to start making the game compatible with slow motion from the very beginning.

I believe the most recent version of Blender allows you set decimal frame increments with the playAction method in KX_GameObject. Instead of adding 1 frame every tic to an animation, you can add 0.5 of a frame every tic. Neat huh?

I would first have a global speed multiplier. An easy to use number is 1. Just multiply all your rotation, velocity and frames by this global variable. When you want to slow down, you just change this number to something between 0 and 1. At 0.5 everything would go at half speed, at 0 nothing would move, at 2 everything would move at double speed.

So yes, slow motion is more than possible. There’s no need to fake it.

Simple enough?

Uh… you lost me at the KX (ok being stupid XD )
Right, so not with logic bricks.

bwt… I didn’t steal this thread did I? o_o

I just realized that there are plenty of slow mo results for bge coming up when google searching. Check this one out:

I make a example of slow motion using the “TicRate” i dont know if this method work with animations.

SlowMotion.blend (460 KB)

W, S: for change the variable “tic_rate”:
-high value: slow physics
-low value: fast physics.

R: Reset the value of tic_rate.

physics for some reason does not work with a value less than 60.

Sorry english.

EDIT: I was forgot this :smiley:

Space: add a cube

I think that would also be a viable method, but the one I’m offering gives you more control over the things you want to go in slow motion.

Well, logic are very limited in terms of flexibility. I suggest you go into python if you want a clean solution.

KX_GameObject is the object with the playAction method btw.

I could make an example of what I mean if you’d like, though it’ll be very basic (it’s just to show the concept).

I wouldn’t change tic rate. Things can get choppy very fast. Skipping frames is fake slow-motion.

need to find a value that matches the game, example: have the ticrate in 60(chage the 60 for a one that matches your game), when the slowmotion is active, the ticrate increases, later when complete the slow motion changed again to 60, I have not tried much the method, but from what I’ve seen you may be able to operate, sorry english.

Unfortunately, I didn’t know there was a difference between float number and float. Are float numbers still integers? I can’t have a decimal speed for my animation. That’s weird…

What do you mean? You should be able to set decimals / fractions for the animation playback speed. And what do you mean “difference between float number and float”?

Ahaha, turned out just to be a minor mistake in my parameters… Whoops. Well now my “slow motion” .blend works fine. Too bad you can’t change speed while the animation is playing.

you can

use a property to manage the action? change the rate of advancement of a property?

TimeSlow boolean operand

True-------------and---------------property anim Add .1
False-------------and---------------property anim Add 1

So slow plays an action at 1/10ths speed.

you would have to have all animations controlled by properties, and have the rate changeable in all of them :smiley:

(this could be a neat gameplay mechanic in a weapon! shoot enemies and put them slower with each shot?)

Some of the setup is to not allow toggle toggle toggle in so close together that it’s hard to set,

So I added “TimeKeeper” that only allows the space bar to work every 10 frames,


slowtime.blend (436 KB)

also changing speed and gravity of physics animated objects?

If I apply Linvelocity 4 on X and 4 on Z, with Full gravity to jump,

Will applying linV of 2 X and 4 on Z, with half gravity, produce the same arc?