НАВИГАЦИЯ ИГРЫ

Зависимость FPS от разрешения в Source'е

Мне взбрело в голову проверить кол-во фпс в зависимости от разрешения на необновлённых движках ХЛ2, Эп1, Эп2. Результаты получились довольно интересными, я даже провёл кое-какие расчёты и смог сделать некоторые выводы. Все результаты выложены в виде трёх таблиц - в принципе, пошевелив мозгами, можно допереть, что к чему в моих таблицах, но я всё же рекомендую сперва почитать мои комментарии, и, по мере их прочтения, смотреть на данные в таблицах.

Часть 1. Замеры на родных картах.

1. Методика измерения. (Можно пропустить, если неинтересно и доверяете мне ^_^)

Ну, собсна, фпс измерялся на трёх основных движках - ХЛ2, Эп1 и Эп2 (пиратка Half-Life 2 Ultimate Edition 6), конфиг ПК в профиле. Для точного измерения фпс записывал демку на одной из игровых карт - как видно из таблиц, для ХЛ2 выбрал d1_canals_01 - для моего ПК она достаточно напрягающая из-за воды (при прыжке в воду фпс падает ниже 60), для Эп1 - ep1_citadel_03 - это карта с Ядром Цитадели, самое комповыносящее место в игре, для Эп2 - ep2_outland_01 - самая первая карта игры, на которой наблюдаем "портальный шторм" и обрушение вагончика вниз, что ещё больше распаляет мою несчастную видяшку. Настройки в ХЛ2 - максимальные, в Эп1 - сглаживание MSAA 8x вместо CSAA 16xQ (а вообще-то, один фиг; но моя система почему-то реагирует очень неадекватным снижением фпс на последний режим, ХЗ, кривые руки Нвидиа?), в Эп2 - отключены динамические тени и размытие при движении. Во всех играх, по понятным причинам также отключена вертикальная синхронизация. Тестирование проводил в режиме полного окна. Для достижения минимальных погрешностей, каждая игра запускалась с параметрами -console и +fps_max 1000. Для измерения фпс юзался встроенный в игру бенчмарк - команды bench_start и bench_end, которые для уменьшения погрешности и лучшей точности и скорости запуска, биндились на клавиши. После записи демки она один раз проигрывалась, выбиралось нужное разрешение, игра перезапускалась и запускалась демка с включением бенчмарка. После теста выбиралось следующее разрешение, игра перезапускалась и вновь включалась демка с бенчем - и так до самого последнего разрешения. Следовал от меньшего разрешения к большему.
В тщательности измерений можете мне довериться - когда разгонял видяху (а я этим занимался довольно тщательно, и даже не один раз (бывало сбрасывал на стд)), достаточно наловчился. Конечно, слишком точно эти результаты вряд ли можно воспринимать - какие-либо погрешности всегда будут, и один и тот же тест, выполненный, казалось бы, абсолютно одинаково, часто даёт разные результаты, тем не менее, вполне можно расчитывать на небольшую (максимум 1-2 фпса при порядке 100 к/с) погрешность.

2. Таблицы результатов.

resolutionframes per second
Таблица 1. Замеры фпс.
resolution
aspectkilopixelsHL2*EP1**minEP1EP2***minEP2
640*4804:3307,286,62102,6752-5559,4630-39
720*5765:4414,7290,67103,8738-4049,4125-31
800*6004:348090,7596,883744,7123-26
1024*7684:3786,43290,567,1425-2731,7515-18
1152*8644:3995,32890,3854,0321-2226,2512-15
1280*9604:31228,890,1644,6817-1821,811-10
1280*10245:41310,7289,7740,4716-1720,0310-11
















* d1_canals_01 ** ep1_citadel_03 *** ep2_outland_01

Таблица 2. Сравнение фпс в Эп1 и Эп2 между соседними разрешениями.
   fps**
