Лаборатория Delta Time и фиксированного Timestep для игр

Сравните игровые циклы с переменным delta и фиксированным timestep с помощью повторяемых скачков кадров, симуляции движения, догоняющих шагов и видимого расхождения времени.

Создайте ритм кадров

Отрисованные кадры в секунду

Дополнительное время для кадров со скачком

Одинаковый размер шага симуляции

Экспериментальная площадка

Двое часов, один движущийся объект

Столбики показывают hitch, линии отслеживают обе позиции, а нижняя линия выделяет расхождение, которое могут скрыть итоговые значения.

Эксперимент обновлён

Журнал движения

Позиция относительно прошедшего реального времени. Пунктир отмечает одинаковые фиксированные шаги.

Путь переменного deltaПуть фиксированного timestepСкачок кадра

Переменная модель применяет скорость один раз с текущей длительностью кадра. Фиксированная модель накапливает всё реальное время и движется равными шагами. Ни один путь не является измерением производительности.

Значения сохраняются только в этом браузере, чтобы эксперимент был готов при следующем визите. Данные игры и телеметрия никуда не отправляются.

Zoom 100%
Студия утилит

Хотите эту утилиту на своём сайте?

Настройте цвета и тёмную тему для WordPress, Notion или вашего сайта.

Часто задаваемые вопросы

Что показывает лаборатория фиксированного шага?

Она прогоняет один и тот же движущийся объект через цикл с переменным delta time и через аккумулятор с фиксированным timestep. Повторяемые скачки длительности кадра показывают модельное время, расхождение позиций и шаги догоняющего расчёта без запуска игрового движка.

Чем отличаются переменный delta и фиксированный timestep?

Переменная модель делает один шаг на каждый отрисованный кадр и использует его длительность. Фиксированная модель работает равными шагами симуляции, а аккумулятор обрабатывает столько шагов, сколько требует прошедшее реальное время. Фиксированный шаг уменьшает зависимость симуляции от частоты кадров, но длинный кадр может потребовать дополнительной работы.

Что означает ввод скачка кадра?

Он добавляет миллисекунды к каждому выбранному кадру со скачком. Поле частоты задаёт, через сколько кадров появляется скачок, поэтому можно создать повторяемый hitch вместо случайного профиля производительности.

Что меняет ограничение delta?

Ограничение уменьшает delta, которое использует переменная модель, если кадр длиннее выбранного порога. Это может предотвратить слишком большой рывок, но модельное время этих часов отстанет от реального. Фиксированный аккумулятор по-прежнему учитывает всю длительность кадра.

Это профайлер или замена игрового тестирования?

Нет. Это детерминированная лаборатория для обучения и проектирования с заданными числами. Она не измеряет устройство, не диагностирует движок, не моделирует стоимость рендеринга и не доказывает, что один цикл подходит любой игре.

# Поймите часы внутри игрового цикла

Каждый отрисованный кадр передаёт игре новое значение прошедшего времени. В цикле с переменным delta движение часто обновляется так: position += velocity × frameTime. При стабильных кадрах средняя скорость близка к заданной, но одна операция может стать такой же большой, как вызвавший её кадр. Поэтому hitch не просто задерживает изображение: он меняет количество игрового времени, потраченное этой операцией.

# Сравните переменную интеграцию с фиксированным аккумулятором

Цикл с фиксированным timestep добавляет длительность каждого кадра в аккумулятор, а затем многократно расходует выбранный шаг, например 16,667 мс. Симуляция получает одинаковые обновления, а рендер может идти в другом ритме. Оставшаяся дробная часть хранится до следующего кадра. Если кадр длинный, фиксированный цикл выполняет несколько маленьких обновлений, чтобы учесть прошедшее время. Размер шага остаётся стабильным, но возникает всплеск догоняющей работы.
Ситуация Путь переменного delta Путь фиксированного timestep Решение для рассмотрения
Стабильный рендерОдна операция использует обычную длительность кадраРавные шаги расходуют накопленное времяОба пути должны близко следовать одному движению.
Длинный кадрБольшая операция может слишком далеко сдвинуть объектНесколько фиксированных операций догоняют времяСмотрите расхождение вместе с числом шагов.
Другая частота рендераРазмер операции меняется вместе с частотой кадровШаг симуляции остаётся прежнимФиксированные шаги уменьшают зависимость от рендера.
Предел deltaВремя выше предела игнорируетсяАккумулятор получает всю длительность кадраОграничивайте только при приемлемой потере времени.

# Посмотрите на настоящий эффект скачка кадра

При 60 кадрах в секунду обычный кадр длится около 16,667 мс. При дополнительном скачке в 80 мс один кадр длится примерно 96,667 мс. Переменная модель расходует всё это время за одну операцию. Фиксированная модель вместо этого выполняет около шести шагов по 16,667 мс. Общее прошедшее время может совпасть, хотя путь симуляции будет разным.

# Читайте расхождение позиции вместе с догоняющей работой

Разница позиций равна переменному пути минус фиксированный путь. Она показывает, насколько разошлись правила интеграции, но не определяет автоматически правильный вариант. Число догоняющих шагов показывает объём фиксированной работы в одном отрисованном кадре. Большая разница указывает на видимое расхождение движения, а большое число шагов может указывать на проблему бюджета CPU. Это связанные, но разные диагнозы.

# Считайте ограничение delta политикой

Предел может помешать паузе вкладки, breakpoint или тяжёлому hitch отправить персонажа телепортом или протолкнуть физическое тело сквозь геометрию. Цена состоит в том, что переменные часы отстанут от реального времени. Если игре важно сохранить время, используйте фиксированный аккумулятор или другую стратегию восстановления. Если важно ограничить скачок и сохранить отзывчивость, предел может подойти, но потеря времени должна быть осознанной.

# Выбирайте цикл по задаче, которую он защищает

Задача игрового цикла Полезный вариант по умолчанию Причина
Физика, столкновения или детерминированный геймплейФиксированный timestepОдинаковые шаги уменьшают зависимость симуляции от ритма рендера.
Простое визуальное движение без накопления состоянияПеременный deltaОбновление мало и обычно не требует очереди догоняющих шагов.
Симуляция геймплея с плавным рендеромФиксированное обновление с интерполяциейСимуляция сохраняет шаг, а представление скрывает дробный прогресс.
Восстановление после сильной остановкиОграниченная политика догоняющих шаговОдин плохой кадр не должен создавать бесконечную работу.

# Используйте повторяемый процесс настройки

Начните без скачков и убедитесь, что оба пути совпадают. Добавьте повторяемый hitch, затем измените его частоту и проверьте, накапливается ли видимая ошибка или стабилизируется. Настройте фиксированный шаг и посмотрите число догоняющих операций до изменения скорости. Наконец включите предел и сравните переменное модельное время с реальным. Так причина расхождения отделяется от политики, которая его ограничивает.
Чего этот эксперимент не доказывает
Лаборатория использует заданные длительности кадров и постоянную скорость. Она объясняет поведение времени, но не измеряет устройство и не подтверждает игровой движок. Реальная физика, опрос ввода, сеть, интерполяция и бюджет кадра могут изменить лучший дизайн. Используйте результат как гипотезу и проверьте её в настоящей игре.