obtenha uma animação suave para um jogo de tela

Como obter uma animação melhor, dinamicamente, mesmo quando o navegador está ocupado ou ocioso, para diferentes dispositivos com capacidade de hardware diferente.

Eu tentei de várias maneiras e ainda não consigo encontrar o caminho certo para fazer o jogo exibir uma animação melhor.

Isto é o que eu tentei:

var now;
var then = Date.now();
var delta;

window.gamedraw = function(){

   now = Date.now();
   delta = now - then;

   if(delta > 18){
        then = now - (delta % 18);
        game_update();
   }

}

window.gameloop = setInterval(window.gamedraw,1);

18 é o valor do intervalo para atualizar o jogo, mas quando o navegador está ocupado, esse intervalo não é bom e precisa diminuir. Como obter uma animação melhor dinamicamente, mesmo quando o navegador está ocioso ou ocupado?

Suponho que o valor do intervalo seja o problema, porque se o intervalo for menor, a animação do jogo é muito rápida, se esse valor for 18, a animação do jogo será boa, mas não quando o navegador estiver ocupado, e não tenho ideia de como alterá-lo dinamicamente .

questionAnswers(3)

yourAnswerToTheQuestion