Оригинал материала: https://3dnews.ru./173019

Unreal Tournament 2003 в роли бенчмарка

Введение

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

Но сегодня речь пойдет не о синтетике - мы рассмотрим игру Unreal Tournament 2003 в роли бенчмарка. Как мы и ожидали, компания Epic включила в состав UT2K3 полный набор инструментов тестирования, позволяющих моделировать единую среду для измерения производительности в игре. Игра базируются на графическом движке - Unreal Engine. Сам движок построен на базе DirectX7 и использует функции TCL (Transformation, Clipping and Lighting), доступные в видеокартах с T&L, при этом поддержка пиксельных и вершинных шейдеров DirectX 8 минимальна, даже если карта и имеет аппаратную поддержку. В видеокартах с DirectX 8 для многопроходной отрисовки данных ландшафта и их объединения используются пиксельные шейдеры. Разница в производительности у видеокарт DirectX 7 и DirectX 8 минимальна, а по качеству изображения они практически идентичны. В UT2K3 широко представлены кубические карты, многократно увеличилось число полигонов и размер текстур значительно больше, чем у предшественника.

Встроенный тестовый инструментарий

Для начала рассмотрим, что вошло в состав встроенного бенчмарка, и затем перейдем к процедуре тестирования с помощью созданной сайтом [H]ardOCP пакетной утилиты.

Как вы уже заметили, файл benchmark.exe находится в каталоге C:UT2003System. По запуску программа предлагает выбрать из списка значение разрешение, на котором будут проводиться тесты, после чего будут выполнены два flyby-теста и два bot-матча и по каждому будет выведен средний результат.


 Встроенный benchmark.exe

А вот здесь и наступают проблемы. Во-первых, по результатам botmatch-тестов невозможно точно сравнить производительность систем. В botmatch-тестах используются "боты", т.е. игроки, управляемые AI. Их поведение сильно зависит от мощности процессора. Неравномерность загрузки процессора во время botmatch-тестов заметно влияет на поведение ботов. Причем, настолько, что при прочих равных условиях даже на одной и той же машине результаты получаются совершенно разные. Другая проблема в том, что результат выводится как среднее из показателей двух flyby-бенчмарков. Результаты по каждому отдельному тесту можно просмотреть в файлах "benchmark.log" или "lowframerate.log" в каталоге C:UT2003Benchmark. Но это очень неудобно при большом количестве тестов производительности. Причем, в такой методике кроме экранного разрешения никакие другие параметры изменить нельзя. Поэтому в скриптовый файл приходится вносить изменения. Но в большинстве игр и таких-то средств тестирования нет.

При каждом запуске, benchmark.exe использует одни и те же настройки качества, поэтому результаты flyby-тестов, полученные в разных системах, постоянны. Для выполнения тестов программа benchmark.exe использует файлы настроек MaxDetail.ini, MinDetail.ini, MaxDetailUser.ini и MinDetailUser.ini из каталога C:UT2003BenchmarkStuff. Значение параметра MinDesiredFrameRate постоянно и равно 35FPS, хотя, как выяснилось, бенчмарк, запускаемый с ключом -benchmark, игнорирует значение параметра MinDesiredFrameRate, поэтому на результатах тестов он никак не отражается. Эта программка очень полезна для проведения быстрых flyby-тестов и сопоставления результатов, но она не дает многих возможностей настроек, существенных для тестирования.

Прибегаем к старому проверенному методу - пакетным скриптам. В каталоге C:UT2003Benchmark имеется набор готовых пакетных скриптов - семь скрипт-файлов для запуска botmatch-тестов и семь для flyby-тестов. Как уже отмечалось, botmatch-тесты мы проводить не будем, а сразу перейдем к flyby-тестам. Тесты проводились с картами Antalus, Asbestos, Citadel, Face3, Inferno, Phobos2 и SunTemple. В качестве эталонных benchmark.exe использует flyby-карты Antalus и Asbestos. Запуск пакетных скриптов для сравнения производительности по семи, а не двум, картам имеет очевидные преимущества. А теперь заглянем внутрь одного из пакетных скриптов. Открываем файл flyby-antalus.bat и видим следующее:

..Systemut2003.exe dm-antalus?game=engine.gameinfo exec=..BenchmarkStuffflybyexec.txt -benchmark -seconds=77 -nosound %1

