Комментарии 17
а в новой игре с именем «Quake» появятся грубые ошибки, приводящие к тому, что один из игроков может получить преимущество только потому, что у него лучше «железо»Не помню, как в первой, а во второй кваке поднимать фпс любой ценой — была стандартная практика. В 3 тоже. Правда там это влияло в первую очередь на прыжки.
Теперь поговорим о недостатках этого метода. Дело в том, что формула для интегрирования не всегда такая простая, как это могло бы казаться. Могу привести в пример игру S.T.A.L.K.E.R,
К слову сказать, в приведенном коде вообще интегрирования нет, так что это сложно назвать недостатком.
Правильная формула — вот такая: camera_angles = new_camera_angles
. Зачем там вообще сглаживание?
Для эффекта контузии и иллюзии инерции персонажа.
Учет инерции дает формулу равноускоренного движения. Только эту формулу придется применять два раза в обе стороны (первый раз — чтобы найти правильные параметры движения исходя из желаемой конечной точки). Наверное, проще просто ограничить скорость перемещения камеры.
Да, по поводу "интегрального" вида конкретно этой формулы. Выводится он вот так. Допустим, один и тот же ввод был дан два раза подряд. В таком случае получим новое значение угла new_camera_angles * (k*k + 2*k) + camera_angles * (1 - k) ^ 2
. Отсюда видим, что:
- под любой шаг времени можно подстроиться сменой k;
- коэффициент при старом значении
camera_angles
возводится в квадрат при удвоении интервала времени.
Отсюда методом внимательного взгляда получаем формулу того же вида, но которую уже не надо вручную подстраивать под разные интервалы времени:
float k = pow(k0, dt);
camera_angles = new_camera_angles * (1-k) + camera_angles * k;
Осталось подобрать k0 по ощущениям. Ну, или его можно вычислить как exp(1-k, 1/dt0)
, где dt0 — эталонный интервал времени (замерять на железе разработчиков игры).
Как видно, никакого логарифма нет, напротив — экспонента получилась (ну, не зря же формулу еще экспоненциальным затуханием называют).
Название игры "Quake" раньше было синонимом чего-то крутого, высокотехнологичного и идеального. И в голову не могло придти, что через какую-то пару десятков лет и камня на камне не останется от былого превосходства, а в новой игре с именем "Quake" появятся грубые ошибки, приводящие к тому, что один из игроков может получить преимущество только потому, что у него лучше "железо".
FYI эту кваку большей частью делает питерский Сейбер Интерактив и скрещивая свой движок с айдишными наработками. Сейберы, конечно, молодцы, и одна из немногих выживших российских студий что вообще способны сделать ААА фпс при нужном пиаре и вливании бабла, но все равно до хтонических навыков Айди им далеко. В принципе скажем спасибо бетхезде как издателю за такой странный подход с распределением разработки.
Некоторые особенности программирования временных событий в играх