понедельник, 2 июня 2014 г.

Мысли вслух: стоит ли ограничивать фреймрейт в играх

Автор Digital Foundry написал довольно неоднозначную статью про то, стоит ли лочить игры на 30 кадрах/с, если заветных 60-ти достичь не удается. Он сразу же оговорился, что все рассуждения по этому поводу являются вкусовщиной. Спасибо за честность, так сказать. Но подискутировать на поднятую им тему все же можно.

В первую очередь, стоит понимать, почему лок на каком-то стабильном значении fps настолько важен для комфортной игры. Я бы даже сказал, в каких случаях он важен. Дело все в особенностях работы вертикальной синхронизации. Если ее нет, то никаких проблем с восприятием фреймрейта не возникает, разве что придется потерпеть разрывы экрана. Но, если хотите поиграть с комфортом для глаз, то тут начинается самое интересное.

Несмотря на непостоянный фреймрейт, Xbox-версия Titanfall играется без каких либо неприятных задержек, благодаря отсутствию v-sync.

Дело в том, что синхроимпульс заставляет фреймбуферы ждать обновление экрана. То есть появляется определенная фиксированная задержка вывода кадров (frame-time, frame latency), которая влияет не только на плавность картинки, но и на отзывчивость управления. В случае с 60 fps она равна 16 мс, в случае с 30 – 33 мс. Но вот каких-то промежуточных значений при использовании вертикальной синхронизации достичь нельзя. В результате, на тех же 40 fps мы получаем дерганную камеру, так как время рендеринга постоянно скачет между 16 и 33 мс. И чем больше таких резких скачков, тем некомфортнее становится играть – вполне логично.

Наиболее яркий пример – Killzone: Shadow Fall. Это видео наглядно показывает разницу между двумя режимами: 30 и 30-45 fps.

Но вернемся к первоначальному вопросу: «Стоит ли ставить шапку в 30 fps?». Ответ прост – все зависит от того, какого значения время вывода кадра достигает чаще всего. Если игра бегает в диапазоне 45-60 fps, лок, конечно же, неуместен. Опыт Call of Duty на Xbox 360 это наглядно показывает. В остальных же случаях лучше искусственно ограничивать частоту кадров, дабы не травмировать психику игрока. Только вот делать это нужно правильно. При неграмотном локе ситуацию можно усугубить. Простой пример – NFS Rivals до патча, где время вывода кадров хаотично скакало между 16, 33 и 50 мс. А все потому, что разработчики пренебрегли очень простым правилом: при обновлении 60 Гц и 30 fps каждому кадру должен соответствовать его дубль.

***

В общем, рассматриваемая в статье DF тема покажется занимательной, скорее, гикам, но для среднестатистического игрока не будет представлять никакого интереса – конечный пользователь не должен задумываться о технических решениях, примененных в программном обеспечении. Тем не менее, разработчики все же начали предоставлять консольным геймерам выбор: играть ли им с ограниченным или неограниченным фреймрейтом.

P.S. Если вы вдруг захотите поставить ограничитель fps в ПК-играх, рекомендую воспользоваться утилитой RivaTuner Statistics Server, входящей в состав MSI Afterburner.

Комментариев нет:

Отправить комментарий