Timers and Timelines Framerate Dependence

Timers and Timelines are evaluated once per frame. They deduct tick delta seconds then check if they have finished.

Considering the following test actor.

Frame Times
60 FPS (16.667ms)
80 FPS (12.5ms)
100 FPS (10ms)
120 FPS (8.333ms)

The above test speed is 86ms (0.086).

60 FPS
5 * 16.6667 = 83.3335ms
6 * 16.6667 = 100.0002 (0.1) interval in the log results

80 FPS :: 7 * 12.5 = 87.5 (0.088)
100 FPS :: obvious 0.09
120 FPS :: 11 * 8.333 → 91.663 (0.092)

I think your example is only showing results once per frame because your scene is stable. If you try it in a scenario where you might experience frame drops, I think you’ll find that timelines can run multiple times in a single frame, though Timers are quite different than a timeline and you’re not showing an example of a Timer in your blueprint.

I’ve personally experienced timers triggering multiple times a frame myself, and others have also noted it. They also aren’t asynchronous so if you bog down the system by doing a large loop in another bp for example, you’ll also have them execute at the wrong timing. Just create another BP with a For Loop and set the last index to 99999 and have it execute on begin play with a 0.25 second delay and you’ll see what I mean. Then do the same event on tick and I’m pretty sure the tick event will still execute properly.