Skip to content

Time Effects

Registered shortcuts: freeze_frame, time_scale.

Freeze Frame (GFFFreezeFrame)

Brief global hit-stop. It does not pause a single node.

What it actually does

  1. Pushes 0.0 onto GFFTimeScaleManager → sets Engine.time_scale = 0.
  2. Waits duration on a tween with set_ignore_time_scale(true) so the freeze can end.
  3. Pops the stack and restores the previous time scale.

Anything driven by scaled delta (_process, most gameplay tweens, physics with scaled time) freezes. Editor/showcase chrome that ignores time scale can keep updating.

# Global — target node is ignored for the freeze itself
GameFeelFlow.play("freeze_frame", self, {"duration": 0.08})
# or
GFUtil.freeze(0.08)

Showcase pattern

The Free showcase time shot moves the subject with an independent sine script (GFFShowcaseSineMover), then calls freeze_frame. Freeze only zeros scaled time; it does not own the motion.

Affects the whole game

Prefer short durations (often 30–80 ms for hits). Long freezes stall everything that respects Engine.time_scale.

Freeze Frame

Time Scale (GFFTimeScale)

Temporarily changes Engine.time_scale through the same stack (slow-mo, speed-up), then restores.

GFUtil.slow_motion(1.0, 0.3)
# or
GameFeelFlow.play("time_scale", self, {"duration": 1.0, "time_scale": 0.3})