Дельта времени
Дельта-время или дельта-тайминг — это концепция, используемая программистами в отношении реакции оборудования и сети. [1] В графическом программировании этот термин обычно используется для обозначения переменного обновления декораций в зависимости от времени, прошедшего с момента последнего обновления игры. [2] (т.е. предыдущий « кадр »), который будет меняться в зависимости от скорости компьютера и того, сколько работы необходимо выполнить в программе в любой момент времени. Это также позволяет рассчитывать графику отдельно, если графика является многопоточной.
В сетевом программировании из-за непредсказуемого характера интернет-соединений дельта-синхронизация используется аналогичным образом для переменного обновления информации о движении, полученной через компьютерную сеть , независимо от того, сколько времени потребовалось для получения следующего пакета данных с информацией о движении. [3]
Часто это делается путем вызова таймера каждый кадр в секунду, который удерживает время между настоящим моментом и последним вызовом. После этого полученное число (дельта времени) используется для расчета того, как далеко, например, персонаж видеоигры мог бы пройти за это время. В результате персонажу требуется одинаковое количество реального времени для перемещения по экрану независимо от скорости обновления и того, вызвана ли задержка недостатком вычислительной мощности или медленным подключением к Интернету.
В графическом программировании это позволяет избежать замедления или ускорения игрового процесса в зависимости от сложности того, что происходит в любой момент времени, что может привести к непоследовательному и резкому восприятию (например, время замедляется, чем больше персонажей выходит на экран или бегает). слишком быстро, потому что на экране только один персонаж). В сетевом программировании это обеспечивает синхронизацию игрового мира каждого компьютера с другими, гарантируя, что каждый клиент в конечном итоге видит одну и ту же активность в одно и то же время, даже если с момента последнего обновления для некоторых клиентов прошло больше времени, чем для других.
Достаточно большие задержки в конечном итоге негативно повлияют на игровой процесс , но использование Delta Time обеспечивает согласованность игрового процесса, пока компьютер и подключение к Интернету соответствуют минимальным аппаратным требованиям игры.
Измерение дельта-времени в программировании
[ редактировать ]Дельта времени может использоваться для измерения того, сколько времени потребовалось для выполнения данной программы в режиме реального времени. В приведенном ниже фрагменте кода Python показано, как время выполнения примера функции можно рассчитать, используя разницу времени до и после выполнения.
Питон
[ редактировать ]# time()
# returns the seconds since the epoch as a floating-point number
from time import time
# define is_prime(x)
def is_prime(x):
for i in range(2, x):
if (x % i) == 0:
print(x, "is not prime")
return
print(x, "is prime")
# measure delta time
t0 = time() # start of measurement
is_prime(13) # call function
t1 = time() # end of measurement
deltaTime = t1 - t0
print("is_prime(13) takes", deltaTime, "seconds to execute!")
Дельта времени и частота кадров
[ редактировать ]Дельта времени и частота кадров не всегда связаны между собой. Видеоигры делятся на две категории в отношении частоты кадров: зависящие от частоты кадров и не зависящие от частоты кадров. Частота кадров В зависимых играх частота кадров варьируется в зависимости от компьютера, на котором установлено программное обеспечение. Например, если игра, зависящая от частоты кадров, работает со скоростью 300 кадров в секунду (кадров в секунду) на компьютере с частотой обновления 120 Гц (Гц), то на компьютере с частотой обновления 60 Гц она будет работать со скоростью 150 кадров в секунду. Стандартное выражение дельты времени может создавать экраны паузы и преднамеренные эффекты замедления в играх, зависящих от частоты кадров. Стандартные формулы дельта-времени редко используются для стандартного игрового процесса, поскольку дельта-время между кадрами сильно варьируется в зависимости от частоты обновления компьютера, на котором он работает.
Если игра не зависит от частоты кадров, частота кадров задана заранее и одинаково работает на всех компьютерах независимо от их характеристик. Независимость от частоты кадров ограничивает максимальное качество графики, чтобы сделать игру доступной большему количеству потребителей. Независимость от частоты кадров особенно популярна в мобильных играх и играх, оптимизированных для компьютеров более низкого уровня, таких как Chromebook. В играх, не зависящих от частоты кадров, разница времени между кадрами одинакова на протяжении всей игры. Эта стандартизация означает, что одно выражение дельты времени может создать согласованную частоту кадров для всех пользователей на всех типах компьютеров. [4]
Когда использовать дельту-время
[ редактировать ]Дельта-тайминг может быть полезен в любое время, когда частота кадров в игре должна быть независимой от оборудования. Одним из примеров этого могут быть игры, которые необходимо запускать на мобильных устройствах или недорогих компьютерах. В некоторых случаях разработчики видеоигр используют дельта-тайминг для стандартизации скорости движения объекта на экране. Например, если персонаж движется по экрану с постоянной скоростью, дельта-тайминг может гарантировать, что эта скорость движения будет постоянной и не будет колебаться. Использование дельта-синхронизации для движения особенно полезно для пользователей, у которых нестабильный доступ в Интернет или низкопроизводительное компьютерное оборудование. Этот метод также позволяет регулировать движение объектов на экране.
Одним из недостатков использования дельта-тайминга для движения является то, что это может быть сложно для игр, в которых используются самые разные движения и скорости движения. Например, в игре может быть указана определенная скорость ходьбы и скорость бега для всех персонажей; однако персонажи также могут водить автомобили, лодки, самолеты и другие транспортные средства. Если разработчик хочет, чтобы каждая из этих скоростей движения была разной (чтобы сделать игру максимально реалистичной), ему понадобится отдельное выражение дельты времени для каждой скорости движения (то есть только при условии, что эти движения происходят с постоянной скоростью). Если движения не происходят с постоянной скоростью, выражения дельта-тайминга становятся неэффективными. [5]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Программное обеспечение для создания игр — Construct 3 ★★★★★» .
- ^ «Анимация на основе времени с помощью HTML 5 Canvas и JavaScript | Viget» .
- ^ Кук, Шейн (28 декабря 2012 г.). Программирование CUDA: Руководство разработчика по параллельным вычислениям на графических процессорах . Ньюнес. ISBN 978-0-12-415988-4 .
- ^ Эшли (26 сентября 2017 г.). «Независимость от дельта-времени и частоты кадров» . Конструкт.нет . Неизвестный . Проверено 5 февраля 2022 г.
- ^ Дрю Коулман (24 июля 2019 г.). «Понимание разницы во времени» . Medium.com . Неизвестный . Проверено 5 февраля 2022 г.