Boucle de jeu principale de Java

Je suis en train d'écrire une boucle de jeu, j'ai trouvé le code dans l'exemple ci-dessous ici. J'ai aussi regardé d'autres manières de faire une boucle de jeu, comme de cet article. Je ne pouvais pas obtenir un de ceux ceux qui travaillent bien. J'ai donc continué avec celui du premier lien.

Ce que je voudrais savoir:

  • Est la façon dont j'ai écrit ma boucle de jeu une bonne façon de le faire?
    • Des suggestions?
  • Dois-je utiliser Thread.sleep(); dans ma boucle de jeu?

Voici mon code actuel:

public void run(){
    long lastLoopTime = System.nanoTime();
    final int TARGET_FPS = 60;
    final long OPTIMAL_TIME = 1000000000 / TARGET_FPS;
    long lastFpsTime = 0;
    while(true){
        long now = System.nanoTime();
        long updateLength = now - lastLoopTime;
        lastLoopTime = now;
        double delta = updateLength / ((double)OPTIMAL_TIME);

        lastFpsTime += updateLength;
        if(lastFpsTime >= 1000000000){
            lastFpsTime = 0;
        }

        this.updateGame(delta);

        this.repaint();

        try{
            Room.gameTime = (lastLoopTime - System.nanoTime() + OPTIMAL_TIME) / 1000000;
            System.out.println(Room.gameTime);
            Thread.sleep(Room.gameTime);
        }catch(Exception e){
        }
    }

source d'informationauteur Get Off My Lawn