RunService.PostSimulation always reports a delta time of 1/60 for plugins when not playing the game, regardless of how high or low they are

I use Hoarcekat to make all of my games UI. That is to say, I write it all in code, and I’m looking at Hoarcekat in real time to preview how it all functions. Hoarcekat is a plugin that runs without you ever having to play solo.

Recently, though I’m not sure how recently, PostSimulation started to give delta times of 1/60, no matter what.

At 144 FPS (through framerate unlocker):

At 30 FPS:

At 60 FPS:

As you can see, the output gives 1/60 no matter what. If I change PostSimulation to PreRender, it gives me the correct delta time.

However, I do not need to make any changes once I actually play the game. In game, it works as expected.

Expected behavior

Delta time should be the time in between ticks.

2 Likes

That’s because rendering is active regardless of if you’re playing or not as you know, but simulation probably isn’t. Physics doesn’t run in edit mode.

If I’m not misunderstanding, that code runs when the game isn’t right? Then there’s no actual simulation going on iirc, and I assume it can’t just be zero cause that’d be breaking, but with no simulation there’d be no delta time.

If all that’s right then maybe it’s specifically 1/60 by default because that’s what the event tries to run at normally?
That’d be way less intuitive than the event just not firing.

A theory!

I think delta time being wrong is more unintuitive than it not running at all. If there’s no simulation, then don’t imply to me there is. If you’re going to, use the actual delta time.

But when it isn’t running there isn’t any delta time because there isn’t a tick! Then it’s more unintuitive to fire an event that should run after each of those ticks, if they don’t actually exist, no?

Edit: Both it being wrong and firing in this fashion is unintuitive either way right? Doesn’t make a lot of sense in any case.

Thanks for the report! We’ll follow up when we have an update for you.