Quick answer: Pygame Clock.tick(60) producing irregular frame times on 144Hz Windows monitors? Windows timer resolution too coarse - call timeBeginPeriod(1) at startup or accept the jitter.

Game caps at 60fps; frame times oscillate between 13ms and 20ms on a 144Hz display.

Raise timer resolution

import ctypes
ctypes.windll.winmm.timeBeginPeriod(1)

Forces 1ms timer resolution. Clock.tick precision improves dramatically.

Or use tick_busy_loop

Spin-waits for precise timing. Eats one CPU core; precise timing.

Match monitor rate

If running on 144Hz, target 144 fps. The monitor's vblank aligns naturally.

“Windows timer resolution is a system-wide setting. Most code accepts the default.”

Pair timeBeginPeriod with timeEndPeriod on shutdown. Leaving 1ms resolution active globally slows other applications.

Related reading