resolution 1
resolution 2res*EP1EP2
640*480720*5761,35 1,2
720*576800*6001,16 1,105
800*6001024*7681,641,441,4
1024*7681152*7681,271,241,21
1152*7681280*9601,2351,211,2
1280*9601280*10241,071,11,09


* res=resolution2/resolution1 ** fps=fps1/fps2

Таблица 3. Сравнение фпс в Эп1 и Эп2 с разрешением 640*480.
resolution720*576
800*600
1024*768
1152*864
1280*960
1280*1024
res*1,351,562,563,2444,27
fps** EP1
  1,531,92,32,54
res/fps EP1
  1,671,71,741,68
fps** EP2
1,21,331,872,2652.82,97
res/fps EP2
1,1251,171,371,431,431,44













* res=resolution/640*480 ** fps=fps(resolution)/fps(640*480)


3. Описание таблицы 1.
Для начала рассмотрим таблицу 1. Первые три колоночки - это различные характеристики, связанные с разрешением - собственно разрешение, соотношение сторон и кол-во пикселей на один кадр текущего разрешения (в тысячах штук, или килопикселях) - узнать кол-во пикселей в кадре до смешного легко - умножаем первую цифру разрешения на вторую. Следующие пять колоночек - собственно замеры фпс. В первой колонке - средний фпс, выданный бенчмарком для ХЛ2, далее - для Эп1. Под заголовком minEP1 имеется ввиду минимальное кол-во кадров в секунду при рассматривании ядра - одновременно это минимальный фпс на демке вообще - оно и понятно, ядро у нас прожорливое в этом смысле... Далее - средний фпс на демке Эп2, а под заголовком minEP2 указано два минимальных фпс - вторая цифра - это минимальные к/с, когда мы смотрим на портальный шторм, а первая цифра - это минимальные к/с, когда мы смотрим на обрушивающиеся вагончики. Обычно первая цифра - это и минимальный фпс на карте, но не всегда - на высоких разрешениях при осматривании местности ещё до вспышки портального шторма я засекал совершенно убийственные числа (8-9 на 1280*1024). Минимальный фпс Эп1 нам ещё пригодится, минимальный фпс Эп2 - чисто для информации/сравнения.

4. Анализ результатов для Half-Life 2.
а). ФПСу - независимость!
Первое, что бросается в глаза - удивительная схожесть результатов. При том, что размеры кадра отличаются порою в 4 раза, разница в фпс едва достигает 1-ого и находится на уровне погрешности. Вообще-то, этот результат и не должен удивлять былого халфера - в тестированиях видях (в основном старых, или встроенных, или ещё как-либо обделённых), авторы обзоров всё время удивляются практическому отсутствию изменений в счётчике кадров при изменении разрешения, часто называя такое поведение "странным". На самом деле - это обычное поведение ХЛ2. Но, должен сказать, данное замечание верно не всегда. Для старых видеокарт зависимость разрешение-фпс есть, например, для моей несчастной старушки Nvidia MX440 - может, разница не очень-то и большая, но всё же есть.
С чем связано безразличие старого билда ХЛ2 к разрешению, сказать не могу - то ли в движке есть некий определённый специальный "потолок", то ли он так хорошо масштабирует картинку - не могу сказать, тут моих знаний не хватает. В любом случае, Вэлвы склепали хорошее двигло - в меру (ныне) красивое и довольно производительное, жаль, что они своей последней эпик-обновой лишили его второго преимущества в пользу первого.
б). Эпик фэйл.
Во вторую очередь (после удивительной схожести результатов) вы наверняка обратите внимание на внезапный провал в строчке 640*480 - всего лишь 82 кадра/секунду! Как? Аффтар схалтурил?
Последнее исключено - результат перепроверен три раза, и все разы он подтвердился. Проседания фпс даже видны по счётчику фпс (он у меня всегда включен) - вспомните момент перед спрыгиванием в канал - мы идём к силовому полю и отстреливаем ГО-шников (оттуда после прыжка в канал поедет поезд) - в этом месте на 640*480 фпс падал ниже 60 (57-58), в других же разрешениях он стабильно держался на 62-64 - то есть, "цифры не врут" (c) House M.D. Мы имеем забавный "парадокс 640*480" - в этом разрешении ХЛ2 работает куда медленнее, чем в других. Интересно, верно ли это для старых машин?
в). Выводы.
Суммируя, делаем следующие заключения:
- в Half-Life 2 фпс практически не зависит от разрешения (на достаточно мощных ПК);
- Half-Life 2 не любит разрешение 640*480;
- максимальной производительности в Half-Life 2 можно добиться на разрешении 720*576 или 800*600 (опять-таки, по крайней мере, на достаточно мощных ПК).
Теперь нам предстоит проверить, верны ли эти выводы для Эп1 и Эп2.

