While working on roblox I’ve noticed for a while that the “dt” values for Heartbeat, Stepped and RenderStepped, have unexpectedly high amounts of variability.
A smooth dt is very important for providing a good user experience, but it seems the timing of runtime services has some problems right now.
It makes things feel unusually gritty, even on very powerful hardware that could otherwise run at thousands of fps.
My monitor does not have vsync turned on, and is also at 60hz.
You can reproduce this by simply connecting to these runservice events and then printing the value of dt.
When running at 60fps I would expect the value of dt of all three systems to sit pretty firmly on 1/60, or 0.016666.
The value of dt fluctuate pretty wildly, for no good reason, and not even the same way between the different services. I took some gifs below to illustrate the issue.
Orange, RenderStepped (flux of about +/-3ms)
Yellow, Stepped (The best, but with occasional flux of +4ms followed by an immediate -4ms)
Green, Heartbeat (The worst, flux of +/-5ms!)
Issue Area: Engine
Issue Type: Performance
Impact: Very High (At least I consider it very high, smooth gameplay is important to me!)