Нет причин, по которым физика должна зависеть от частоты кадров, и это явно плохой дизайн.
Я однажды пытался понять, почему люди так делают. Я сделал обзор кода для игры, написанной другой командой в компании, и я не видел ее с самого начала, но они использовали много жестко закодированного значения 17 в своем коде. Когда я запустил игру в режиме отладки с показанным FPS, я увидел, что FPS было ровно 17! Я снова просматриваю код, и теперь все ясно: программисты предполагали, что в игре всегда будет постоянная частота кадров 17 FPS. Если FPS был больше 17, они делали сон, чтобы FPS был ровно 17. Конечно, они ничего не делали, если FPS был меньше 17, игра просто сходила с ума (например, когда играли на 2 FPS и ехали на машине в В игре игровая система предупредила меня: «Слишком быстро! Слишком быстро!»).
Итак, я пишу электронное письмо с вопросом, почему они жестко закодировали это значение и используют его в своем физическом движке, и они ответили, что таким образом они упрощают этот движок. И я снова ответил, хорошо, но если мы запустим игру на устройстве, которое не способно к 17 FPS, ваш игровой движок работает очень забавно, но не так, как ожидалось. И они сказали, что исправят проблему до следующего обзора кода.
Через 3 или 4 недели я получаю новую версию исходного кода, поэтому мне было очень любопытно узнать, что они сделали с константой FPS, поэтому первое, что я делаю, это поиск по коду после 17, и есть только пара совпадений , но один из них не был тем, что я хотел увидеть:
final static int FPS = 17;
Таким образом, они удалили все жестко закодированное значение 17 из всего кода и вместо этого использовали константу FPS. И их мотивация: теперь, если мне нужно поставить игру на устройство, которое может делать только 10 FPS, все, что мне нужно сделать, это установить постоянную FPS на 10, и игра будет работать плавно.
В заключение, извините за написание такого длинного сообщения, но я хотел подчеркнуть, что единственная причина, по которой кто-либо может сделать такую вещь, - плохой дизайн.