Независимость Δt движков от FPS

Описание

Сделал две движки разных скоростей и точности. Вот основная их рабочая часть:

1.

let previous = 0;
const callback = (current) => {
    const difference = current - previous;
    if (this.launched) {
        this.#FPS = (1000 / difference);
        this.dispatchEvent(new Event(`update`));
    }
    previous = current;
    requestAnimationFrame(callback);
};
requestAnimationFrame(callback);
let previous = performance.now();
const callback = (current) => {
    const difference = current - previous;
    if (this.launched) {
        this.#FPS = (1000 / difference);
        this.dispatchEvent(new Event(`update`));
    }
    previous = current;
    setTimeout(callback, this.#gap, performance.now());
};
setTimeout(callback, this.#gap, performance.now());

Они отлично работают, но основная проблема у обоих то, что Δt (разница времени между кадров) рассчитывается от FPS (количество кадров в секунду). А если программа лагает, то и FPS падает, соответственно и Δt прыгает вверх.
И вся физика, которая считается от Δt, начинает демонстрировать невероятное шоу.

Вопрос

Возможно ли создать движок, рассчитывающий разницу времени статически, даже при лагах?
Если да, то как?


Ответы (0 шт):