Автоматизируем процесс замера производительности в играх (часть 3)

3 февраля 2011, четверг 06:30
Ivan_FCB для раздела Лаборатория

Оглавление

Вступление

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

Предыдущие материалы:


Сегодня в программе - дальнейшее развитие прошлых идей и расширение тестового пакета. Не правда ли, запускать встроенные средства измерения производительности в играх вручную, да ещё при том, что автоматически тестируются собственноручно написанные сцены, довольно странно? Автоматизировать, так полностью…

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

Напомню, для работы скриптов необходимо установленное ПО AutoHotkey.

Файлы скриптов помещаются в директорию с .exe файлами соответствующих игр, замер производительности стартует запуском скрипта. Там, где их несколько - дополнительно указывается необходимый для «скриптового бенчмаркинга» файл.

В общем, интересного вам чтения.

Тестовый стенд

Основная проверка работоспособности скриптов производилась на следующей конфигурации:

  • Материнская плата: MSI P55-GD65, bios 1.9;
  • Процессор: Intel Core i5-760 @ 3,5 ГГц (166,6x21);
  • Система охлаждения: Zalman CNPS10X Performa (120*120*25, ~1200 об/мин);
  • Термоинтерфейс: Xilence Silver Tim;
  • Оперативная память: Corsair CMX4GX3M2A1600C7 2*2 Гбайт DDR3-1600 (7-8-7-20, 1,65 В) @ 1666 МГц 7-8-7-20-1Т;
  • Видеокарта: NVIDIA GeForce GTX 295 1792 Мбайт 576/1242/1000 МГц;
  • Жесткий диск: Western Digital Caviar Blue (WD500AAKS), 500 Гбайт;
  • Блок питания: Corsair CMPSU-750HX (750 Вт);
  • Корпус: Открытый тестовый стенд;
  • Монитор: 23" Acer V233H (1920x1080 / 60 Гц).

Программное обеспечение

  • Операционная система: Windows 7 Ultimate, build 7600.16385 RTM, x64;
  • Драйвер видеокарты: nVidia ForceWare 260.99 WHQL;
  • Дополнительное ПО: AutoHotkey 1.0.48.05; FRAPS 3.2.3, build 11797.

Продолжение автоматизации процесса. Тесты в играх.

В этом разделе продолжается оптимизация уже знакомого по прошлым частям набора скриптов. Модификации во многом косметические и коснутся лишь мелочей. Целиком цитировать/комментировать код не стану, распишу лишь изменения относительно того, что было здесь.

Arcania: Gothic 4

Все необходимые файлы можно скачать по ссылке: http://trash.overclockers.ru/Ivan_FCB/to68/Arcania.rar

В архив вложены два Save файла, для версий игры 1.0 и 1.1. Путь к сохранению (для Win7): C:\Users\%имя пользователя%\Documents\ArcaniA - Gothic 4.

Список файлов в архиве:

  • 01_Arcania.ahk – основное тело скрипта. В данном файле описан процесс запуска игры. Именно этот файл подлежит запуску для автоматизированного замера производительности.
  • 02_Bench.ahk – файл, отвечающий за замер производительности. Из-под него вызываются последующие файлы загрузки уровня и прохождения тестовой сцены.
  • 03_load.ahk – файл, отвечающий за загрузку тестовой сцены.
  • 04_scene.ahk – непосредственно тестовая сцена и замер производительности.
  • 05_exitmenu.ahk – отвечает за выход в главное меню по окончании замера производительности.
  • 06_exit.ahk – выход из игры.
  • 10_t1.txt – текстовый файл, в котором хранится значение паузы, необходимой для запуска игры.
  • 11_t2.txt – текстовый файл, в котором хранится значение паузы, необходимой для первой загрузки тестовой сцены.
  • 12_t3.txt – текстовый файл, в котором хранится значение паузы, необходимой для второй и каждой последующей загрузки тестовой сцены.

Пытливый читатель, знакомый с предыдущей статьей уже может заметить, что в списке нет файлов, которые отвечали за смену разрешения экрана в главном меню игры. Почему так было сделано, выяснится позже.

Теперь более подробно по исходному коду каждого файла:

01_Arcania.ahk

FileCopy, C:\Users\RT_FM\Documents\ArcaniA - Gothic 4\test\1.xml, C:\Users\RT_FM\Documents\ArcaniA - Gothic 4\VideoSettings.xml, 1 ;

run, Arcania.exe, , , NewPID ;

Process, priority, %NewPID%, High

FileRead, t, 10_t1.txt

Sleep t

Send {up down}

Sleep 60

Send {up up}

Sleep 200

Send {up down}

Sleep 60

Send {up up}

Sleep 200

Send {down down}

Sleep 60

