Quick answer: Advance the day/time clock from the same fixed simulated-time the rest of the sim uses, so a game-day always represents the same amount of simulated time at any speed.
If a day flies by at 3x but crawls at 1x in game-time terms, your clock is counting frames instead of simulated time. The day should be a fixed amount of sim-time regardless of speed. Drive it off the fixed tick. Here is how.
How to fix it
1. Advance the clock by sim-time
Increment the time-of-day by the simulated minutes each fixed tick represents, not by a per-frame delta, so a game-day spans the same simulated time at every speed.
2. Let speed change ticks per second only
Higher speed should run more fixed ticks per real second, compressing the real-world duration of a day while keeping its in-game length constant.
3. Read one clock everywhere
Have schedules, the sun, and timers all read this single sim-time clock, so the day cycle stays consistent across systems and speeds rather than each tracking its own counter.
Catching the ones you can't reproduce
The hardest version of this to fix is the one you can't reproduce — it only happens on a player's hardware, OS, driver, or save state, under conditions that simply aren't present on your machine. A report that says “it crashed” or “it froze” gives you nothing to act on, so the bug survives release after release while quietly costing you players.
Automatic error capture closes that gap. Each failure arrives with its full stack trace, the device and OS, the build number, and a breadcrumb trail of what the player did right before it broke, so even a failure you have never seen becomes a specific, reproducible issue. Fold identical failures into one signature ranked by how many players each hits, and your worklist sorts itself worst-first instead of arriving as a stream of vague complaints.
This is where a tool like Bugnet earns its place. Its SDK captures every error automatically with the full stack trace plus device, OS, memory, build, and game-state context, folds duplicates into one grouped issue with an occurrence count, and ties each to the build it first appeared on — so you fix the problem that hurts the most players first and confirm it is gone when its signature disappears from the next release.
The errors you never hear about are the ones quietly costing you players. Visibility turns them into a worklist.