Я приветствую Вас, уважаемые любители компьютеров и компьютерных игр! В комментариях мне часто пишут, что в их сборке, той или иной, количество кадров в секунду переваливает за 100, за 200, некоторые пишут, что если у него в игре fps меньше 100, то играть уже невозможно, и все в таком духе. Безусловно, среднее количество кадров в секунду важный диагностический показатель, но не все так однозначно, по-этому предлагаю вам разобраться в этом вопросе.
Итак, что такое fps? в переводе с английского языка, это дословно количество "кадров в секунду" (frame per second), далее, вспоминаем принцип анимации - 1 кадр сменяет другой, на котором чуть чуть отличается положение объектов, за счет этого получается эффект движения, и компьютерные игры - не исключение, принцип абсолютно тот же самый.
Из кинематографа мы знаем, что обычное количество кадров, чтобы воспринимать движение на экране с относительной плавностью - 24 в секунду (но многие динамичные сцены куда лучше бы смотрелись с 60 кадрами в секунду). В целом же 24 fps хватит, чтобы просто смотреть какой - то фильм или ролик (сразу вспоминаю, как в конце 90-х все трубили про 25-й кадр =) ).
При этом движения будут казаться относительно плавными и естественными, но этого количества будет категорически не хватать в активных компьютерных играх, где нужно успеть оценить ситуацию и быстро принять решение (например прицелиться и выстрелить в 3-D шутерах) Можете сами попробовать поиграть с 24 кадрами в секунду, 30, 60 и 100 путем ограничения количества fps в настройках.
В большинстве компьютерных игр у большинства людей орган зрения и мозг начинают ощущать минимальный комфорт при количестве кадров не менее 30 в секунду. Именно столько кадров долгое время было во всех играх на Play Station.
Итак со средним количеством кадров для игр определились - не менее 30 в секунду.
но есть и другой очень важный показатель - frame time и frame rate.
Frame rate - количество кадров, отрисованное за единицу времени ( количество кадров в секунду по сути тот же frame rate за 1 секунду)
Frame time - или в дословном переводе "время кадра" - это время, которое необходимо затратить на отрисовку одного кадра.
Если у нас 30 кадров в секунду, следовательно каждый кадр система рисовала: 1000 мс / 30 кадров = по 33,3 миллисекунды на отрисовку одного кадра.
На скриншоте ниже мы видим показатели диагностической программы MSI Afterburner. Так внизу, белым шрифтом, слева направо мы видим количество кадров в секунду (fps - 46) и соответствующее количество миллисекунд на отрисовку одного кадра (24,1 мс)
Но эти цифры - среднее значение, и оно не отражает плавность и комфорт игры. Среднее количество кадров в секунду здесь достаточное для комфортной игры, но игра в данном примере работает плохо, и играть не комфортно. Почему так происходит и куда смотреть?
Все достаточно просто. В статье про взаимосвязь процессора и видеокарты мы говорили, про то, как строится один кадр в компьютерной игре. Напомню: время, которое затрачивается на прорисовку одного кадра зависит от количества объектов в кадре, от сложности прорисовки этих объектов, от их взаимодействий и движений.
Соответственно кадр на открытой местности с большим количеством объектов:
будет рисоваться медленнее, чем в закрытом помещении, где мало объектов.
По-этому большая часть игры будет комфортной, но в некоторых случаях могут возникать сильные просадки в fps (удлинение времени кадра).
Так мы плавно перешли к 1% низкому и 0,1 % минимальному FPS, которые могут испортить всю игру, давая фризы и лаги.
Я думаю вы уже поняли, что средний fps не отображает всю картину происходящего, и при его замере теряется информация о длинных кадрах, чтобы это было проще понять, представьте себе ситуацию, когда компьютер отрисовал за секунду 30 кадров, при этом среднее время кадра составит 1000 / 30 = 33,3 мс, но если взять эту секунду (1000 мс), и посмотреть, за сколько мс система рисовала каждый кадр, мы можем получить следующую картину:
30, 33, 32, 34, 29, 36, 40, 33, 30, 33, 15, 16, 22, 27, 33, 35, 32, 60, 44, 72, 29, 36, 40, 36, 30, 33, 15, 16, 35, 34 мс. Большинство кадров было нарисовано за 30 мс, но несколько кадров значительно медленнее - 60, 72. При подсчете среднего значения, информация об этих редких "длинных" кадрах исчезнет. Но у статистики есть выход из этой ситуации - процентили.
В нашем примере - это показатель, ниже которого находится определенный процент данных от общей выборки. Если 99 процентиль равен 45 мс, это значит, что диапазон от 0 до 45 мс - 99% всего объема данных, а 1% больше или равен 45. ( 60 и 72 мс)
По-этому принято рассматривать 99% процентиль и 99,9 процентиль (последний, как вы уже поняли, по аналогии с предыдущим, показывает тот диапазон, к которому принадлежит 99,9 процентов данных выборки, а 0,1% больше или равен ему).
Но так как речь идет о fps, то мы не будем говорить о 99 процентиле и 99,9 процентиле, а ведущими будут эти самые 1% и 0,1%, их то мы и называем 1% низкий и 0,1% минимальный fps или еще в народе встречал название 1% и 0,1% редких событий.
Для лучшего понимания, давайте взглянем на этот скриншот:
Казалось бы, тут все красиво: среднее значение - 36 fps, кстати, программа тут ошибается, среднее будет 58 fps, ведь frame time - 16,8 ms, (1000 мс / 16,8 мс на один кадр в среднем = 58 кадров) игра должна идти плавно, но если рассмотреть все наши 58 кадров, отрисованные за последнюю секунду, то большинство кадров будет отрисовано за 14-16 миллисекунд, а часть кадров за 60-70, и так каждый момент времени, получим следующую картину геймплея в игре:
Как вам такой комфорт игры при средних 58 fps?
И если не вдаваться в подробности, достаточно просто, во время теста, смотреть на график "фреймтайма":
Либо он имеет кучу неровностей, а чем выше пик на графике, тем дольше система рисовала кадр, тем сильнее был лаг.
Либо он ровненький:
Что говорит нам о том, что время, затраченное на каждый кадр примерно одинаково, а значит нас ждет плавная, комфортная игра.
Чтож, на этом все. Надеюсь вам была полезна и интересна эта статья. Жду ваше мнение в комментариях, удачи!
#ТопБЛОГ