Автоматизируем процесс замера производительности в играх (часть 3)
реклама
Оглавление
- Вступление
- Тестовый стенд
- Программное обеспечение
- Продолжение автоматизации процесса. Тесты в играх.
- Arcania: Gothic 4
- Battlefield Bad Company 2
- Borderlands
- Call of Duty: Black Ops
- Dragon Age Origins
- Medal of Honor (2010)
- Metro 2033
- S.T.A.L.K.E.R.: Call of Pripyat
- Автоматизация запуска встроенных в игры средств измерения производительности
- Borderlands
- Sid Meier's Civilization 5
- Colin McRae DIRT 2
- F1-2010
- Grand Theft Auto IV EFLC
- Lost Planet Colonies
- Lost Planet 2
- Mafia 2
- Metro 2033
- Resident Evil 5
- Warhammer 40000: Dawn of War II
- Запуск нескольких скриптов подряд и оптимальный порядок запуска
- Заключение
Вступление
Данный материал является продолжением цикла статей из серии «что делать, чтобы ничего не делать», в котором лень «тестировщика» возводится в абсолют, а также происходит доработка скриптов «до ума».
Предыдущие материалы:
- Автоматизируем процесс замера производительности в играх
- Автоматизируем процесс замера производительности в играх (продолжение)
Сегодня в программе - дальнейшее развитие прошлых идей и расширение тестового пакета. Не правда ли, запускать встроенные средства измерения производительности в играх вручную, да ещё при том, что автоматически тестируются собственноручно написанные сцены, довольно странно? Автоматизировать, так полностью…
реклама
Поскольку тестовый пакет может быть довольно обширным, то «за компанию» ставится вопрос сбора и сортировки полученных результатов. Делать это вручную - не самое приятное в мире занятие, поэтому в скрипты добавлены строки кода, отвечающие за складирование и сортировку результатов.
Напомню, для работы скриптов необходимо установленное ПО 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
Не менялись.
реклама
Теги
Лента материалов раздела
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила