Приветствую Вас на канале Games with Unity - про устройство игр, GameDev и игровой движок Unity!
Сегодня мы поговорим про FPS - что это такое и какое значение является оптимальным в играх?
FPS - это аббревиатура от словосочетания Frames Per Second, что можно перевести, как количество кадров в секунду.
Как это работает?
Цифровой мир работает дискретно, то есть прерывисто. Помимо того, что у процессоров и видеокарт есть свои циклы и частоты обработки задач. Так и у игр и других программ, тоже есть свои циклы работы.
В играх, за один такт цикла обработки данных, процессор и видеокарта производят расчёты игровой логики и графики, в зависимости от действий игрока, а так же расчёты физики, освещения, постэффекты, шейдеры и другие расчёты. Результатом всех выполненных расчётов за один такт цикла - является вывод на экран актуального игрового изображения. Это изображение называется кадр.
Кадры показываются на экране один за другим, сменяя друг друга. А наше зрение, являясь аналоговым, сглаживает моменты переключения кадров между собой, делая картинку плавной. Чем чаще кадры сменяют друг друга, тем картинка для нас становится более гладкой и непрерывной, а с некоторого момента (в среднем около 30 fps), глаз перестаёт замечать переключение кадров.
Чем измерить FPS?
Для замеров значений FPS можно использовать:
- XBox Game Bar, встроенный в Windows 10: сочетание клавиш Win+G.
Как увеличить FPS?
Логично, что FPS хочется увеличить, но как это сделать?
Тут всё просто, достаточно понять, что количество рассчитанных кадров в секунду, зависит от двух параметров - мощности системы и сложности расчётов.
Чем мощнее железо и чем легче сложность расчёта, тем больше кадров успевает отобразиться на экране за одну секунду.
Поэтому, чтобы поднять FPS, нужно либо улучшить своё железо - купить более мощные процессор с видеокартой, и добавить оперативной памяти, либо же уменьшить сложность расчётов, т.е. уменьшить качество графики в настройках игры. А так же убрать лишнюю нагрузку на систему - закрытием фоновых программ, оптимизацией ОС и дефрагментацией диска.
Ещё бывает так, что значение FPS может быть программно ограничено каким-либо максимальным значением, настройками игры, настройками драйвера или вертикальной синхронизацией (ограничение по частоте экрана монитора). В этом случае, если хотите увеличить FPS, нужно
отключить это ограничение, или же, если это возможно, поднять его верхнюю границу.
Какое значение FPS оптимально в играх?
Считается, что грань между заметным чередованием кадров и непрерывной гладкой картинки, в среднем для человеческого зрения, является 30 кадров в секунду. То есть 30 FPS - это минимальное значение для комфортной игры. Чем fps ниже, тем задержка между отрисовкой кадров будет заметна всё сильнее и сильнее. На значениях FPS ниже 20 - играть становится не комфортно, а фризы начинают раздражать даже стойкого игрока.
Хотя, в начале 2000-х, когда стали выходить первые тяжёлые для обычного ПК игры, хотелось в них играть, даже при отсутствии возможностей апгрейда своего компа. Поэтому приходилось проходить GTA 3 и Vice City, играя с 10-ю, 15-ю FPS 😄. Сейчас, конечно, так мучаться не стоит.
Для лучшего комфортного ощущения от игры, желательно обеспечить вывод кадров на экран с частотой не менее 60 FPS. На такой частоте кадров - картинка становится полностью сглаженной, а заметить переключение кадров становится почти невозможно.
Однако, киберспортсмены, любители GS:GO и других соревновательных игр, стремятся играть при частоте кадров 200 FPS или даже больше. Они объясняют это скорее не для плавности картинки, а для скорости реакции игры на действия спортсменов.
Но если вы не профессиональный игрок (хотя и для них такая необходимость является спорной), то высокие значения FPS вам на самом деле не нужны. Так как человеческий глаз, даже при самой сильной концентрации, может воспринимать максимум до 100 кадров в секунду. Чаще всего, разницу между 60 и 100, определить довольно сложно. А всё, что выше 100 - тем более, так как глаза эти кадры просто не воспринимают.
Время реакции среднестатистического геймера ~200 миллисекунд (мировой рекорд - 120 мс.), что значительно дольше, чем скорость реакции игры при 100 FPS - получается по 10 миллисекунд уходит на обработку одного кадра.
То есть, за то время, которое нужно среднестатистическому геймеру для нажатия на кнопку мыши 🖱, после обнаружения противника (~200 мс.), при 100 FPS (по 10 мс. на кадр), игра уже обработает 20 кадров (20 циклов расчёта игровой логики и графики), что намного больше минимально необходимого одного кадра для обработки ввода игрока, после его реакции.
Выводы:
За огромным значением FPS гнаться нет смысла. И хоть это и повышает вашу крутость 😎, но в остальном это бесполезно, и лишь увеличивается нагрузка на вашу систему и видеокарту. Они начинают потреблять больше электроэнергии, греться и быстрее изнашиваться.
А если у вас мощная система или же малотребовательная игра и она идёт у вас быстро и с большим FPS, то поищите в меню игры настройку ограничения максимального FPS. Либо же поищите подобную настройку в утилитах драйверов видеокарты, и включите её, задав максимальные значения в пределах 60 - 100 FPS, не более. Разницы не заметите, зато ваш комп скажет вам "спасибо", т.к. будет работать не напрягаясь, потребляя меньше энергии и дольше работая и радуя вас. 🖥
Или же включить "вертикальную синхронизацию" - эта настройка попытается синхронизировать FPS игры с частотой обновления монитора. А так как, чаще всего, мониторы имеют частоту обновления экрана 60 Гц, то и FPS получит ограничение в 60 кадров в секунду, что вполне достаточно для комфортной игры и не будет вызывать лишних нагрузок на систему.
На этом всё, не забывайте поставить лайк, если статья вам понравилась, а так же подписаться на канал, чтобы не пропустить другие познавательные статьи о работе игр и о GameDev 😉.