Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
speed += acceleration * deltaTime;
speed *= pow(friction, deltaTime);
position += speed * deltaTime;
И хотя это как будто сработает, на самом деле так делать неправильно. Можете проверить сами.
(speed — prevSpeed) * deltaTime/ 2
Жги!
Спидраннеры. Спидраннеры заметят. Вскоре после выхода игры они заметили, что некоторые люди в списках рекордов спидрана имели более плохое время прохождения, но по подсчёту оказавшееся более хорошим, чем у других. И непосредственной причиной этого была нечёткость таймингов и отключение vsync в игре (или 144-герцовые мониторы). Поэтому стало очевидно, что нужно выключать эту нечёткость при отключении vsync.
Насколько я знаю, в спидранах уже давно есть категории по использованию багов, причем больше двух и для разных игр разные (в зависимости от того, насколько эти баги влияют на геймплей).
А неправильный подсчет времени, который зависит от случайных факторов — это довольно неприятно, и не только для спидраннеров.
Автор как раз ссылается на такой подход из статьи Гленна Филдера "Fix Your Timestep", сложности и недостатки подхода тоже перечислены в статье автора.
Делают расчет физики на 60 герц, а потом у людей с нормальными мониторами (144 Hz) все работает непонятно как.
Апофиозом из того что я наблюдал было слизерио. На 144-герцевой развёртке невозможно было играть — жуткие дёргания 2-3 раза в секунду. Пришлось переключаться на 60 герц.
Считайте ключевые точки на 60 герцах и интерполируйте между ними если сложно сделать переменный шаг.
Как заставить игру работать с частотой 60fps