Send {down up}

Sleep 200

runwait, 02_bench.ahk

Sleep 1000

runwait, 06_exit.ahk

Sleep 5000 ;

FileCopyDir, C:\fraps\Benchmarks, C:\Test\Arcania, 1 ;

FileCopy, C:\fraps\frapslog.txt, C:\Test\Arcania, 1 ;

FileRemoveDir, C:\fraps\Benchmarks, 1 ;

FileDelete, C:\fraps\frapslog.txt ;

FileCopyDir, C:\fraps\Screenshots, C:\Test\Arcania, 1 ;

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, 12_t3.txt

Не менялись.

Battlefield Bad Company 2

Все необходимые файлы можно скачать по ссылке: http://trash.overclockers.ru/Ivan_FCB/to68/BFBC2.rar

В архиве приложено сохранение, но подойдёт любой Save-файл с пройденной игрой. Путь к сохранению (для Win7): C:\Users\%имя пользователя%\Documents\BFBC2

Список файлов в архиве:

  • 01_BFBC2.ahk – основное тело скрипта. В данном файле описан процесс запуска игры. Именно этот файл подлежит запуску для автоматизированного замера производительности.
  • 02_Bench.ahk – файл, отвечающий за замер производительности. Из-под него вызываются последующие файлы загрузки уровня и прохождения тестовой сцены.
  • 03_load.ahk – файл, отвечающий за загрузку тестовой сцены. Требуется правка путей к файлам для конкретно взятого тестового стенда.
  • 04_scene.ahk – непосредственно тестовая сцена и замер производительности.
  • 05_exitmenu.ahk – отвечает за выход в главное меню по окончании замера производительности. Требуется правка путей к файлам для конкретно взятого тестового стенда.
  • 06_exit.ahk – выход из игры. Требуется правка путей к файлам для конкретно взятого тестового стенда.
  • 11_t1.txt – текстовый файл, в котором хранится значение паузы, необходимой для запуска игры, точнее - до момента появления пропускаемого вступительного видео.

Как и в Arcania: Gothic 4, скрипты с алгоритмами смены разрешения экрана убраны за ненадобностью.

Теперь более подробно по исходному коду каждого файла:

01_BFBC2.ahk

IniWrite, 1920, C:\Users\RT_FM\Documents\BFBC2\settings.ini, WindowSettings, Width ;

IniWrite, 1080, C:\Users\RT_FM\Documents\BFBC2\settings.ini, WindowSettings, Height ;

run, BFBC2Game.exe, , , NewPID ;

Process, priority, %NewPID%, High

FileRead, t, 11_t1.txt

Sleep t

Send {Esc down}

Sleep 60

Send {Esc up}

Sleep 12000

runwait, 02_bench.ahk

Sleep 1000

runwait, 06_exit.ahk

FileCopyDir, C:\fraps\Benchmarks, C:\Test\BFBC2, 1 ;

FileCopy, C:\fraps\frapslog.txt, C:\Test\BFBC2, 1 ;

FileRemoveDir, C:\fraps\Benchmarks, 1 ;

FileDelete, C:\fraps\frapslog.txt ;

FileCopyDir, C:\fraps\Screenshots, C:\Test\BFBC2, 1 ;

FileRemoveDir, C:\fraps\Screenshots, 1 ;

ExitApp ;

Numpad0::ExitApp ;

02_Bench.ahk, 04_scene.ahk

Единственная модификация кода – добавление строк:

ExitApp

Numpad0::ExitApp

В остальном без изменений.

03_load.ahk, 05_exitmenu.ahk, 06_exit.ahk

Привязка данных файлов к списку допустимых разрешений экрана пока сохранилась. Скрипт адаптирован для разрешений 1920x1080, 1680x1050, 1280x1024.

Строка кода «» заменена на строку:

IniRead, x, C:\Users\RT_FM\Documents\BFBC2\settings.ini, WindowSettings, Width ;

Добавлены строки:

ExitApp

Numpad0::ExitApp

В остальном изменений нет.

11_t1.txt

Модификациям файл не подвергался.

Borderlands

Все необходимые файлы можно скачать по ссылке: http://trash.overclockers.ru/Ivan_FCB/to68/Borderlands.rar

Путь к сохранению (для Win7): C:\Users\%имя пользователя%\Documents\My Games\Borderlands\SaveData. Сохранение актуально для 1.2 версии .exe файла. Но не исключено, что будет работать и на других версиях.

Список файлов в архиве:

  • 01_Borderlands.ahk – основное тело скрипта. В данном файле описан процесс запуска игры. Именно этот файл подлежит запуску для автоматизированного замера производительности.
  • 02_bench.ahk – файл, отвечающий за замер производительности. Из-под него вызываются последующие файлы загрузки уровня и прохождения тестовой сцены.
  • 03_load.ahk – файл, отвечающий за загрузку тестовой сцены.
  • 04_scene.ahk – непосредственно тестовая сцена и замер производительности.
  • 05_exit.ahk – выход из меню/из игры. Для Borderlands это одна и та же последовательность действий.
  • 09_t1.txt – текстовый файл, в котором хранится значение паузы, необходимой для запуска игры.
  • 10_t2.txt – текстовый файл, в котором хранится значение паузы, необходимой для загрузки тестовой сцены.

Теперь более подробно по исходному коду каждого файла:

01_Borderlands.ahk

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 ;

SetKeyDelay [, 20, 20] ;

run, Borderlands.exe, , , NewPID

Process, priority, %NewPID%, High

FileRead, t, 09_t1.txt

Sleep t

Send {Enter}

Sleep 3000

runwait, 02_bench.ahk

runwait, 05_exit.ahk

Sleep 1000

FileCopyDir, C:\fraps\Benchmarks, C:\Test\Borderlands, 1 ;

FileCopy, C:\fraps\frapslog.txt, C:\Test\Borderlands, 1 ;

FileRemoveDir, C:\fraps\Benchmarks, 1 ;

FileDelete, C:\fraps\frapslog.txt ;

FileCopyDir, C:\fraps\Screenshots, C:\Test\Borderlands, 1 ;

FileRemoveDir, C:\fraps\Screenshots, 1 ;

ExitApp ;

Numpad0::ExitApp ;

02_bench.ahk, 03_load.ahk, 04_scene.ahk, 05_exit.ahk

Единственная модификация кода – добавление строк:

ExitApp

Numpad0::ExitApp

В остальном изменений нет.

09_t1.txt, 10_t2.txt

Не менялись.

Call of Duty: Black Ops

Все необходимые файлы можно скачать по ссылке: http://trash.overclockers.ru/Ivan_FCB/to68/BlackOPS.rar

В архиве приложено сохранение, но вообще подойдёт любой Save-файл с пройденной игрой. «Сэйв» хранится в папке с игрой (Call of Duty - Black Ops\players\save).

Список файлов в архиве:

  • 01_BlackOPS.ahk – основное тело скрипта. В данном файле описан процесс запуска игры. Именно этот файл подлежит запуску для автоматизированного замера производительности.
  • 02_bench.ahk – файл, отвечающий за замер производительности. Из-под него вызываются последующие файлы загрузки уровня и прохождения тестовой сцены.
  • 03_load.ahk – файл, отвечающий за загрузку тестовой сцены.
  • 04_scene.ahk – непосредственно тестовая сцена и замер производительности.
  • 05_exitmenu.ahk – отвечает за выход в главное меню по окончании замера производительности.
  • 06_exit.ahk – выход из игры.
  • 10_i.txt – текстовый файл, в котором хранится значение переменной i, необходимой в процессе замера производительности. Хранится в файле из-за того, что одна переменная нужна в разных файлах скрипта.
  • 12_t1.txt – текстовый файл, в котором хранится значение паузы, необходимой для запуска игры.
  • 13_t2.txt – текстовый файл, в котором хранится значение паузы, необходимой для первой загрузки тестовой сцены.
  • 14_t3.txt – текстовый файл, в котором хранится значение паузы, необходимой для второй и каждой последующей загрузки тестовой сцены.

Теперь более подробно по исходному коду каждого файла:

01_BlackOPS.ahk

FileCopy, players\test\1.cfg, players\config.cfg , 1 ;

MouseMove, 1, 1, 30 ;

run, BlackOps.exe, , , NewPID

Process, priority, %NewPID%, High

FileRead, t, 12_t1.txt

Sleep t

Send {LButton down}

sleep 500

Send {LButton up}

Sleep 3000

Send {Enter}

Sleep 2000

runwait, 02_bench.ahk

runwait, 06_exit.ahk

Sleep 5000 ;

FileCopyDir, C:\fraps\Benchmarks, C:\Test\COD, 1 ;

FileCopy, C:\fraps\frapslog.txt, C:\Test\Borderlands, 1 ;

FileRemoveDir, C:\fraps\Benchmarks, 1 ;

FileDelete, C:\fraps\frapslog.txt ;

FileCopyDir, C:\fraps\Screenshots, C:\Test\COD, 1 ;

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_i.txt, 12_t1.txt, 13_t2.txt, 14_t3.txt

Не менялись.

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 ;

FileCopy, C:\fraps\frapslog.txt, C:\Test\DragonAge, 1 ;

FileRemoveDir, C:\fraps\Benchmarks, 1 ;

FileDelete, C:\fraps\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.

Строка кода «» заменена на строку:

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 ;

FileCopy, C:\fraps\frapslog.txt, C:\Test\MOH2010, 1

FileRemoveDir, C:\fraps\Benchmarks, 1 ;

FileDelete, C:\fraps\frapslog.txt ;

FileCopyDir, C:\fraps\Screenshots, C:\Test\MOH2010, 1;

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 ;

FileCopy, C:\fraps\frapslog.txt, C:\Test\Metro2033, 1 ;

FileRemoveDir, C:\fraps\Benchmarks, 1 ;

FileDelete, C:\fraps\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 ;

Sleep 5000

}

FileCreateDir, C:\Test\Borderlands ;

FileCopy, C:\Users\RT_FM\Documents\My Games\Borderlands\WillowGame\Logs\benchmark.log, C:\Test\Borderlands\Test1.txt, 1 ;

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 ;

Sleep 5000

FileCreateDir, 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 ;

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 ;

Sleep 5000

}

FileCopyDir, C:\Users\RT_FM\Documents\My Games\DiRT2\benchmarks, C:\Test\Dirt2, 1 ;

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 ;

Sleep 5000

}

FileCopyDir, C:\Users\RT_FM\Documents\My Games\FormulaOne\benchmarks, C:\Test\F1_2010, 1 ;

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 ;

runwait, LaunchEFLC.exe -Benchmark -width=1920 -height=1080 ;

Sleep 5000

}

FileCopyDir, C:\Users\RT_FM\Documents\Rockstar Games\TLaD\Benchmarks, C:\Test\GTA4, 1 ;

FileCopyDir, C:\fraps\Benchmarks, C:\Test\GTA4, 1 ;

FileCopy, C:\fraps\frapslog.txt, C:\Test\GTA4, 1 ;

FileRemoveDir, C:\fraps\Benchmarks, 1 ;

FileRemoveDir, C:\Users\RT_FM\Documents\Rockstar Games\TLaD\Benchmarks, 1 ;

FileDelete, C:\fraps\frapslog.txt ;

ExitApp ;

Numpad0::ExitApp ;

minfps_EPLC.ahk

Sleep 36000 ;

Send {F11} ;

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 ;

SetKeyDelay [, 20, 20]

Run, LPCLauncher.exe ;

Sleep 2000

Loop 2 ;

{

Send {down down}

Sleep 100

Send {down up}

Sleep 100

}

Sleep 1000

Send {Enter down} ;

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 ;

ExitApp ;

Numpad0::ExitApp ;

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 ;

SetKeyDelay [, 20, 20]

Run, Launcher.exe ;

Sleep 2000

Send {Enter} ;

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} ;

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 ;

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 ;

FileCopy, C:\fraps\frapslog.txt, C:\Test\Mafia2, 1 ;

FileRemoveDir, C:\fraps\Benchmarks, 1 ;

FileDelete, C:\fraps\frapslog.txt ;

ExitApp ;

Numpad0::ExitApp ;

Metro 2033

Бенчмарк есть только в update2 версии игры.

Код:

SetKeyDelay [, 20, 20]

FileCopy, test\1.mbcfg, frontline.mbcfg , 1 ;

Run, metro2033benchmark.exe, , , NewPID ;

Process, priority, %NewPID%, High

Sleep 5000

Loop 16 ;

{

Send {Tab} ;

Sleep 500

}

Send {Space} ;

Sleep 260000 ;

Send !{F4} ;

Sleep 5000

FileCopyDir, C:\Users\RT_FM\Documents\4A Games\Metro 2033\Benchmark, C:\Test\Metro2033, 1 ;

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 ;

run, launcher.exe ;

Sleep 3000

Send {down down} ;

Sleep 60

Send {down up}

Sleep 100

Send {Enter down} ;

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} ;

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 ;

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 ;

Process, priority, %NewPID%, High

Sleep 17000 ;

loop 6 ;

{

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} ;

MouseMove, Width/2, Height/1.3 ;

Sleep 1000

Send {LButton down} ;

Sleep 100

Send {LButton up} ;

Sleep 3000

} ;

Send !{F4} ;

Sleep 5000

FileCopyDir, C:\fraps\Screenshots, C:\Test\DOW2, 1 ;

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.

Остальные игры можно запускать произвольно. Как правило, когда скрипты подогнаны под стенд, то и особых проблем с ними не возникает.

Заключение

В общем, в какие только дебри не заведут простая человеческая лень и нежелание делать что-либо.

Следующего продолжения цикла статей «Автоматизируем процесс замера производительности в играх» ждать, скорее всего, придётся долго - по факту накопления нескольких новых ресурсоёмких игр. На этом пока всё.

Конев Иван aka Ivan_FCB

Теги