Game Development: How to limit FPS?

Martijn Courteaux picture Martijn Courteaux · Jun 23, 2010 · Viewed 11.1k times · Source

I'm writing a game, and I saw the FPS algorithm doesn't work correctly (when he have to calculate more, he sleeps longer...) So, the question is very simple: how to calculate the sleeptime for having correct FPS?

I know how long it took to update the game one frame in microseconds and of course the FPS I want to reach.

I'm searching crazy for a simple example, but I can't find one....

The code may be in Java, C++ or pseudo....

Answer

aioobe picture aioobe · Jun 23, 2010

The time you should spend on rendering one frame is 1/FPS seconds (if you're aiming for, say 10 FPS, you should spend 1/10 = 0.1 seconds on each frame). So if it took X seconds to render, you should "sleep" for 1/FPS - X seconds.

Translating that to for instance milliseconds, you get

ms_to_sleep = 1000 / FPS - elapsed_ms;

If it, for some reason took more than 1/FPS to render the frame, you'll get a negative sleep time in which case you obviously just skip the sleeping.