5. Описание таблицы 2.
Для более тщательного анализа Эп1 я провёл кое-какие дополнительные расчёты - для ХЛ2 они бесполезны из-за практически одинакового фпс, а для Эп1 и Эп2 они помогут выявить кое-какие интересности. Результатами расчётов заполнены таблицы 2 и 3.
Суть таблицы 2 - сравнение двух соседних разрешений - т.е., мы сравниваем кол-во пикселей в кадре у двух разрешений и кол-во фпс в играх у этих же resolutions. Первые два столбика - сравниваемые разрешения. Второй столбик (res) - отношение кол-ва пикселей в одном кадре второго, большего разрешения к кол-ву пикселей первого, меньшего разрешения. Т.е., мы берём килопиксели для, скажем, 1024*768, и делим их на килопиксели для 800*600 (либо сразу 1024 умножаем на 768 и делим на 800 и на 600). Таким образом, мы узнаём насколько одно разрешение больше другого.
Следующие два столбика (fps), для Эп1 и Эп2 соответственно - это отношение большего фпс - для первого разрешения - к меньшему фпс - для второго разрешения. Т.е., в нашем примере мы берём из первой таблицы (т.о., вторая таблица основывается на данных из первой) средний фпс, полученный для 800*600 и делим его на средний фпс для 1024*768. Таким образом, мы узнаём, во сколько раз фпс для 800*600 (меньшего разрешения) больше, чем фпс для 1024*768 (большего разрешения). Чем меньше получатся эти цифры, тем, в принципе, лучше.
Т.к. для перых трёх разрешений Эп1 вышел небольшой разброс фпс, данные по ним я не привожу.

6. Описание таблицы 3.

Таблица 3 также основывается на данных таблицы 1. Она довольно похожа на таблицу 2, главное отличие - сравниваются уже не 2 соседних разрешения, а все разрешения поочерёдно сравниваются с самым маленьким - с 640*480 - и по размеру кадра (res) и по числу фпс (fps). После этого мы берём полученное число res и делим его на число fps - этими цифрами заполнены четвёртая и шестая строчки - причём чем больше эти цифры, тем лучше. Если бы зависимость числа фпс от разрешения была прямой (т.е., на сколько мы бы увеличили разрешение, на столько бы упала производительность), и мы бы построили по таким цифрам график, то у нас бы получилась бы прямая линия, задирающаяся вверх - но, по крайней мере, в большинстве игр на большинстве видеокарт эта зависимость непрямая, и график получается в виде более-менее плавной, относительно низкой кривой.
Т.к. для Эп1 720*576 и 800*600 слабо отличаются от 640*480 по числу фпс, данные по этим разрешениям я не привожу.

7. Анализ результатов для Episode One.
а). Ядро грузит!

