What happens if you don't use "delta" when calculating things like movement?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By Zero
:warning: Old Version Published before Godot 3 was released.

I see on some examples and demos (like the Kinematic Character one) that delta is used when calculating movement and such. But in another one (the Platformer demo), delta is not used (or at least I didn’t find it).

What is delta used for? I’ve made my characters move without using delta in the calculations, is that a bad thing? Is it always necessary?

:bust_in_silhouette: Reply From: rredesigns

Delta is the amount of time elapsed from the last frame draw to the present. Since fps go up and down constantly (unless you have a monster PC), using it allows to keep the exectuion in sync with the video.

Not using delta in a big game, could cause the same strange behavior in several parts of the game that you can see when your internet lags in an online game. That is, your fps could drop to about 5fps, but calculations are still going on at the same speed, and you suddenly see characters teleporting, or you die before even having time to react.

So briefly, delta is used to slow down the code execution to match the screen update rate. Use it always. :smiley:

I see, I’ll use it now! Thank you very much!

Zero | 2016-08-06 01:34

Example usage of delta: https://kidscancode.org/godot_recipes/basics/understanding_delta/

aggregate1166877 | 2020-06-29 13:47

:bust_in_silhouette: Reply From: vinod

I can simplify the explanation with an example.
Suppose an enemy is coming at us with a speed of 10, means it moves 10 pixels per second. If he hit the hero, it is game over.

Condition 1 without delta:

  • If a user has the same fps as ours, he will play as we want.
  • If a user has half fps, the enemy speed will be half of the original speed.
  • If a user has a super computer and double fps, he may not be able to play the game because the enemy will reach him at once.

Condition 2 with delta:
The speed is multiplied by delta.

  • If a user has the same fps as ours, let’s say 60, the delta will be 1/fps = 1/60 =0.016
    His speed will be 10x0.016 = 0.16 per second
  • If the user has half fps, that is 30, the delta will be 10x1/30 = 0.33 per two seconds. Because his fps is half the speed appears exactly as for the 60fps guy.
  • If the user has double fps, that is 120, the delta will be 10x1/120 = 0.08 per half second.
    Because his fps is double, he will update quicker than the 60fps guy the speed appears exactly as the 60fps guy.

So whatever the fps, the game entity speed will be the same.

how it can be
10 x 1/30 = 0.33 per two seconds
and
10 x 1/120 = 0.08 per half seconds

why not
10 x 1/30 = 0.33 per seconds
and
10 x1/120 = 0.08 per seconds

looks like its something simple but there’s still a little im not understand

ruruarchy | 2018-11-20 02:47