Не так давно мы рассматривали использование игры Serious Sam в качестве бенчмарка. Сейчас настало время попробовать Max Payne в той же роли, за что мы благодарим наших коллег из 3DCenter.
По умолчанию Max Payne не предоставляет никаких возможностей тестирования, в связи с рекомендацией программистов использовать для этого 3DMark. Конечно, 3DMark вещь прекрасная, но все же тестировать игру как-то ближе к реальной жизни.
Первое, что пришло нам в голову - использовать программу fraps. Мы попробовали измерить конечный ролик в игре, и результат был получен, но он оказался слишком неаккуратным. Fraps показала намного меньше fps, чем внутренний fps счетчик Max Payne: счетчик показывал 25 fps, fraps - 15 fps. Разница составляла около 40%. На PC Games Hardware получили тот же результат. К тому же следует добавить, что Max Payne измеряет множество других fps значений: минимальный fps, максимальный fps и средний fps.
А почему тогда мы не можем просто брать средний fps? К сожалению, это значение плохо подходит, так как эти "средние" значения отличались высокой нестабильностью и плохо отражали реальную частоту кадров. Поэтому не используйте showextendedfps для тестирования. То, что Max Payne показывает как средний fps ("avg fps") на самом деле таковым не является.
Мы постарались протестировать значение "avg fps" чтобы найти настоящее значение этого числа. Насколько мы можем судить, оно показывает среднее значение только за последнюю секунду или две. У нас появилась идея: а что, если мы сможем растянуть этот короткий промежуток на полную длину демо (скажем, 30-100 с)? Ведь тогда мы сможем использовать команду showextendedfps для получения среднего значения fps.
Мы нашли человека, который смог покопаться в параметрах движка и расширить промежуток времени. Как оказалось, в игре измеряется не одна или две секунды (как мы предполагали), а среднее значение за последние 120 кадров.
Мы изменили это значение на 10 млн кадров. Этого должно хватить. :-) Все было реализовано как MOD для Max Payne. Мы также выполнили некоторую оптимизацию игры для тестирования. MOD использует записанные игры из корневого каталога Max Payne, поэтому он не блокирует обычные записи. Мы использовали записанные игры с PC Games Hardware.
Мы добавили в MOD возможность автоматической индикации расширенных значений fps при выборе команды showextendedfps (вместо значений по умолчанию). Но мы не включили автоматическое включение индикации fps, так как fps должны считаться только после загрузки записанной игры, а не раньше.
После того, как мы создали первую версию MOD для тестирования, пришла идея добавить некоторые игровые сцены к MOD, чтобы тестирование происходило в различных условиях. В конце концов мы включили еще три записанные игры в MOD, одну с Thilo Bayer, одну с Raphael Maur, и одну демо с Anandtech. После этого наш тестовый MOD был готов.
Тестирование
1. Первое, с чего вам следует начать - скачать сам MOD2. Запустите игру со следующей командной строкой "...MaxPayneMaxPayne.exe -skipstartup -developerkeys". Для этого вы можете отредактировать ярлык для запуска программы, как показано на рисунке. Изменения выделены красным.
3. Запустите игру. В меню опций вы можете указать необходимые настройки графики. Обратите внимание на две вещи.
Опция "anisotropic" не указывает вид анизотропной фильтрации. Различные видеокарты могут реализовывать анизотропную фильтрацию по-разному. Поэтому на данный момент мы рекомендуем отключать эту настройку для получения более достоверных данных.
Также вам придется проверить настройки резкости текстур (Texture sharpness) в настройках видео, так как резкость влияет на производительность, качество картинки, и в конечном итоге на достоверность результатов.
4. Убедитесь в том, что вы выбрали правильную видеокарту в настройках, разрешение экрана и режим T&L. Также в строке 'Выберите требуемую игру"/"Choose Customized Game" должно стоять "benchmark-mod".
5. Следующий шаг очевиден. Начните тестирование с помощью указания "Load Benchmark Scene" и выбора одной из четырех доступных сцен.
6. В отличие от Quake III Arena вам придется включать и выключать счетчик кадров вручную в требуемых местах сцены. Очень важно указывать одинаковые места сцен для получения достоверных результатов. Ниже мы детально рассмотрели каждую тестовую сцену.
PCGH's Final Scene No.1 (VGA-Demo)
Нажмите F11 сразу же после загрузки демо!
Снимите показания счетчика когда Макс Пейн говорит "I released my finger from the trigger", в это время он смотрит вниз с крыши небоскреба Aeries на горящий вертолет. После этой сцены экран почернеет и демо закончится. Очень важно снять показания счетчика перед почернением экрана. Снимайте значение "Avg:" (помечено красным).
PCGH's Final Scene No.2 (CPU-Demo)
Нажмите F11 сразу же после загрузки демо!
Считайте показания счетчика когда Макс Пейн упадет на пол. На заднем плане вы увидите его руку, ударяющуюся о пол. После этой сцены демо закончится, и вы ничего не увидите кроме черного экрана. Очень важно снять показания счетчика перед почернением экрана. Снимайте значение "Avg:" (помечено красным).
3DConcept's Shooting Alex Demo
Нажмите F11 сразу же после загрузки демо!
Снимите показания счетчика когда закончится заставка и игра вернется в нормальный режим. Снимайте значение "Avg:" (помечено красным).
AnandTech's Truck Exploding Demo
Замечание: на Anandtech эта сцена называется "заставка между главами 4 и 5 первой части".
Демо начинается с рисованной заставки. Не нажимайте здесь F11. Вы можете пропустить рисованную заставку с помощью двойного нажатия ESC.
Нажмите F11 сразу же после этой сцены!
После заставки игра возвращается в нормальный режим, и Макс Пейн говорит: "before the explosive make over". Считайте показание "Avg:" (помечено красным), когда Макс произносит последнее слово "over".
7. Не запускайте тест второй раз в этом же сеансе Max Payne. Всегда выходите из игры и запускайте игру заново для повторного теста. Связано это с тем, что при запуске счетчика он будет считать каждый кадр до конца игры.
Еще раз повторим: запускаете игру, запускаете демо, считываете показания счетчика, выходите из игры. Никогда не тестируйте дважды без перезапуска игры или не запускайте счетчик ранее положенного срока.
Заключение
Несколько слов про минимальный fps: иногда игра показывает правильное значение, иногда "0:00". Мы рекомендуем пробовать до тех пор, пока не будет выведено правильное значение :-)
Имейте в виду, что если среднее значение высчитывается из нескольких тысяч кадров, то минимальное - только из одного. Каждый специалист по статистике посоветует вам не делать скоропалительных выводов пока вы не соберете несколько результатов. Скажем, это то же самое, что выбирать президента голосом всего одного человека.
Вернемся к нашим четырем демо. Мы предпочитаем первое демо "PCGH?s Final Scene No.1". Второе слишком коротко, в третьем слишком мало действия на экране, и в четвертом получаются слишком высокие средние результаты, не соотносящиеся с остальной игрой. Ведь одно из главных достоинств хорошо отобранной последовательности сцен заключается в том, что она отражает среднее значение fps по всей игре. По этому критерию лучше всего подходит именно первое демо.
Конечно, мы понимаем, что недостаточно создавать тестовую сцену лишь для сравнения разных видеокарт. Читатель предполагает получить осмысленное значение fps, которое реалистично отражает частоту кадров в игре. Но это всего лишь наш субъективный подход, поэтому мы включили в MOD не одну, а несколько сцен, так что каждый может выбрать по своему вкусу.
Дополнительные материалы:
Скачать MOD можно здесьРуководство по настройке и оптимизации Max Payne
Обзор игры "Max Payne"
Unreal Tournament 2003 в роли бенчмарка
3DMark 2003: увидеть будущее
Max Payne в роли бенчмарка
Serious Sam в роли бенчмарка
Тестовый пакет 3DMark 2001 Pro
Тестовый пакет 3DMark 2000
Понимание и расчёт скорости заполнения (fillrate) акселератора