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

Оглавление

Вступление

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

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


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

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

Напомню, для работы скриптов необходимо установленное ПО 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 ;Копирование заранее заготовленного конфиг-файла в папку, где он должен находиться. При наличии нескольких заранее заготовленных файлов можно тестировать игру с разными настройками графики, например, с разными разрешениями экрана. Собственно, такой способ гораздо надёжнее по сравнению с перемещениями во внутриигровом меню с настройками. Не забываем менять директории к файлам на свои. Для Win7, скорее всего, придётся изменить лишь имя учётной записи в коде (по умолчанию RT_FM – имя учётной записи на моём тестовом стенде).

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 ;Копирование результатов замера производительности из стандартной директории FRAPS'а в папку C:\Test\Arcania. “, 1” в конце строки является флагом, установка которого заставляет команду переписывать файлы при совпадении имён. На всякий случай. По команде FileCopyDir структура папок приёмника будет создана, если не существует изначально.

FileCopy, C:\fraps\frapslog.txt, C:\Test\Arcania, 1 ;Копирование файла frapslog.txt в созданную ранее директорию. В файле содержатся результаты тестов в упрощённой форме. Данная команда не может быть первой в списке, поскольку команда FileCopy не способна создать структуру папок.

FileRemoveDir, C:\fraps\Benchmarks, 1 ;Чистка папки с результатами. Всё ж не в одной игре производительность тестируем, и по получении результатов папку надо чистить.

FileDelete, C:\fraps\frapslog.txt ;Удаление файла frapslog.txt. Как и с папкой Benchmarks, засорять этот файл не стоит, ибо сложнее будет анализировать полученные результаты, если в этом файле окажутся результаты другой игры.

FileCopyDir, C:\fraps\Screenshots, C:\Test\Arcania, 1 ;Копирование скриншотов (по которым можно идентифицировать, правильно ли был пройден скрипт) из стандартной директории FRAPS'а в папку C:\Test\Arcania.

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 ;Установка количества пикселей по горизонтали. Как можно видеть – работа с .ini файлами в AutoHotkey проста до безобразия. Можно напрямую установить разрешение экрана, а не разбираться с подменой конфиг-файлов. Не забываем изменить путь к файлу на свой.

IniWrite, 1080, C:\Users\RT_FM\Documents\BFBC2\settings.ini, WindowSettings, Height ;Установка количества пикселей по вертикали. Исходя из этой и предыдущей строки кода, можно легко догадаться, что по умолчанию мной выставлено разрешение экрана 1920x1080. Не забываем изменить путь к файлу на свой.

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 ;Копирование результатов тестирования в директорию C:\Test\BFBC2.

FileCopy, C:\fraps\frapslog.txt, C:\Test\BFBC2, 1 ;Копирование файла frapslog.txt в созданную ранее директорию.

FileRemoveDir, C:\fraps\Benchmarks, 1 ;Чистка папки с результатами.

FileDelete, C:\fraps\frapslog.txt ;Удаление файла 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.

Строка кода «FileRead, x, 10_r.txt» заменена на строку:

IniRead, x, C:\Users\RT_FM\Documents\BFBC2\settings.ini, WindowSettings, Width ;Считывание и помещение в переменную x текущего разрешения экрана. Считывается и учитывается только количество пикселей по горизонтали, то есть «защита от дурака» на данный момент не предусмотрена. Не забываем изменить путь к файлу на свой.

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

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 ;Установка количества пикселей по горизонтали. Как и в Battlefield Bad Company 2, настройки хранятся в .ini файле, что удобно. Не забываем изменить путь к файлу на свой.

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 ;Копирование результатов тестирования в директорию C:\Test\Borderlands.

FileCopy, C:\fraps\frapslog.txt, C:\Test\Borderlands, 1 ;Копирование файла frapslog.txt в созданную ранее директорию.

FileRemoveDir, C:\fraps\Benchmarks, 1 ;Чистка папки с результатами.

FileDelete, C:\fraps\frapslog.txt ;Удаление файла 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 ;Копирование результатов тестирования в директорию C:\Test\COD.

FileCopy, C:\fraps\frapslog.txt, C:\Test\Borderlands, 1 ;Копирование файла frapslog.txt в созданную ранее директорию.

FileRemoveDir, C:\fraps\Benchmarks, 1 ;Чистка папки с результатами.

FileDelete, C:\fraps\frapslog.txt ;Удаление файла 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

Не менялись.

Telegram-канал @overclockers_news - это удобный способ следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.
Страницы материала
Страница 1 из 3
Оценитe материал
рейтинг: 4.3 из 5
голосов: 37

Теги

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



Возможно вас заинтересует

Популярные новости

Сейчас обсуждают