Использованы рекомендации официального гайда "Benchmarking HL2"
Введение
Долгие годы все - и заядлые геймеры, и просто "любители", и теоретики индустрии, да и просто каждый человек, хоть немного знакомый с понятием "3D игры" - все ждали Half-Life2. Сколько предположений, порой (как сейчас уже кажется) фантастических, сколько надежд, интриг было вокруг этой, без сомнения, самой долгожданной игры'2004 - перечислять бесполезно, их слишком много накопилось за время утомительного ожидания.
Слухи копились, интриги множились. Вечный спорный момент всех близких к индустрии, и просто интересующихся текущим положением вещей, людей - "ATI vs NVIDIA", в итоге перерастал в обсуждение "DOOM3& Half-Life2", будь то в кулуарах на презентации, или вечером за рюмкой кофе, или в размышлениях обозревателей в материалах соответствующей тематики. Море стрёмных порой результатов тестирования на всевозможных альфах, бетах, и прочих "стресс-тестах" наводнили Интернет.
Конечно, сомневающиеся (особенно рьяные фанаты DOOM3), могут долго спорить на тему "какая игра больше всколыхнула общественность в 2004", но достаточно почитать конференции, где геймеры все стран делятся впечатлениями, да и очень показательно этот момент отражает голосование, которое было проведено нами не так давно.
И вот, наконец, оно свершилось, и мы можем детально разобраться в этой куче предположений, слухов, интриг и предварительных результатов. Оценить новое творение Valve с профессиональной точки зрения - провести исследование производительности практически всех современных карт от ATI и NVIDIA в самой долгожданной игре уходящего 2004 года.
А начнем мы с прояснения нюансов методики тестирования.
Half-Life 2 очень требовательна к ресурсам видеокарты, в ней интенсивно используется обработка шейдеров и её невозможно игнорировать как новую среду тестирования. В Half Life 2 можно записывать и воспроизводить реальные игровые сцены (timedemo). Записав несколько timedemo-сцен, демонстрирующих различные аспекты движка Source, можно получить максимально точные показатели производительности графики.
Как тестировать Half-Life 2
Показатели FPS в Half-Life 2 для карт high-end очень высокие (более 200 fps в некоторых сценах). Обсчет графики в большей степени привязан к ресурсам процессора, нежели чем к другим составляющим. Для HL2 настоятельно необходим очень мощный процессор! Повышенные требования к ресурсам процессора объясняются просто - сложная физика, детализация, AI, синхронизация мимики, сетевого обмена данными и т.п.
Чтобы получить точную картину производительности в Half-Life 2 как тестовой среде, необходимо выбрать такую сцену, где уровень FPS порядка 50 или ниже. Это позволит создать такой сценарий тестирования производительности, при котором разность даже в 10 FPS при использовании различных карт (или с другими настройками) будет заметна невооруженным глазом. Одна из самых сложных карт, нафаршированная всевозможными шейдерами, это карта canal. Реализация натуралистичной воды потребовало создания множества сложных шейдеров.
Перед записью собственных timedemo-сцен проверьте, что показатели производительности действительно меняются при выборе различных настроек графики (напр., разрешение, полноэкранное сглаживание (АА) и т.д.).
Рекомендации по тестированию
- Система цветовой индикации счетчика FPS (("cl_showfps 1"), специально разработанная Valve, очень удобна при записи ваших timedemo-сцен. Зеленый цвет индикации обозначает высокую скорость FPS, желтый – среднюю, красный – медленную. Для записи следует выбирать такую сцену, в которой цвет индикатора FPS желтый, иногда меняющийся на красный - иначе результаты тестов будут сильно привязаны в ресурсам процессора;
- Всегда отключайте загрузку движка Steam в фоновом режиме при прогоне тестов. На результат может существенно влиять дополнительная нагрузка на процессор;
- Тестовый компьютер должен быть отключен от Интернета, чтобы исключить загрузку движка Steam;
- Для проведения тестов рекомендуется установить самые последние версии драйвера CATALYST и ForceWare, пусть даже в их бета-версиях. ATI и NVIDIA сейчас усиленно исправляют в своих драйверах все, что можно поправить для таких игр как DOOM3 и HL2.
Запуск тестов из консоли
Большинство команд для тестирования в Half-Life 2 доступны из консоли во время игры. С помощью этих команд можно загружать выбранные карты, записывать демо-сцены, проигрывать их и замерять производительность. Чтобы активировать консоль из игры Half-Life 2 из главного меню последовательно выберите пункты:
Options -> Keyboard -> Advanced -> Enable Developer Console
Если у вас фирменная английская версия игры, она очень просто русифицируется - досточно зайти в настройки Steam и выбрать нужный язык. Русифицируется абсолютно все - и игровые интерфейсы и речь. Объем скачивания будет достаточно велик.
Чтобы открыть консоль, нажмите на клавишу '~'.
Команды консоли в Half-Life 2:
Команды Результат bind key command Назначение выполнения команды клавише. Например, клавише F1 можно назначить выполнение функций "record" и "stop" во время записи демо-сцен (bind f1 "record mytimedemo") cl_showfps 1 Включение экранного индикатора скорости FPS. map map_name Загрузка выбранной карты (например map d1_canals_09) playdemo demo_name Воспроизведение демо-сцены на нормальной скорости (не в режиме "timedemo") record demo_name Запись всех действий пользователя до нажатия команды "stop".
Half-Life 2 не выполняет автоматического приращения имен демо-сцен при записи новых. Если клавише назначена функция записи, то при следующем запуске команды bind в ее аргументе укажите новое имя демо-сцены. В противном случае Half-Life 2 перезапишет уже существующую демо-сцену. Все файлы ".dem" записываются в каталог "HL2/HL2". screenshot Сохранение скриншота в каталог Half-Life 2 , т.е. "C:ValveSteamSteamAppsemail@address.comhl2hl2screenshots" Скриншоты сохраняются в формате *.tga (файлы текстур) stop Остановка записи текущей демо-сцены timedemo demo_name Воспроизведение записанной демо-сцены на максимальной скорости и вывод среднего показателя framerate на консоль. Запись результатов в файл hl2hl2source.csv. timedemoquit demo_name Воспроизведение записанной демо-сцены на максимальной скорости и выход из Half-Life 2 по завершении. Сохранение результатов в файл hl2hl2source.csv. Данная команда полезна для автоматизации процедур тестирования.
Для записи собственной демки необходимо произвести следующие операции:
- Запустить игру
- Вызвать консоль '~'
- Загрузить нужную карту: "map" и нажать пробел - тут же выскочит весь список доступных карт
- Потренироваться на карте и когда будете готовы, вызвать консоль, набрать "record название_демки" - и вперед.
- Остановить запись - "stop"
Команда "map" вообще очень удобна, если вы хотите просто побродить по картам без полного прохождения игры. А использование консоли позволяет по-черному читить и мухлевать. В конце концов, первоначальное назначение консоли - это отладка программы. Полный список всех читов доступен по этой ссылке: Half-Life 2 - Cheats
Запуск тестов из командной строки
При выполнении последовательного запуска тестов с помощью команд консоли Half-Life 2 из пакетного файла необходимо учитывать следующие особенности. Выход из записи демо-сцены в Half-Life 2 выполняется по команде timedemoquit, но поскольку HL2 запускается от движка Steam, который отключается только через некоторое время после окончания записи демо-сцены, то перед запуском следующего теста необходимо дождаться завершения Steam.
Некоторые функции тестирования недоступны даже из игровой консоли. Например, функции "Nosound" и "DXLevel". Чтобы получить к ним доступ, создайте ярлык программы Half Life 2 (см. раздел "Ярлык программы на рабочем столе") и в конец команды консоли добавьте соответствующие аргументы запуска.
Имеет смысл создать несколько ярлыков, каждый из которых соответствует определенной комбинации различных настроек, напр., разрешения, AA/AF и имени timedemo-сцены.
Аргументы запуска Half Life 2 из командной строки
-console Получение доступа в консоль Half-Life 2 в процессе игры (нажатие ~) -nosound Отключение звука в режиме timedemo (прим.: некоторые тем не менее будут воспроизводиться при запуске игры) -width dimension Настройка разрешения по горизонтали -height dimension Настройка разрешения по вертикали (т.е. "-width 1024 -height 768") +mat_antiaslias AA_level Включение режима Mutli-Sample Anti-Aliasing (0, 2, 4, 6). +mat_forceaniso aniso_level Включение режима Anisotropic Filtering ( 1=нет, 4, 8, 16) +timedemo demo_name Воспроизведение записанной демо-сцены на максимальной скорости, вывод показателя FPS. Сохранение результатов в файл hl2hl2source.csv. +timedemoquit demo_name Воспроизведение записанной демо-сцены на максимальной скорости и выход из программы по завершении. Сохранение результатов в файл hl2hl2source.csv. Данная команда полезна для автоматизации процедур тестирования. -dxlevel dx_level Принудительный запуск графического акселератора с указанными параметрами обработки шейдеров (90, 81, 80), если таковые доступны. Это полезно для сравнения аналогичных продуктов (apples-to-apples)(напр. линейки GeForce FX), где DirectX® 9.0 по умолчанию не используется для обработки шейдеров Half-Life 2. Т.e., аргумент "-dxlevel 90" используется для принудительного запуска обработки шейдеров DX 9.0, а "-dxlevel 81" – для запуска шейдеров 8.1 +r_fastzreject on_off Запуск (1) или отключение (0) глубины прохода (depth fill pass), улучшающей графическую производительность обработки сцен, зависящей от ресурсов видеокарты (при высоком уровне разрешения или AA + AF) . На данный момент для продуктов NVIDIA это значение по умолчанию ON (вкл), для продуктов ATI - OFF (зависит исключительно от идентификатора ASIC-ID).
Примечание
При запуске тестов из командной строки без включения AA и AF укажите аргументы +mat_antialias 0 и +mat_forceaniso 1. Если эти аргументы не заданы, Half-Life 2 будет использовать текущие настройки, заданные в панели управления игры (которые отключать нельзя). См. раздел "Авто-конфигурация".
Тестирование
Для тестов были записаны собственные демки на картах "d1 Canals 09" (canal-3dnews.zip - 1,5Mb) и "d1 Trainstation 02" trainst-3dnews.zip - 1,4Mb. Так называемые "официальные демки ATI", вызвавшие в свое время обвинения в мухлеже, на актуальной версии HL2 уже не работают.
Вычисление шейдеров в сценах с водной поверхностью из первой демо - одна из самых сложных операций - интенсивно используется обработка эффектов отражения и преломления света на поверхности воды. Для передачи реальности града пуль, выпускаемых вертолетом, а также солнечных бликов, используется альфа-блендинг.
В этой сцене производительность в основном расходуется на обработку шейдеров водной поверхности. Из технического комментария по HL2 следует, что одновременно на этой карте реализовано как минимум пять эффектов:
- обработка шероховатостей рельефа;
- отражение;
- преломление;
- эффект Френеля;
- темные сцены обрабатываются с помощью эффектов объёмного тумана.
Невероятно реалистичный уровень детализации в Half-Life 2 наиболее отчетливо виден именно на сцене городской площади (карта trainstation вторая демка). Здания выглядят почти как на фотографии. На примере окон вокзала показан пример обработки эффектов отраженного света.
Данная сцена привязана к ресурсам процессора в конфигурации high-end.
Переходим к тестированию, но для начала несколько тестов для определения влияния звуковой подсистемы, памяти и процессора.