Две точки в начале строки обозначают относительный путь, то есть, для корректной работы этот пакетный файл должен располагаться в соответствующем каталоге. Скрипт вызывает на выполнение файл ut2003.exe из каталога UT2003System, которому дается команда запустить карту dm-antalus, используя настройки engine.gameinfo. После этого запускается *.txt-файл, в котором прописана пара команд. Запуск программы с ключом –benchmark переключает ее в режим бенчмарка, а ключ –seconds=77 задает продолжительность выполнения flyby-теста. Ключ –nosound предписывает отключить звук на время выполнения flyby-теста. По умолчанию будет вызван файл ut2003.ini из каталога UT2003System. В тестовой утилите версии Demo этот INI-файл переписывался всякий раз после выполнения тестов с разными настройками качества. В полной версии игры бенчмарк работает уже несколько по-другому, что должно вам понравиться.

Результаты запуска одного из этих пакетных файлов записываются в файлы benchmark.log и lowframerate.log в том же каталоге UT2003Benchmark. В них представлены результаты по минимальным/средним/максимальным и итоговым средним показателям FPS. В файле lowframerate.log данные представлены более структурировано - здесь имя карты выведено в заголовок каждого теста. В версии Demo это основной файл для записи результатов. Детальная расшифровка результатов каждого теста приведена в каталоге UT2003BenchmarkCSVs. Эти .CSV файлы можно прочесть с помощью Excel. В них приводится детальная информация обо всем, что происходило при отработке каждого кадра во время выполнения flyby-теста. Для наших тестов такая детализация излишняя. Для нас важнее возможность быстрее просматривать результаты по минимальным, максимальным и средним FPS, поэтому для просмотра этой информации после каждого теста будем использовать файл lowframerate.log. Как видите, использование комбинаций пакетных файлов позволяет писать очень эффективные тестовые скрипты, что мы и проделали.

Утилита UT2K3 Benchmark

Сайтом [H]ardOCP была создана удобная утилита для пакетного прохождения встроенного теста UT2003.

Как уже указывалось, в комплект игры входят два файла настроек качества: MaxDetail.ini и MinDetail.ini. Хотя их вполне достаточно, но изменение настроек 3D позволит вывести дополнительные результаты отдельно для High Quality и Low Quality. Внесенные изменения минимальны, но разница в показателях производительности по отношению к эталону оказалась существенной.

Изменения в настройках:

1. В файле MaxDetail.ini, в разделе [D3DDrv.D3DRenderDevice] параметрам DetailTexMipBias и DefaultTexMipBias присвоено значение -0.8. Более агрессивные LOD придают изображению больший контраст, но на максимальной детализации увеличивают нагрузку на аппаратные ресурсы. Далее, в этом же разделе [D3DDrv.D3DRenderDevice] включена тройная буферизация (присвоив параметру UseTripleBuffering значение True). Чтобы карты освещенности четче отображались при максимальной детализации и максимальном качестве, параметру UseCompressedLightmaps присвоено значение False.

2. В файле MinDetail.ini изменены следующие настройки. В разделе [D3DDrv.D3DRenderDevice] параметрам DetailTexMipBias и DefaultTexMipBias присвоены значения 0.8. Положительное значение LOD дает придает текстурам размытость контуров, но при этом позволяет повысить производительность. Отключаем тройную буферизацию и присваиваем параметру UseCompressedLightmaps значение True.

3. Для тестирования и сравнения показателей производительности процессоров и материнских плат в среде Unreal Tournament 2003 включен скрипт-файл CPU Test.INI, но для этого настройки должны быть минимальными. Тест проводился только с картой Inferno на разрешении 640х480. Поэтому все настройки качества пришлось перевести на минимальный уровень и отключить детализацию. Чтобы максимально загрузить процессор, мы отключили еще два параметра и присвоили параметрам UseHardwareTL и UseHardwareVS значения False. Это позволяет уменьшить влияние видеокарты на показатели производительности и перенести всю нагрузку на процессор.

В итоге, вместо того, чтобы запускать каждый пакетный файл поочередно, и была создан универсальный пакетный файл с необходимыми настройками качества. Это главное, что позволяет утилита "UT2K3 Benchmark". По запуску пакетного файла программа сначала обращается в реестр и ищет путь установки UT2003. То есть, она будет работать независимо от того, в каком каталоге установлена UT2K3. UT2K3 может располагаться на любом диске или в любом каталоге. Ввиду специфических особенностей считывания команд реестра данная программа работоспособна только в операционных системах Windows 2000 и XP.

Так выглядит пример скрипта для запуска одного из flyby-тестов:

“%UTLOC%Systemut2003.exe" dm-antalus?game=engine.gameinfo exec=%UTLOC%BenchmarkStuffflybyexec.txt -benchmark -seconds=77 -nosound ini=%UTLOC%BenchmarkCustom_MaxDetailCustom_MaxDetail.ini userini=%UTLOC%BenchmarkStuffMaxDetailUser.ini -1600x1200

где %UTLOC% - переменная пути к UT2K3. Здесь для запуска карты dm-antalus с настройками engine.gameinfo вызывается файл ut2003.exe. Кроме того, запускается тот же файл flybyexec.txt с соответствующими командами. Там же присутствуют ключи –benchmark, -seconds и -nosound. Наш пример отличается лишь строкой ini=line, которая предписывает скриптам запускать файл Custom_MaxDetail.ini и выполнять копирование пакетного файла в каталог с именем Custom_MaxDetail. Тем самым, наш INI-файл уже не будет переписывать файлы настроек UT2K3 и ничего не спутает, а все настройки будут сохранены.


 Утилита UT2K3 Benchmark

Скриншот интерфейса программы дает наглядное представление о работе этой тестовой утилиты. Проще не бывает.

  1. Распакуйте каталог в любое место на диске. Неважно, где вы ее разместите - заглянув в реестр, программа найдет путь к установке Unreal Tournament 2003;
  2. Запустите программу [H]ardOCP UT2K3 Benchmarker.exe;
  3. Выберите нужное разрешение(я);
  4. Выберите API (D3D, OpenGL).

Программа начнет выполнение тестов на доступных демках. Тест может выполняться довольно долго, в зависимости от количества выбранных разрешений. При выборе всех разрешений тест с одной настройкой quality занимает от 30 минут до 1 часа, особенно на медленной системе. Тестирование процессора проводится на разрешении 640х480 независимо от выбранного. Тест выполняется только с одной картой - Inferno.

По завершении тестов на экран будут выведены результаты в виде готовой html страницы - таблица результатов по Low FPS, Average FPS и High FPS для каждого теста:

Утилита UT2K3 Benchmark Utility доступна для скачивания отсюда. Файл распространяется свободно и без ограничений.

А теперь подробнее о том, как работает скрипт. При первом запуске EXE-файл отыскивает путь к установке Unreal Tournament 2003. Если программа найдена, то на панели становятся доступными соответствующие кнопки управления. По нажатию кнопки с соответствующим разрешением программа создаст новый каталог внутри каталога UT2003 и скопирует в него пользовательский INI-файл вместе с соответствующими настройками качества. После этого без вмешательства пользователя будут последовательно выполнены все тесты. По завершении всех тестов программа скопирует в этот каталог текстовый файл с результатами для выбранных настроек качества и на экране появится всплывающее окно, показывающее полученные результаты. В этот момент программа удалит из каталога UT2003 созданный рабочий каталог вместе с вашим INI-файлом и приведет все в исходное состояние.

Утилита выполняет 3 вида тестов: High Quality, Low Quality, и СPU Test. Любой из этих тестов в сочетании с функциями качества изображения - антиалиасинг и анизотропная фильтрация - можно использовать для детального и всестороннего тестирования производительности системы в игровых приложениях. Текущая версия утилиты работает только в операционных системах Windows 2000 и Windows XP.

Программа работает одинаково как в демке, оригинальной версии игры, так и в версии с патчем 2136. Патч не влияет на производительность в 3D. С марта 2003-го доступна уже третья модификация утилиты, нынешний номер версии 2.1.

Дополнительные материалы:

3DMark 2003: увидеть будущее
DooM 3 в роли бенчмарка
Max Payne в роли бенчмарка
Serious Sam в роли бенчмарка
Тестовый пакет 3DMark 2001 Pro



Оригинал материала: https://3dnews.ru./173019