Автоматизируем процесс замера производительности в играх (часть 3) (страница 2)
Dragon Age Origins
Все необходимые файлы можно скачать по ссылке: http://trash.overclockers.ru/Ivan_FCB/to68/DragonAge.rar
Путь к сохранению (для Win7): C:\Users\%имя пользователя%\Documents\BioWare\Dragon Age\Saves. Сохранение актуально для 1.0.9353 версии .exe файла. Но не исключено, что будет работать и на других версиях.
Список файлов в архиве:
- 01_daorigins.ahk – основное тело скрипта. В данном файле описан процесс запуска игры. Именно этот файл подлежит запуску для автоматизированного замера производительности.
- 02_bench.ahk – файл, отвечающий за замер производительности. Из-под него вызываются последующие файлы загрузки уровня и прохождения тестовой сцены. Требуется правка путей к файлам для конкретно взятого тестового стенда.
- 03_load.ahk – файл, отвечающий за загрузку тестовой сцены. Требуется правка путей к файлам для конкретно взятого тестового стенда.
- 04_scene.ahk – непосредственно тестовая сцена и замер производительности.
- 05_exitmenu.ahk – отвечает за выход в главное меню по окончании замера производительности. Требуется правка путей к файлам для конкретно взятого тестового стенда.
- 06_exit.ahk – выход из игры. Требуется правка путей к файлам для конкретно взятого тестового стенда.
- 10_i.txt – текстовый файл, в котором хранится значение переменной i, необходимой в процессе замера производительности. Хранится в файле из-за того, что одна переменная нужна в разных файлах скрипта.
- 11_t1.txt – текстовый файл, в котором хранится значение паузы, необходимой для запуска игры.
- 12_t2.txt – текстовый файл, в котором хранится значение паузы, необходимой для первой загрузки тестовой сцены.
- 13_t3.txt – текстовый файл, в котором хранится значение паузы, необходимой для второй и каждой последующей загрузки тестовой сцены.
Теперь более подробно по исходному коду каждого файла:
01_daorigins.ahk
рекламаIniWrite, 1920, C:\Users\RT_FM\Documents\BioWare\Dragon Age\Settings\DragonAge.ini, VideoOptions, ResolutionWidth ;Установка количества пикселей по горизонтали. Не забываем изменить путь к файлу на свой. IniWrite, 1080, C:\Users\RT_FM\Documents\BioWare\Dragon Age\Settings\DragonAge.ini, VideoOptions, ResolutionHeight ;Установка количества пикселей по вертикали. Не забываем изменить путь к файлу на свой. SetKeyDelay [, 20, 20] ;Отсюда начинается код, уже знакомый вам ранее, так что комментировать его не стану. Run, daorigins.exe, , , NewPID Process, priority, %NewPID%, High FileRead, t, 11_t1.txt Sleep t Send {Esc down} рекламаSleep 60 Send {Esc up} Sleep 500 Send {Esc down} Sleep 60 Send {ESC up} Sleep 1000 runwait, 02_bench.ahk runwait, 06_exit.ahk Sleep 5000 FileCopyDir, C:\fraps\Benchmarks, C:\Test\DragonAge, 1 ;Копирование результатов тестирования в директорию C:\Test\DragonAge. FileCopy, C:\fraps\frapslog.txt, C:\Test\DragonAge, 1 ;Копирование файла frapslog.txt в созданную ранее директорию. FileRemoveDir, C:\fraps\Benchmarks, 1 ;Чистка папки с результатами. FileDelete, C:\fraps\frapslog.txt ;Удаление файла frapslog.txt. FileCopyDir, C:\fraps\Screenshots, C:\Test\DragonAge, 1 ;Копирование скриншотов в директорию, куда сохранены результаты тестов. рекламаFileRemoveDir, C:\fraps\Screenshots, 1 ;Чистка папки, в которой содержатся скриншоты. ExitApp ;Окончание работы скрипта. Numpad0::ExitApp ;Горячая клавиша для экстренной остановки работы скрипта. |
02_Bench.ahk, 03_load.ahk, 05_exitmenu.ahk, 06_exit.ahk
Привязка данных файлов к списку допустимых разрешений экрана пока сохранилась. Скрипт адаптирован для разрешений 1920x1080, 1680x1050, 1280x1024.
Строка кода «FileRead, x, 14_r.txt» заменена на строку:
| IniRead, x, C:\Users\RT_FM\Documents\BioWare\Dragon Age\Settings\DragonAge.ini, VideoOptions, ResolutionWidth ;Считывание и помещение в переменную x текущего разрешения экрана. Считывается и учитывается только количество пикселей по горизонтали, то есть «защита от дурака» на данный момент не предусмотрена. Не забываем изменить путь к файлу на свой. |
Добавлены строки:
| ExitApp Numpad0::ExitApp |
В остальном изменений нет.
04_scene.ahk
Единственное изменение в коде файла - добавление строк:
| ExitApp Numpad0::ExitApp |
В конец файла. Во всём остальном код остался нетронутым.
10_i.txt, 11_t1.txt, 12_t2.txt, 13_t3.txt
Не менялись.
Medal of Honor (2010)
Все необходимые файлы можно скачать по ссылке: http://trash.overclockers.ru/Ivan_FCB/to68/MOH2010.rar
В архиве приложено сохранение, но подойдёт любой Save-файл с пройденной игрой. Путь к сохранению (для Win7): C:\Users\%имя пользователя%\Documents\EA Games\Medal of Honor\Saved.
Список файлов:
- 01_moh.ahk – основное тело скрипта. В данном файле описан процесс запуска игры. Именно этот файл подлежит запуску для автоматизированного замера производительности.
- 02_bench.ahk – файл, отвечающий за замер производительности. Из-под него вызываются последующие файлы загрузки уровня и прохождения тестовой сцены.
- 03_load.ahk – файл, отвечающий за загрузку тестовой сцены.
- 04_scene.ahk – непосредственно тестовая сцена и замер производительности.
- 05_exitmenu.ahk – отвечает за выход в главное меню по окончании замера производительности.
- 06_exit.ahk – выход из игры.
- 10_t1.txt – текстовый файл, в котором хранится значение паузы, необходимой для запуска игры.
- 11_t2.txt – текстовый файл, в котором хранится значение паузы, необходимой для загрузки тестовой сцены.
Теперь более подробно по исходному коду каждого файла:
01_moh.ahk
| IniWrite, 1920, C:\Users\RT_FM\Documents\EA Games\Medal of Honor\Config\MOHAEngine.ini, SystemSettings, ResX ;Установка количества пикселей по горизонтали. Не забываем изменить путь к файлу на свой. IniWrite, 1080, C:\Users\RT_FM\Documents\EA Games\Medal of Honor\Config\MOHAEngine.ini, SystemSettings, ResY ;Установка количества пикселей по вертикали. Не забываем изменить путь к файлу на свой. SetKeyDelay [, 30, 30] ;Отсюда начинается код, уже знакомый вам ранее, так что комментировать его не стану. run, moh.exe, , , NewPID Process, priority, %NewPID%, High FileRead, t, 10_t1.txt Sleep t runwait, 02_bench.ahk runwait, 06_exit.ahk Sleep 5000 FileCopyDir, C:\fraps\Benchmarks, C:\Test\MOH2010, 1 ;Копирование результатов тестирования в директорию C:\Test\MOH2010. FileCopy, C:\fraps\frapslog.txt, C:\Test\MOH2010, 1 ;Копирование файла frapslog.txt в созданную ранее директорию. FileRemoveDir, C:\fraps\Benchmarks, 1 ;Чистка папки с результатами. FileDelete, C:\fraps\frapslog.txt ;Удаление файла frapslog.txt. FileCopyDir, C:\fraps\Screenshots, C:\Test\MOH2010, 1;Копирование скриншотов в директорию C:\Test\MOH2010. FileRemoveDir, C:\fraps\Screenshots, 1 ;Чистка папки, в которой содержатся скриншоты. ExitApp ;Окончание работы скрипта. Numpad0::ExitApp ;Горячая клавиша для экстренной остановки работы скрипта. |
02_Bench.ahk, 03_load.ahk, 04_scene.ahk, 05_exitmenu.ahk, 06_exit.ahk
Единственное изменение в коде этих файлов – добавление строк:
| ExitApp Numpad0::ExitApp |
В конец каждого. Во всём остальном код остался нетронутым.
10_t1.txt, 11_t2.txt
Не менялись.
Metro 2033
Все необходимые файлы можно скачать по ссылке: http://trash.overclockers.ru/Ivan_FCB/to68/Metro2033.rar
Путь к сохранению (для Win7): C:\Users\%имя пользователя%\Documents\4A Games\Metro 2033. В архиве приложено сохранение, но, скорее всего, подойдёт любой (*) Save-файл с пройденной игрой. Работоспособность приложенного сохранения опробована на Update1 и Update2 версиях игры.
*Ограничения – последней запущенной миссией должна быть «Глава 7 - Башня», в инвентаре должно быть хотя бы две аптечки.
Список файлов:
- 01_metro2033.ahk – основное тело скрипта. В данном файле описан процесс запуска игры. Именно этот файл подлежит запуску для автоматизированного замера производительности. Требуется правка путей к файлам для конкретно взятого тестового стенда.
- 02_bench.ahk – файл, отвечающий за замер производительности. Из-под него вызываются последующие файлы загрузки уровня и прохождения тестовой сцены.
- 03_load.ahk – файл, отвечающий за загрузку тестовой сцены.
- 04_scene.ahk – непосредственно тестовая сцена и замер производительности.
- 05_exitmenu.ahk – отвечает за выход в главное меню по окончании замера производительности.
- 06_exit.ahk – выход из игры.
- 07_1920-1680.ahk – файл, отвечающий за смену разрешения экрана с 1920x1080 на 1680x1050.
- 08_1680-1280.ahk – файл, отвечающий за смену разрешения экрана с 1680x1050 на 1280x1024.
- 09_1280-1920.ahk – файл, отвечающий за смену разрешения экрана с 1280x1024 на 1920x1080.
- 10_x.txt – текстовый файл, в котором хранится переменная, используемая в алгоритмах автоматической смены разрешения экрана.
- 11_t1.txt - текстовый файл, в котором хранится значение паузы, необходимой для запуска игры.
Основной код не претерпел изменений по сравнению с использованным в прошлой статье по автоматизации, изменения коснулись лишь добавления алгоритма складирования результатов в папку C:\test и горячей клавиши для экстренной остановки работы скрипта.
На правку конфиг-файлов игра почему-то не реагирует (либо у меня не получается), поэтому алгоритмы смены разрешения экрана не претерпели изменений. Расписывать что-либо смысла мало. Процитирую лишь код, отвечающий за складирование результатов в директорию C:\Test.
| FileCopyDir, C:\fraps\Benchmarks, C:\Test\Metro2033, 1 ;Копирование результатов тестирования в директорию C:\Test\Metro2033. FileCopy, C:\fraps\frapslog.txt, C:\Test\Metro2033, 1 ;Копирование файла frapslog.txt в созданную ранее директорию. FileRemoveDir, C:\fraps\Benchmarks, 1 ;Чистка папки с результатами. FileDelete, C:\fraps\frapslog.txt ;Удаление файла frapslog.txt. FileCopyDir, C:\fraps\Screenshots, C:\Test\Metro2033, 1 ;Копирование скриншотов в директорию, куда сохранены результаты тестов. FileRemoveDir, C:\fraps\Screenshots, 1 ;Чистка папки, в которой содержатся скриншоты. |
S.T.A.L.K.E.R.: Call of Pripyat
Развитие скрипта для данного «глюкодрома» приостановлено. Главная причина – частые сбои в работе из-за того, что время запуска игры, а также время загрузки тестовой сцены сильно зависит от внешних факторов. При последовательном запуске скриптов нескольких игр данная проблема становится более актуальной, чем (на первый взгляд) кажется.
Автоматизация запуска встроенных в игры средств измерения производительности
Надо стремиться к тому, чтобы бОльшее время уходило не на получение данных, а на их анализ и на повышение качества материалов, так что автоматизируем замер производительности и во встроенных бенчмарках.
Что ж, приступим.
Borderlands
В оригинале у игры бенчмарк отсутствовал, появившись с версии 1.01.
Код скрипта довольно короткий:
| IniWrite, 1920, C:\Users\RT_FM\Documents\My Games\Borderlands\WillowGame\Config\WillowEngine.ini, SystemSettings, ResX IniWrite, 1080, C:\Users\RT_FM\Documents\My Games\Borderlands\WillowGame\Config\WillowEngine.ini, SystemSettings, ResY ;Установка требуемого разрешения экрана, код совпадает с тем, который вы могли видеть в варианте тестирования производительности с игровой сценой. Опять-таки не забываем изменить пути к файлам. Loop 3 ;Троекратный прогон встроенного теста. { Runwait, borderlands.exe timedemo1_p -benchmark -seconds=60 -novsync ;Запуск .exe файла игры с параметрами командной строки, которые активируют загрузку не игры, а именно бенчмарка. Sleep 5000 } FileCreateDir, C:\Test\Borderlands ;Создание директории C:\Test\Borderlands, в которую будут перенесены результаты тестирования. FileCopy, C:\Users\RT_FM\Documents\My Games\Borderlands\WillowGame\Logs\benchmark.log, C:\Test\Borderlands\Test1.txt, 1 ;Копирование файла с результатами в созданную ранее директорию. Если копипастим код, меняя только разрешение экрана - не забываем задавать разные названия конечным файлам с результатами. Также не забываем изменить путь к log файлу на свой. FileDelete, C:\Users\RT_FM\Documents\My Games\Borderlands\WillowGame\Logs\benchmark.log ExitApp ;Окончание работы скрипта. Numpad0::ExitApp ;Горячая клавиша для экстренной остановки работы скрипта. |
Как видно, ничего принципиально сложного.
Sid Meier's Civilization 5
Для того чтобы бенчмарк сохранял результаты, надо в config.ini (по адресу Documents\My Games\Sid Meier's Civilization 5) поставить единицу в значение параметра LoggingEnable.
Бенчмарков в игре несколько, автоматизация запуска и складирования результатов в одном из них:
| runwait, CivilizationV_DX11.exe -benchmark lateGameView ;Запуск .exe файла игры с параметрами командной строки, которые активируют загрузку не игры, а именно бенчмарка. Помимо lateGameView есть более ресурсоёмкий Unit Test, но в нём больше разброс результатов. Sleep 5000 FileCreateDir, C:\Test\CIV5 ;Создание директории C:\Test\CIV5, в которую будут перенесены результаты тестирования. FileCopy, C:\Users\RT_FM\Documents\My Games\Sid Meier's Civilization 5\Logs\LateGameViewBench.log, C:\Test\CIV5\test1.txt, 1 ;Копирование файла с результатами в созданную ранее директорию. runwait, CivilizationV_DX11.exe -benchmark lateGameView ;Второй запуск бенчмарка. Реализован не в цикле, так как копируемым log-файлам необходимо задать разные имена. Sleep 5000 FileCopy, C:\Users\RT_FM\Documents\My Games\Sid Meier's Civilization 5\Logs\LateGameViewBench.log, C:\Test\CIV5\test2.txt, 1 ;Копирование файла с результатами в созданную ранее директорию. ExitApp ;Окончание работы скрипта. Numpad0::ExitApp ;Горячая клавиша для экстренной остановки работы скрипта. |
Поскольку результаты бенчмарка представлены абстрактными «попугаями», то тестировать им игру при разных разрешениях экрана смысла мало, отсюда - алгоритма смены разрешения экрана в скрипте не предусмотрено.
Colin McRae DIRT 2
Бенчмарк присутствует в любой версии игры.
Код:
| FileCopy, C:\Users\RT_FM\Documents\My Games\DiRT2\hardwaresettings\test\hardware_settings_config1.xml, C:\Users\RT_FM\Documents\My Games\DiRT2\hardwaresettings\hardware_settings_config.xml, 1 ;Копирование заранее заготовленного конфиг-файла в папку, где он должен находиться. При наличии нескольких заранее же заготовленных файлов можно тестировать игру с разными настройками графики. loop 3 ;Троекратный прогон встроенного теста. { runwait, dirt2.exe –benchmark ;Запуск .exe файла игры с параметрами командной строки, которые активируют загрузку не игры, а именно бенчмарка. Sleep 5000 } FileCopyDir, C:\Users\RT_FM\Documents\My Games\DiRT2\benchmarks, C:\Test\Dirt2, 1 ;Копирование файлов с результатами в директорию C:\Test\Dirt2. FileRemoveDir, C:\Users\RT_FM\Documents\My Games\DiRT2\benchmarks, 1 ;Чистка папки с результатами. ExitApp ;Окончание работы скрипта. Numpad0::ExitApp ;Горячая клавиша для экстренной остановки работы скрипта. |
F1-2010
В оригинале у игры бенчмарк отсутствовал, появившись с версии 1.01.
Код:
| FileCopy, C:\Users\RT_FM\Documents\My Games\FormulaOne\hardwaresettings\test\hardware_settings_config1.xml, C:\Users\RT_FM\Documents\My Games\FormulaOne\hardwaresettings\hardware_settings_config.xml, 1 ;Копирование заранее заготовленного конфиг-файла в папку, где он должен находиться. При наличии нескольких заранее же заготовленных файлов можно тестировать игру с разными настройками графики. Loop 3 ;Троекратный прогон встроенного теста. { runwait, f1_2010.exe –benchmark ;Запуск .exe файла игры с параметрами командной строки, которые активируют загрузку не игры, а именно бенчмарка. Sleep 5000 } FileCopyDir, C:\Users\RT_FM\Documents\My Games\FormulaOne\benchmarks, C:\Test\F1_2010, 1 ;Копирование файлов с результатами в директорию C:\Test\F1_2010. FileRemoveDir, C:\Users\RT_FM\Documents\My Games\FormulaOne\benchmarks, 1 ;Чистка папки с результатами. ExitApp ;Окончание работы скрипта. Numpad0::ExitApp ;Горячая клавиша для экстренной остановки работы скрипта. |
Grand Theft Auto IV EFLC
Бенчмарк присутствует в любой версии игры.
Скрипт состоит из двух файлов. Запуску подлежит первый, EPLC.ahk. Второй файл, minfps_EPLC.ahk, как видно из названия – отвечает за замер MIN FPS.
EPLC.ahk
| Loop 3 ;Троекратный прогон встроенного теста. { run, minfps_EPLC.ahk ;Запуск файла, отвечающего за замер MIN FPS. На его содержимом заострим внимание позже. runwait, LaunchEFLC.exe -Benchmark -width=1920 -height=1080 ;Запуск .exe файла игры с параметрами командной строки, которые активируют загрузку не игры, а именно бенчмарка. Так же, параметрами командной строки передаётся требуемое разрешение экрана. Sleep 5000 } FileCopyDir, C:\Users\RT_FM\Documents\Rockstar Games\TLaD\Benchmarks, C:\Test\GTA4, 1 ;Копирование файлов с результатами в директорию C:\Test\GTA4. FileCopyDir, C:\fraps\Benchmarks, C:\Test\GTA4, 1 ;Копирование файлов FRAPS'а, в которых сохранён MIN FPS. FileCopy, C:\fraps\frapslog.txt, C:\Test\GTA4, 1 ;Копирование файла frapslog.txt в созданную ранее директорию. FileRemoveDir, C:\fraps\Benchmarks, 1 ;Чистка папки с результатами. FileRemoveDir, C:\Users\RT_FM\Documents\Rockstar Games\TLaD\Benchmarks, 1 ;Чистка папки с результатами. FileDelete, C:\fraps\frapslog.txt ;Удаление файла frapslog.txt. ExitApp ;Окончание работы скрипта. Numpad0::ExitApp ;Горячая клавиша для экстренной остановки работы скрипта. |
minfps_EPLC.ahk
| Sleep 36000 ;Данный скрипт запускается одновременно с началом запуска .exe файла игры. Пауза – время до начала замера производительности, который производится не в течении всей тестовой сцены, а только на тяжелом участке, на котором и всплывает MIN FPS. Скорее всего, подбора значение паузы не потребует, необходимая для сцены точность плюс/минус 5 секунд. Send {F11} ;Начало замера производительности утилитой FRAPS. Sleep 20000 Send {F11} ;Окончание замера производительности. ExitApp ;Окончание работы скрипта. Numpad0::ExitApp ;Горячая клавиша для экстренной остановки работы скрипта. |
Lost Planet Colonies
Бенчмарк присутствует в любой версии игры. Замер производительности осуществляется силами FRAPS'а.
Код:
| IniWrite, 1280x1024, C:\Users\RT_FM\AppData\Local\capcom\lostplanetcolonies\config.ini, DISPLAY, Resolution ;Установка требуемого разрешения экрана. Для теста на нескольких разрешениях можно откопипастить весь код, изменяя только требуемое разрешение экрана в данной строке. IniWrite, 4, C:\Users\RT_FM\AppData\Local\capcom\lostplanetcolonies\config.ini, CPU, JobThread ;Установка числа потоков CPU, которыми будет оперировать игра. Надо ставить в соответствие с количеством ядер процессора(ну или в соответствие с количеством потоков для HT). SetKeyDelay [, 20, 20] Run, LPCLauncher.exe ;Запуск ланчера. Sleep 2000 Loop 2 ;Выбор DX10 режима. { Send {down down} Sleep 100 Send {down up} Sleep 100 } Sleep 1000 Send {Enter down} ;Запуск DX10 версии .exe файла игры. Sleep 100 Send {Enter up} Sleep 16000 ;Пауза - загрузка игры. Send {Enter down} ;Пропуск вступительной рекламы. Sleep 100 Send {Enter up} Sleep 5000 Send {Enter down} ;Переход в меню. Sleep 100 Send {Enter up} MouseMove, 1, 1 ;Перестраховка, чтоб расположение курсора мыши не могло помешать правильной навигации по меню. Sleep 5000 Send {Enter down} ;Переход в главное меню. Sleep 100 Send {Enter up} Sleep 3000 Loop 3 ;Троекратный запуск бенчмарка. { Sleep 1000 Send {down down} Sleep 100 Send {down up} Sleep 1000 Send {down down} Sleep 100 Send {down up} Sleep 1000 Send {Enter down} Sleep 100 Send {Enter up} Sleep 1000 Send {down down} Sleep 100 Send {down up} Sleep 1000 Send {down down} Sleep 100 Send {down up} Sleep 1000 Send {Enter down} Sleep 100 Send {Enter up} Sleep 4000 ;Время загрузки тестовой сцены + немного сверху, чтоб не замерять производительность в самом начале сцены, где возможно снижение производительности при подгрузке уровня. Send {F10} ;Скриншот верификации. Sleep 200 Send {F11} ;Начало замера производительности. Sleep 55000 Send {F11} ;Окончание замера производительности. Sleep 1000 Send {F10} ;Скриншот верификации. Sleep 1000 Send {Esc down} ;Выход в меню Sleep 100 Send {Esc up} Sleep 5000 } Send !{F4} Sleep 1000 Send {Enter} ;Выход из игры. Sleep 5000 FileCopyDir, C:\fraps\Screenshots, C:\Test\LPC, 1 ;Копирование скриншотов верификации в нужную директорию. FileRemoveDir, C:\fraps\Screenshots, 1 ;Чистка папки с скриншотами. FileCopyDir, C:\fraps\Benchmarks, C:\Test\LPC, 1 ;Копирование результатов теста в нужную директорию. FileCopy, C:\fraps\frapslog.txt, C:\Test\LPC, 1 ;Копирование лог-файла, с результатами в упрощённой форме. FileRemoveDir, C:\fraps\Benchmarks, 1 ;Чистка папки с результатами. FileDelete, C:\fraps\frapslog.txt ;Удаление файла frapslog.txt. ExitApp ;Окончание работы скрипта. Numpad0::ExitApp ;Горячая клавиша для экстренной остановки работы скрипта. |
Теги
Лента материалов раздела
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.


Комментарии Правила