Эп1 грузит мой ПК куда сильнее ХЛ2, и теперь мы отчётливо видим резкое падение фпс от меньшего разрешения к большему - разница примерно в три раза. Тем не менее, средние фпс для первых трёх разрешений довольно близки - неужто действительно существует некий "потолок фпс"? Забавно, что на примере Эп1 подтверждается правило, выведенное для ХЛ2 - даже этот билд Source'a не любит разрешение 640*480. Я даже перепроверил результат для этого разрешения - получилось 102,7 - очень близко. И я не просто так выписал в отдельную колонку минимальный фпс для ядра. Сравните и вдумайтесь - 52-55 фпс для 640*480 и жуткое падение ниже 40ка для 720*576! Шейдеры создают громадную нагрузку на систему (даже несмотря на то, что я сильно поднял частоту шейдерного домена). Но в остальных местах карты, где ядро не видно (правда, на демке я смотрел на ядро немало времени - и из панели управления (да ещё с зумом), где осталась Аликс, и пробегая снизу), фпс достаточно высок, чтобы компенсировать потерю драгоценных кадров на ядро и перегнать более низкое 640*480 - есть резон повторить эксперимент для какой-нибудь другой карты из Эп1, а может, и для всё той же d1_canals_01 - возможно, тогда получился бы и отличный результат для 800*600. Для 800*600 минимальный фпс у ядра почти совпадает с 720*576.
б). Выводы.
- Episode One также не любит 640*480;
- в Episode One больше всего ресурсов съедают продвинутые шейдеры и спецэффекты, именно они съедают ресурсы сильнее всего, и особенно зависимы от разрешения;
- в зависимости от типа карт наибольшей производительности в Episode One можно добиться либо на 800*600 на картах с минимумом шейдеров (предположительно), либо на 720*576 на картах с огромным кол-вом шейдеров (Ядро Цитадели).

8. Анализ результатов для Episode Two.
Переходим к тяжёлой артиллерии. Тут уже ни о каком "потолке фпс" речи не идёт, фпс стабильно падает при повышении разрешения. Наиболее полезной для нас является таблица 3, точнее - самая последняя её строчка. И что мы видим? Постепенное наращиваение отношения res/fps!
Ещё можно сделать вывод, что, по крайней мере, по сравнению с Эп1, у Эп2 с увеличением разрешения падение фпс происходит менее интенсивно...

Часть 2. d1_canals_01.

В этой части описаны результаты измерений из Эп1&Эп2 на карте d1_canals_01. Для этого я просто подключил GCFку с картами ХЛ2 к этим играм и записал на данной карте демку. На данной мапе при запуске на новых движках наблюдается баг - странные тормоза при появлении поезда, со слайдшоу 1 кадр на 2-3 секунды - но при воспроизведении демки этих тормозов и след простыл. Также учтите, что записывать демки пришлось по новой, так что ни в коем случае не сравнивайте эти результаты с результатами под ХЛ2 и друг с другом, хотя путь примерно тот же, но всё же есть много отличий, из-за чего средний фпс в Эп1 даже чуть выше, чем в ХЛ2.

2. Таблицы результатов.

resolutionframes per second
Таблица 4. Замеры фпс.
resolution
aspectkilopixelsEP1EP2
640*4804:3307,282,5778,51
720*5765:4414,7291,8686,64
800*6004:348091,285,65
1024*7684:3786,43285,4581,63
1152*8644:3995,32875,3569,79
1280*9604:31228,859,4459,81
1280*10245:41310,7257,9656,02















Таблица 5. Сравнение фпс в Эп1 и Эп2 с разрешением 800*600.
resolution1024*768
1152*864
1280*960
1280*1024
res*1,642,072,562,73
fps** EP1
1,071,211,531,57
res/fps EP1
1,531,711,671,74
fps** EP2
1,051,231,431,53
res/fps EP2
1,561,681,791,78













* res=resolution/(800*600) ** fps=fps(resolution)/fps(800*600)

