This game loop that I have implemented is not constant. I want my program to run at 60 frames per second. Basically I need to make the Thread sleep for 17 milliseconds after each frame, but sometimes it sleeps more that 17 milliseconds, this makes my game jittery. What should I do to make a more efficient game loop?
public class GamePanel extends JPanel implements Runnable {
@Override
public void run() {
currentTime = System.currentTimeMillis();
prevTime = currentTime;
while(true) {
repaint();
upd();
try {
Thread.sleep(17);
} catch(InterruptedException e) {
e.printStackTrace();
}
prevTime = currentTime;
currentTime = System.currentTimeMillis();
delta = currentTime - prevTime;
System.out.println(delta);
}
}
}