Как адаптировать игру под разные FPS?

Я разрабатываю однопользовательскую 2D-игру. Двигатель, который я использую, мой собственный. Я запутался, как адаптировать игру под разный FPS. Хотелось бы видеть одинаковую скорость игры вне зависимости от количества кадров, с которым может работать компьютер. Я имею в виду, что если ваш компьютер достаточно силен, чтобы рисовать 1000 раз в секунду, или это всего 20 кадров, скорость вашей игры должна быть такой же.

Пробовал автоматически менять параметры движения в зависимости от FPS, но подключить это не получается.

На самом деле у меня есть несколько решений для этого, но они не идеальны:

Первый — ограничить FPS до 30 (напр.), чтобы даже компьютер с плохой производительностью мог корректно показывать игру. - Довольно простое решение, но плавность хода не самая лучшая.

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


person Agney    schedule 05.03.2018    source источник
comment
Я предложил делать математику на основе прошедшего времени (независимо от частоты кадров)   -  person Joan Esteban    schedule 05.03.2018


Ответы (1)


Решением является независимость от частоты кадров с дельта-временем (время, прошедшее с момента последнего рендеринга).

Вот подробная статья о дельта-времени с большим количеством примеров кода: https://isaacsukin.com/news/2015/01/detailed-explanation-javascript-game-loops-and-timing Я не думаю, что вам нужно углубляться в решение как описано в статье.

Вот объяснение концепции: https://www.reddit.com/r/pcmasterrace/comments/29qcqr/an_explanation_of_game_loops_fps_and_delta_time/

person Johan Karlsson    schedule 14.05.2018