I think the author made a tiny error:
while( GetTickCount() > next_game_tick && loops < MAX_FRAMESKIP)
while( GetTickCount() < next_game_tick && loops < MAX_FRAMESKIP)
That is: as long as it is not yet time to draw our next frame and while we have not skipped as much frames as MAX_FRAMESKIP we should wait.
I also don't understand why he updates
next_game_tick in the loop and I assume it is another error. Since at the start of a frame you can determine when the next frame should be (when using a fixed frame rate). The
next game tick does not depend on how much time we have left over after updating and rendering.
The author also makes another common error
with whatever is left render the game as many times as possible.
This means rendering the same frame multiple times. The author is even aware of that:
The game will be updated at a steady 50 times per second, and rendering is done as fast as possible. Remark that when rendering is done more than 50 times per second, some subsequent frames will be the same, so actual visual frames will be displayed at a maximum of 50 frames per second.
This only causes the GPU to do unnecessary work and if rendering takes longer than expected it could cause you to start working on your next frame later than intended so it is better to yield to the OS and wait.