Автоматизируем процесс замера производительности в играх (часть 3) (страница 3)
реклама
Lost Planet 2
Бенчмарк присутствует в любой версии игры. Замер производительности осуществляется средствами игры.
Код:
IniWrite, 1920x1080, C:\Users\RT_FM\Documents\capcom\LOST PLANET 2\config.ini, DISPLAY, Resolution ;Установка требуемого разрешения экрана. Для теста на нескольких разрешениях можно откопипастить весь код, изменяя только требуемое разрешение экрана в данной строке. IniWrite, 4, C:\Users\RT_FM\Documents\capcom\LOST PLANET 2\config.ini, CPU, JobThread ;Установка числа потоков CPU, которыми будет оперировать игра. Надо ставить в соответствие с количеством ядер процессора (ну или в соответствие с количеством потоков для HT). SetKeyDelay [, 20, 20] Run, Launcher.exe ;Запуск ланчера. рекламаSleep 2000 Send {Enter} ;В ланчере выбор режимов между DX9 и DX11. Если необходимо запустить DX11 режим, то перед этой строкой следует разместить команду "Send {right}" и полусекундную паузу. Sleep 25000 ;Пауза - время загрузки игры. MouseMove, 1, 1 ;Перестраховка, чтобы расположение курсора мыши не могло помешать правильной навигации по меню. Sleep 1000 Loop 3 ;Троекратный запуск замера производительности. { Sleep 2000 рекламаSend {down down} Sleep 100 Send {down up} Sleep 1000 Send {Enter down} Sleep 100 Send {Enter up} Sleep 1000 Send {down down} ;Выбор теста B. Sleep 100 Send {down up} Sleep 1000 Send {Enter down} ;Запуск теста. Sleep 100 Send {Enter up} рекламаSleep 150000 ;Пауза - время с момента начала запуска до момента показа результатов. Взята с запасом. Send {F10} ;Скриншот, запечатляющий результат. Sleep 1000 Send {BS down} ;Возврат к главному меню. Sleep 100 Send {BS up} Sleep 2000 } ;Окончание цикла тестирования. Send {up} Sleep 500 Send {Enter} ;Выход из игры. Sleep 5000 FileCopyDir, C:\fraps\Screenshots, C:\Test\LP2, 1 ;Копирование скриншотов с результатами в нужную директорию. FileRemoveDir, C:\fraps\Screenshots, 1 ;Чистка папки с скриншотами. ExitApp ;Окончание работы скрипта. Numpad0::ExitApp ;Горячая клавиша для экстренной остановки работы скрипта. |
Mafia 2
Бенчмарк присутствует в любой версии игры. AVG FPS в бенчмарк-сцене измеряется средствами игры и фиксируется в виде скриншота, MIN FPS замеряется при помощи утилиты FRAPS (замер производится с 90-й по 120-ю секунду сцены, где нагрузка максимальна).
Код:
FileDelete, C:\Users\RT_FM\AppData\Local\2K Games\Mafia II\Saves\videoconfig.cfg ;Удаление лог-файла с разрешением экрана. FileAppend, 0 0 1920 1080 1 0 0 0, C:\Users\RT_FM\AppData\Local\2K Games\Mafia II\Saves\videoconfig.cfg ;Создание и запись в лог-файл необходимого разрешения экрана. Не забываем указать свой путь к файлу. SetKeyDelay [, 60, 60] run, mafia2.exe ;Запуск игры. Sleep 9000 Send {Esc} Sleep 1000 Send {Esc} Sleep 1000 Send {Enter} ;Переход в меню игры. Loop 3 ;Начало троекратного цикла тестирования. { Sleep 4000 Loop 3 { Send {down} Sleep 500 } Send {Enter} Sleep 2000 Send {down down} Sleep 3000 Send {down up} Sleep 500 Send {Enter} ;Запуск бенчмарка. Sleep 95000 ;Ожидание начала тяжелой части тестовой сцены. Скорее всего, значение паузы не потребует подбора. Плюс/ минус 5 секунд разницы в результатах MIN FPS не дадут. Send {F11} ;Начало замера производительности. Sleep 30000 Send {F11} ;Окончание замера производительности. Sleep 20000 Send {F10} ;Скриншот с результатом теста. Sleep 1000 Send {Esc} ;Выход из бенчмарка. Sleep 2000 } ;Окончание цикла. Send !{F4} Sleep 500 Send {Enter} ;Выход из игры. FileCopyDir, C:\fraps\Screenshots, C:\Test\Mafia2, 1 ;Копирование скриншотов с результатами в нужную директорию. FileRemoveDir, C:\fraps\Screenshots, 1 ;Чистка папки с скриншотами. FileCopyDir, C:\fraps\Benchmarks, C:\Test\Mafia2, 1 ;Копирование результатов с MIN FPS в нужную директорию. FileCopy, C:\fraps\frapslog.txt, C:\Test\Mafia2, 1 ;Копирование файла frapslog.txt в нужную папку. FileRemoveDir, C:\fraps\Benchmarks, 1 ;Чистка папки с результатами. FileDelete, C:\fraps\frapslog.txt ;Удаление файла frapslog.txt. ExitApp ;Окончание работы скрипта. Numpad0::ExitApp ;Горячая клавиша для экстренной остановки работы скрипта. |
Metro 2033
Бенчмарк есть только в update2 версии игры.
Код:
SetKeyDelay [, 20, 20] FileCopy, test\1.mbcfg, frontline.mbcfg , 1 ;Копирование заранее заготовленного конфиг-файла бенчмарка в папку с .exe файлом игры и скриптом. Run, metro2033benchmark.exe, , , NewPID ;Запуск файла бенчмарка. Process, priority, %NewPID%, High Sleep 5000 Loop 16 ;В зависимости от конфигурации и настроек стенда значение может варьироваться от 15 до 18. Подбираем, не стесняемся. { Send {Tab} ;Перемотка пунктов меню к кнопке запуска бенчмарка. Напомню, конфиг-файл уже заготовлен ранее и все настройки в нём вбиты. Sleep 500 } Send {Space} ;Запуск бенчмарка. Sleep 260000 ;Время, необходимое для четырёх итераций бенчмарка. Для конфигурации с тремя итерациями ставить значение паузы около 200000. Взято с запасом. Send !{F4} ;Закрытие окна браузера, в котором отобразятся результаты. Sleep 5000 FileCopyDir, C:\Users\RT_FM\Documents\4A Games\Metro 2033\Benchmark, C:\Test\Metro2033, 1 ;Копирование файлов с результатами в папку C:\Test\Metro2033. FileRemoveDir, C:\Users\RT_FM\Documents\4A Games\Metro 2033\Benchmark, 1 ;Чистка папки с результатами. Send {Tab} ;Перемотка к меню выхода из бенчмарка. Sleep 500 Send {Space} ;Выход из бенчмарка. ExitApp ;Окончание работы скрипта. Numpad0::ExitApp ;Горячая клавиша для экстренной остановки работы скрипта. |
Resident Evil 5
Бенчмарк присутствует в любой версии игры. Замер производительности осуществляется средствами игры.
Код:
IniWrite, 1920x1080, C:\Users\RT_FM\Documents\capcom\RESIDENT EVIL 5\config.ini, DISPLAY, Resolution ;Установка требуемого разрешения экрана. Для теста на нескольких разрешениях можно скопировать весь код, изменяя только требуемое разрешение экрана в данной строке. IniWrite, 4, C:\Users\RT_FM\Documents\capcom\RESIDENT EVIL 5\config.ini, CPU, JobThread ;Установка числа потоков CPU, которыми будет оперировать игра. Надо ставить в соответствие с количеством ядер процессора (ну, или в соответствие с количеством потоков для HT). run, launcher.exe ;Запуск ланчера. Sleep 3000 Send {down down} ;Выбор режима DX10. Sleep 60 Send {down up} Sleep 100 Send {Enter down} ;Запуск DX10 версии игры. Sleep 60 Send {Enter up} Sleep 8000 Loop 4 ;Пропуск вступительной рекламы. { Send {Enter down} Sleep 60 Send {Enter up} Sleep 1000 } Sleep 4000 Loop 3 ;Троекратный запуск бенчмарка. { Sleep 1500 Send {Enter down} ;Вход в главное меню. Sleep 60 Send {Enter up} Sleep 2000 Loop 2 { Send {down down} Sleep 60 Send {down up} Sleep 200 } Send {Enter down} Sleep 60 Send {Enter up} Sleep 1000 Send {down down} Sleep 60 Send {down up} Sleep 100 Send {Enter down} Sleep 60 Send {Enter up} ;Начало тестовой сцены Fixed Benchmark. Sleep 105000 Send {F10} ;Скриншот результата. Sleep 1000 Send {Esc down} ;Выход в меню. Sleep 60 Send {Esc up} Sleep 5000 } Send !{F4} ;Выход из игры. Sleep 5000 FileCopyDir, C:\fraps\Screenshots, C:\Test\RE5, 1 ;Копирование скриншотов с результатами в директорию C:\Test\RE5. FileRemoveDir, C:\fraps\Screenshots, 1 ;Чистка папки с скриншотами. ExitApp ;Окончание работы скрипта. Numpad0::ExitApp ;Горячая клавиша для экстренной остановки работы скрипта. |
Warhammer 40000: Dawn of War II
Бенчмарк добавляется патчем 1.3.2. Замер производительности осуществляется средствами игры.
Код:
FileCopy C:\Users\RT_FM\Documents\My Games\Dawn of War 2\Settings\test\1.lua, C:\Users\RT_FM\Documents\My Games\Dawn of War 2\Settings\configuration.lua, 1 ;Копирование с заменой заранее заготовленного конфиг-файла. Заготовив несколько файлов с разными разрешениями экрана, можно автоматизировать смену разрешений экрана. SetKeyDelay [, 20, 20] SetDefaultMouseSpeed, 30 Run, dow2.exe, , , NewPID ;Запуск .exe файла игры. Process, priority, %NewPID%, High Sleep 17000 ;Пауза, загрузка игры. loop 6 ;Пропуск вступительных видео. Время паузы строкой выше надо подобрать так, чтобы команда нажатия Esc не сработала по главному меню, то есть слишком длинной пауза быть не может, как и слишком короткой (при короткой паузе не все вступительные видео будут пропущены и получится Fail). { Send {Esc} Sleep 200 } Sleep 8000 ;Время до загрузки главного меню после пропуска вступительных видео. Можно брать с запасом. WinGetPos, x, y, Width, Height, ahk_pid %NewPID% ;Команда считывает текущее разрешение экрана в игре. Sleep 1000 MouseMove, Width/1.2, Height/1.12 ;Перемещение курсора к меню настроек. Sleep 1000 Send {LButton down} ;Клик мыши. Sleep 100 Send {LButton up} Sleep 2000 MouseMove, Width/2.3, Height/6.93 ;Перемещение курсора к меню графических настроек. Sleep 1000 Send {LButton down} ;Клик мыши. Sleep 100 Send {LButton up} Sleep 2000 Loop 3 ;Троекратный запуск бенча. { MouseMove, Width/1.3, Height/1.2 ;Перемещение курсора к кнопке запуска теста. Sleep 1000 Send {LButton down} ;Клик мыши. Sleep 100 Send {LButton up} ;Начало теста. Sleep 85000 ;Время от начала загрузки тестовой сцены до момента показа результата. Рекомендую брать с запасом. Send {F10} ;Скриншот (подразумевается, что FRAPS висит в трее) для фиксации результата. MouseMove, Width/2, Height/1.3 ;Перемещение курсора к меню подтверждения результатов бенча. Sleep 1000 Send {LButton down} ;Клик мыши. Sleep 100 Send {LButton up} ;Возврат к меню настроек графики. Sleep 3000 } ;Окончание цикла тестирования. Send !{F4} ;ALT+F4, собственно выход из игры. Sleep 5000 FileCopyDir, C:\fraps\Screenshots, C:\Test\DOW2, 1 ;Копирование скриншотов с результатами в директорию C:\Test\DOW2. FileRemoveDir, C:\fraps\Screenshots, 1 ;Чистка папки с скриншотами. ExitApp ;Окончание работы скрипта. Numpad0::ExitApp ;Горячая клавиша для экстренной остановки работы скрипта. |
Запуск нескольких скриптов подряд и оптимальный порядок запуска
Когда в наличии есть готовая коллекция скриптов автоматизации замера производительности к различным играм, то сразу в голове возникает вопрос: «Я что, сам всё это должен запускать?» Ну, разумеется, нет.
Последовательность создаётся в виде:
Runwait, “полный путь к скрипту” Sleep 10000 ;Пауза между запуском разных игр. Runwait, “полный путь к следующему скрипту” |
И так далее. В конце:
ExitApp Numpad0::ExitApp |
Разумеется, такой скрипт пишется уже по факту отладки и работоспособности кода всех .ahk файлов, принимающих участие в тестировании.
Разумно предположить, что при исполнении кода в различных играх существует вероятность как «зависания», так и ухода скрипта в «дебри», когда исполняется уже не требуемая комбинация действий, а что-то нехорошее. Исходя из навыков тестирования производительности в играх и написания всех скриптов, принимающих участие в данной статье, рекомендую разбить игры на три категории:
1) Те скрипты, которые запускаются в первую очередь, в которых вероятность сбоя работы autohotkey минимальна.
К таким играм можно отнести:
- Dirt 2;
- F1-2010;
- GTA 4 EPLC;
- Sid Meier's Civilization 5;
- Borderlands.
2) Группа повышенного риска. Скрипты запускаются в последнюю очередь. Если при их выполнении произойдёт сбой – можно будет запустить заново только их, при этом результаты всех предыдущих замеров производительности в других играх сохранятся.
К таким играм можно отнести:
- Metro 2033;
- Call of Duty: Black Ops;
- Arcania: Gothic 4.
Остальные игры можно запускать произвольно. Как правило, когда скрипты подогнаны под стенд, то и особых проблем с ними не возникает.
Заключение
В общем, в какие только дебри не заведут простая человеческая лень и нежелание делать что-либо.
Следующего продолжения цикла статей «Автоматизируем процесс замера производительности в играх» ждать, скорее всего, придётся долго - по факту накопления нескольких новых ресурсоёмких игр. На этом пока всё.
реклама
Теги
Лента материалов раздела
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила