stringtranslate.com

Дельта-тайминг

Delta time или delta Timing — это концепция, используемая программистами в отношении аппаратного и сетевого реагирования. [1] В графическом программировании этот термин обычно используется для переменного обновления декораций на основе прошедшего времени с момента последнего обновления игры [2] (т. е. предыдущего « кадра »), которое будет меняться в зависимости от скорости компьютера и того, сколько работы необходимо выполнить в программе в любой момент времени. Это также позволяет рассчитывать графику отдельно, если графика является многопоточной.

В сетевом программировании , из-за непредсказуемой природы интернет-соединений , дельта-синхронизация используется аналогичным образом для переменного обновления информации о движении, полученной через компьютерную сеть , независимо от того, сколько времени потребовалось для получения следующего пакета данных с информацией о движении. [3]

Часто это делается путем вызова таймера каждый кадр в секунду, который удерживает время между текущим моментом и последним вызовом. После этого полученное число (дельта-время) используется для расчета того, какое расстояние, например, персонаж видеоигры мог бы пройти за это время. Это приводит к тому, что персонажу требуется одинаковое количество реального времени для перемещения по экрану независимо от скорости обновления и того, вызвана ли задержка недостатком вычислительной мощности или медленным интернет-соединением.

В графическом программировании это позволяет избежать замедления или ускорения игрового процесса в зависимости от сложности происходящего в любой момент времени, что может привести к непоследовательному, раздражающему опыту (например, время замедляется, когда на экране появляется больше персонажей, или слишком быстро, когда на экране находится только один персонаж). В сетевом программировании это позволяет синхронизировать игровой мир каждого компьютера с другими, гарантируя, что каждый клиент в конечном итоге увидит одну и ту же активность в одно и то же время, даже если с момента последнего обновления у некоторых клиентов прошло больше времени, чем у других.

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

Измерение дельта-тайминга в программировании

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

Питон

# время()# возвращает секунды с начала эпохи в виде числа с плавающей точкойиз  времени  импортировать  время# определить is_prime(x)def  is_prime ( x ): для  i  в  диапазоне ( 2 ,  x ): если  ( х  %  я )  ==  0 : print ( x ,  "не является простым числом" ) возвращаться print ( x ,  "является простым" )# измерить дельта-времяt0  =  время ()  # начало измеренияis_prime ( 13 )  # вызов функцииt1  =  время ()  # конец измеренияdeltaTime  =  t1  -  t0print ( "is_prime(13) занимает" ,  deltaTime ,  "секунд на выполнение!" )

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

Delta-time и частота кадров не всегда связаны. Видеоигры делятся на две категории относительно частоты кадров: зависящие от частоты кадров или независимые от частоты кадров. Игры, зависящие от частоты кадров, имеют частоту кадров, которая зависит от компьютера, на котором запущено программное обеспечение. Например, если игра, зависящая от частоты кадров, работает со скоростью 300 кадров в секунду (fps) на компьютере с частотой обновления 120 герц (Гц), то она будет работать со скоростью 150 кадров в секунду на компьютере с частотой обновления 60 Гц. Стандартное выражение delta-time может создавать экраны пауз и намеренные эффекты замедленного движения в играх, зависящих от частоты кадров. Стандартные формулы delta-time редко используются для стандартного игрового процесса, поскольку delta-time между кадрами сильно различается в зависимости от частоты обновления компьютера, на котором он запущен.

Если игра не зависит от частоты кадров, частота кадров предустановлена ​​и работает одинаково на всех компьютерах независимо от их спецификаций. Независимость от частоты кадров ограничивает максимальное качество графики, чтобы сделать игру доступной большему количеству потребителей. Независимость от частоты кадров особенно популярна в мобильных играх и играх, оптимизированных для компьютеров начального уровня, таких как Chromebook. В играх, не зависящих от частоты кадров, дельта-время между кадрами постоянно во всей игре. Эта стандартизация означает, что одно выражение дельта-времени может создать постоянную частоту кадров для всех пользователей на всех типах компьютеров. [4]

Когда использовать дельта-время

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

Одним из недостатков использования дельта-тайминга для движения является то, что он может быть сложным для игр, которые включают в себя широкий спектр движений и скоростей движения. Например, игра может иметь определенную скорость ходьбы и скорость спринта для всех персонажей; однако персонажи могут также управлять автомобилями, лодками, самолетами и другими транспортными средствами. Если разработчик хочет, чтобы каждая из этих скоростей движения была разной (чтобы сделать игру максимально реалистичной), ему понадобится отдельное выражение дельта-тайминга для каждой скорости движения (это только при условии, что эти движения происходят с постоянной скоростью). Если движения не происходят с постоянной скоростью, выражения дельта-тайминга становятся неэффективными. [5]

Смотрите также

Ссылки

  1. ^ "Программное обеспечение для создания игр - Construct 3 ★★★★★".
  2. ^ «Анимация с временными рамками с использованием HTML 5 Canvas и JavaScript | Viget».
  3. ^ Кук, Шейн (28.12.2012). Программирование CUDA: Руководство разработчика по параллельным вычислениям с использованием графических процессоров. Новости. ISBN 978-0-12-415988-4.
  4. ^ Эшли (26.09.2017). "Независимость от времени и частоты кадров". Construct.net . Неизвестно . Получено 05.02.2022 .
  5. ^ Дрю ​​Коулман (2019-07-24). «Понимание дельта-времени». Medium.com . Неизвестно . Получено 2022-02-05 .