10. Анализ результатов.
Из этих результатов мы чётко видим, что разрешение 640*480 таки действительно нелюбимо Source'ом, причём явно всеми его версиями - даже для Эп2 на более высоких 720*576, 800*600, и (о ГО-сспади!) 1024*768, счётчик кадров в секунду выдаёт большие значения. Отсюда делаем вывод, что владельцам старых ПК стоит трижды подумать и дважды проверить, действительно ли стоит ставить именно такое разрешение.
Что касается каких-то конкретных разрешений, то 720*576 всё же даёт большие циферки, нежели соседнее 800*600.
Налицо и существование некоего "потолка фпс".
Возможно, любопытно будет взглянуть на графики, выражающие зависимость изменения фпс от изменения разрешения - данные взяты из таблицы 6, колонки 1 и 2 для Эп1 и 1 и 4 для Эп2. Как видите, в Эп2 график получился более гладким, т.е. фпс зависит от разрешения в меньшей степени, чем в Эп1.






Примечание: убедительная просьба НЕ редактировать данный документ без согласия его автора (xDDGx). Любые несогласованные правки будут убраны.

Нравится18
Комментарии (12)
  • 0
    xDDGx
    я так понял что у тебя достаточно быстрый комп, но он тормоит(в еп1и 2).
    про поезд - у меня ноутбич с параметрами
    Intel Pentium processor T4300 (2.1 GHz FSB)
    ATI Mobility Radeon HD 4570 Up to 2304 MB HyperMemory
    15.6" 3D HD LSD
    4 GB Memory
    320 GB HDD
    Acer Nplify 802.11 b/g, вобщем, немного меньше минимальных системных требований игры.
    средний FPS 30 к/с, на максимальной графе , но это кокрас нормально...
    ...про поезд)) у меня стоял orange box 2006 года, и в хл2 при появлении поезда игра ужасно глюкала ~20 сек а также тогда, когда я смотрел на комбайновские стёкла(которые "плавают"). хл2еп2 я не мог запустить сразу на макс графе, фпс падал до 9. надо было зайти в игру на макс игровой графе, затем свернуть и поставить настройки видюхи на макс.
    при приобретении орандж бокса обновы мая 2011 г. , все глюки пропали
  • 0
    и это всё на разрешении 1366*768
  • 0
    xDDGx
    я так понял что у тебя достаточно быстрый комп, но он тормоит(в еп1и 2).
    В разогнанном состоянии (а в дохе результаты по референсным частотам) меня фпс в Эп1 и Эп2 устраивает, не забывайте, что тестирования проводились на бэкграундах и в началах игр, где максимум спецэффектов и тормозов.
    А также имейте ввиду, что теперь, после великого обновления сорца 2010 года и ХЛ2, и Эп1, и Эп2 - на одной версии движка. Так что инфа, изложенная в этом дохе - устарела.

    немного меньше минимальных системных требований игры.
    Ты с ума сошёл, минимальные требования намного ниже твоих. Старые ХЛ2 и Эп1 спокойно запускались на моём старичке с MX440 64 МБ видеоОЗУ, 256 МБ ОЗУ и 1,8 ГГц AMD Sempron 2200+, хотя, конечно, фпс был низким, но стабильным - играть было можно даже в Эп1. И вообще, если у тебя тормозит - снижай настройки, ГРАФОН того не стоит, можно, напр, пожертвовать сглаживанием до 2X - картинка останется нормальной, а выигрыш в производительности значительный.

    и в хл2 при появлении поезда игра ужасно глюкала ~20 сек
    Неизвестно, с чем это связано, отмечу, что такое поведение наблюдается и у меня, но только в SMOD'e.

    хл2еп2 я не мог запустить сразу на макс графе, фпс падал до 9. надо было зайти в игру на макс игровой графе, затем свернуть и поставить настройки видюхи на макс.
    Юзай параметр -console для запуска игры, тогда карта-бэкграунд не станет загружаться, да и игра запустится быстрее.

    и это всё на разрешении 1366*768
    Не самый распротсранённый видеорежим на момент выхода ХЛ2, есть подозрение, что Сорц - по крайней мере, старых версий - его не любил. Я вроде делал замеры для широкоформатных режимов (благо что у меня есть второй монитор 16801050), но эти результаты... Или не выкладывал, или не доделал... В общем, забил. В любом случае, эта инфа больше для интереса, чем для какого-то практического использования, и, нужно понимать - а я, на то время, об этом не подумал - что все причуды могут быть вызваны не столько движком, сколько видеокартой. К примеру, возможно, на самом деле, не Сорц не любит видеомоуд 640*480, а моя видяха... Для выяснения этого нужны более глобальные тестирования, с применением разных моделей и всё-такое.
  • 0
    Cvoxalury
    Неизвестно, с чем это связано, отмечу, что такое поведение наблюдается и у меня, но только в SMOD'e

    И в целой плеяде старых пираток это есть.

    Хе, я даже на пиратках (а у меня по сути было только три — хл2 от псевдофаргуса, сорс 7, сборная хл2-эп1 пиратка, и ОБ, на котором не работали хл2 и эп1 (там просто вырезали мапы, сцены) — на первой и второй поезда тормозили) я даже при появлении бэка с коаста спешил поскорей ввести нужную мапу в консоль или сейв загрузить, пока поезд не начал ехать.

    инфа, изложенная в этом дохе - устарела

    Для модов на СДКБазе не так и устарела…
  • 0
    xDDGx
    я даже при появлении бэка с коаста спешил поскорей ввести нужную мапу в консоль или сейв загрузить, пока поезд не начал ехать.
    о__О Мне повезло, таких поездатых глюков не наблюдал, даже в Смоде глючит только поезд в каналах, с другими проблем не наблюдалось...
  • 0
    Combine 999
    я даже при появлении бэка с коаста спешил поскорей ввести нужную мапу в консоль или сейв загрузить, пока поезд не начал ехать.
    В моей ОБ-пиратке так же. И, насколько я помню, в лицухе до глобального обновления у меня тоже это было.

    о__О Мне повезло, таких поездатых глюков не наблюдал, даже в Смоде глючит только поезд в каналах, с другими проблем не наблюдалось...
    У меня он тормозит в каналах (несколько раз: когда обычный довоенный проезжает, в месте где ГО-шники бочку подожжённую скатывают и когда в воду прыгаешь) и Дороге 17 (в месте, где нужно его обгонять (ну или убегать от него, я обгонял обычно) и на бэкграунде с мостом). Причём в модах и после обновления эти проблемы не наблюдаются.
  • 0
    Cvoxalury
    когда обычный довоенный проезжает, в месте где ГО-шники бочку подожжённую скатывают и когда в воду прыгаешь

    Но ведь там определённо едет бритвопоезд.
  • 0
    Combine 999
    Но ведь там определённо едет бритвопоезд.
    Нет, я говорил о первом, по которому мы прыгаем на другую сторону.
  • 0
    xDDGx
    (несколько раз: когда обычный довоенный проезжает, в месте где ГО-шники бочку подожжённую скатывают и когда в воду прыгаешь)
    Всё верно, три поезда - три зависания... В моём Смоде зависал только второй, поезд-лезвие.

    (в месте, где нужно его обгонять (ну или убегать от него, я обгонял обычно)
    xD Суров))

    Причём в модах и после обновления эти проблемы не наблюдаются.
    В общем, проблема зависит от версии Сорса. Всё-таки, хорошо, что Вэлв не забывает про свои игры и обновляет их, исправляя допущенные ляпы.
  • 0
    xDDGx
    Всё под контролем))))
    особенно после покупки компа =)
    если что, могу сообщить сист. требования
    при приобретении орандж бокса обновы мая 2011 г. , все глюки пропали- я писал про то, что поезда (на ст. ноудбиче)
    секундно глюкали, когда исчезали?
    783001
    И в целой плеяде старых пираток это есть-на оран. боксе(2006г. пир.)пока глюк поезда не встречал
  • 0
    я писал про то, что поезда (на ст. ноудбиче)
    секундно глюкали, когда исчезали?
    - забыл писал или нет8)
  • 0
    Я накаркал-все глюки поезда остались:*-(
B
i
u
Спойлер