HTML5 de Toile de boucle de jeu delta calculs de temps

Je suis nouveau sur le développement de jeux. Actuellement, je suis en train de faire un jeu pour js13kgames concours, de sorte que le jeu doit être petit et c'est pourquoi je n'utilise pas de moderne populaire cadres.

Tout en développant mon jeu infini de la boucle j'ai trouvé plusieurs articles et conseils pour la mettre en œuvre. Maintenant, il ressemble à ceci:

self.gameLoop = function () {
        self.dt = 0;

        var now;
        var lastTime = timestamp();
        var fpsmeter = new FPSMeter({decimals: 0, graph: true, theme: 'dark', left: '5px'});

        function frame () {
            fpsmeter.tickStart();
            now = window.performance.now();

            //first variant - delta is increasing..
            self.dt = self.dt + Math.min(1, (now-lastTime)/1000);

            //second variant - delta is stable.. 
            self.dt = (now - lastTime)/16;
            self.dt = (self.dt > 10) ? 10 : self.dt;

            self.clearRect();

            self.createWeapons();
            self.createTargets();

            self.update('weapons');
            self.render('weapons');

            self.update('targets');
            self.render('targets');

            self.ticks++;

            lastTime = now;
            fpsmeter.tick();
            requestAnimationFrame(frame);
        }

        requestAnimationFrame(frame);
};

Donc, le problème est dans self.dt j'ai finalement découvert que la première variante n'est pas adapté à mon jeu, car il augmente toujours et la vitesse d'armes est en augmentation avec elle (par ex. this.position.x += (Math.cos(this.angle) * this.speed) * self.dt;..

Deuxième variante semble plus approprié, mais correspond-il à ce genre de boucle (http://codeincomplete.com/posts/2013/12/4/javascript_game_foundations_the_game_loop/)?

OriginalL'auteur Kosmetika | 2014-09-01