arcade icon indicating copy to clipboard operation
arcade copied to clipboard

Clamp delta time in debugger, or other ways to control delta_time

Open cspotcode opened this issue 3 years ago • 2 comments

There are a few different cases where it might be helpful to clamp or control delta_time.

Debugger

When pausing in the debugger, the next frame's delta_time will be massive. Makes sense, if you pause the debugger for a minute, then the delta is 60s. But engines like Unity clamp delta time for this reason. When you pause and then resume the game in Unity, it will not generate a massive delta_time. Should we add something like that to arcade?

It could be as simple as my_window.set_max_delta_time(1/30) or set_fixed_delta_time or maybe there's something more auto-magic that would allow detecting when the debugger has paused? if sys.gettrace() is not None

AI

I can't speak to this one, but people want to use arcade for AI simulation or visualization. In these cases, I think the simulation and render loop should run in fast-forward, as fast as the CPU can handle. We can update docs to explain how to do this easily. Maybe we explain how to set a fixed delta_time but for arcade to tick as fast as possible, no sleeping.

cspotcode avatar Feb 18 '23 20:02 cspotcode

Maybe the AI section could be a separate issue?

gran4 avatar May 23 '24 22:05 gran4

TL;DR: The root issue is still the same: customizing frame / event loops

@FengchiW Since you mentioned being interested in dealing with #1137, i'm tagging you here.

But engines like Unity clamp delta time for this reason. When you pause and then resume the game in Unity, it will not generate a massive delta_time.

Arcade (and pyglet) having poor delineations between system time and game time contexts have hurt us before. One example is a crash when debugging under PulseAudio (#1900) due to an issue with upstream (https://github.com/pyglet/pyglet/issues/952).

What I know at the moment:

  • @DragonMoffon started on some experimental clock-related work over in arcade/experimental/clock, but it's in a very rough state.
  • There's some capacity for custom event loops in pyglet which I haven't had time to fully investigate yet

pushfoo avatar May 23 '24 23:05 pushfoo