LoliDeveloper
@LoliDeveloper
Линейная алгебра как смысл жизни

Как устроена скорость в играх?

Я могу контролировать скорость частотой отрисовки с постоянной длиной вектора перемещения, но тогда максимальная скорость будет ограничена. А если менять скорость играя с длиной вектора перемещения, то при высоких скоростях мы можем пропустить коллизию с другим объектом. Как быть?
Прошу литературы или объяснения как надо правильно организовывать такие вещи.
  • Вопрос задан
  • 1042 просмотра
Решения вопроса 3
usdglander
@usdglander
Yipee-ki-yay
К сожалению сейчас не могу найти статью, но в ней показывалось что обсчёт самих игровых механик и отрисовка кадров - это два параллельных процесса.
Ответ написан
Комментировать
profesor08
@profesor08
Частота кадров это частота кадров, она не должна влиять на игровой процесс. Это лишь реакция на изменение состояния в игре. Скорость это величина зависящая от расстояния и времени за которое объект проходит из точки А в точку Б. Например за секунду твой объект преодолевает N пикселей, за 10 секунд он преодолеет 10N пикселей, независимо от частоты кадров. Чтоб правильно отобразить объект на экране, независимо от частоты кадров, тебе надо узнать прошедшее время с момента последнего рендера. Зная это время, ты посчитаешь точное расстояние, на которое мог сместиться объект, чтоб правильно отобразить его на экране. Это самый просто способ что-то анимировать на экране, не привязываясь к частоте кадров, значение имеет только время и расстояние на которое может сместиться объект за какое-то время.

Если еще один случай, когда у тебя есть некоторый внутренний цикл, который живет своей жизнью, меняет состояние мира 1 раз в фиксированный промежуток времени. За этот промежуток тебе надо посчитать где окажется объект, с чем он столкнется, что произойдет и кучу всего разного. Остается только взять это состояние, которое уже посчитано и отобразить на экране. А чтоб не было рывков, сгладить способов выше.

P.S. Я сильно сомневаюсь, что в игровых движка придется этим заниматься, там уже все сделано. Но если хочешь что-то сделать с чистого листа то придется заморочиться.
Ответ написан
@deliro
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы