Автоматизируем процесс замера производительности в играх (страница 2)
реклама
Borderlands
Не теряющая популярности игра, полюбившаяся многим.
Особенности, которые следует учитывать:
- Игра позволяет загрузить уровень, не прибегая к использованию мыши, соответственно скрипт должен подойти к любому разрешению экрана. Это хорошо.
- Надо учесть, что время загрузки уровня – величина непостоянная.
Последовательность действий:
SetKeyDelay [, 20, 20] ;Установка задержки и времени зажатия клавиш в миллисекундах. run, Borderlands.exe ;Запуск игры. рекламаSleep 30000 ;Время, необходимое для запуска игры. Выбрано с хорошим запасом, но при тестировании слабой конфигурации, возможно, придётся увеличить. Send {Enter} ;Меню с просьбой нажать Enter. Скрипт у меня послушный, сам и «нажмёт». Sleep 3000 Loop 4 ;Объявление цикла. Заключённая в фигурные скобки ниже последовательность действий будет воспроизведена четырёхкратно. { Send {Enter} ;Клик по меню «Один игрок». Sleep 1500 Send {Enter} ;Клик по сохранению, находящемуся в первой ячейке. рекламаSleep 13000 ;Пауза, необходимая для загрузки уровня. Вообще, уровень загружается быстро даже на двухъядерных Athlon’ах, но кому-то, возможно, и придётся увеличить данное значение. Send {F10} ;Создание скриншота. Так как время загрузки уровня – величина переменная, то скриншот в данном случае является необходимостью. Sleep 1000 Send {F11} ;Начало замера. Отсюда и далее персонаж проходит маршрут. Во время прохождения маршрута снимаются цифры производительности. Sleep 1000 Send {d down} Sleep 250 Send {d up} Send {Shift down} Sleep 100 Send {w down} Sleep 5000 Send {w up} Send {Shift up} Send {s down} рекламаSleep 5000 Send {s up} Sleep 1000 Send {Shift down} Send {w down} Sleep 2500 Send {Space down} Sleep 500 Send {Space up} Sleep 2000 Send {Shift up} Send {right down} Sleep 800 Send {right up} Sleep 1200 Send {w up} Sleep 500 Send {s down} Sleep 1000 Loop 10 { Send {a down} Sleep 500 Send {a up} Send {d down} Sleep 500 Send {d up} } Send {s up} Sleep 1000 Sleep 1000 Send {Space} Sleep 3000 Send {F11} ;Окончание замера производительности. Sleep 1000 Send {F10} ;Второй скриншот. Пригодится. Sleep 1000 Send {Esc} ;Выход в меню паузы. Sleep 1000 Send {up} ;Выбор строки «Выход». Sleep 500 Send {Enter} ;Клик по выбранной строке. Sleep 2000 Send {up} ;Выбор строки подтверждения выхода. Sleep 500 Send {Enter} ;Клик по выбранной строке. Sleep 8000 ;Пауза, пока осуществляется возврат в главное меню. } ;Переход на следующую итерацию/окончание главного цикла. Send {up} ;Выбор строки «Выход». Sleep 500 Send {Enter} ;Клик по выбранной строке. Sleep 500 Send {up} ;Выбор строки подтверждения выхода. Sleep 500 Send {Enter} ;Клик по выбранной строке. Эхх, один из самых простых среди используемых скриптов, если не самый простой.
|
Дополнительно - скриншоты начала и окончания замера производительности:
Перейду непосредственно к результатам:
Настройки графики:
- Разрешение: 1920x1080;
- Анизотропная фильтрация: 16x;
- Динамические тени: On;
- Следы от пуль: On;
- Качество листвы: High;
- Качество текстур High;
- Детализация игры: High;
- Окклюзия: Off;
- Bloom: On;
- Глубина резкости: On;
- Отражение света: On.
Borderlands
Min | Avg FPS
Включите JavaScript, чтобы видеть графики
Если отбросить по два крайних результата и усреднить пару оставшихся, то получится следующая картина:
- Тест 1: Min FPS 90 | AVG FPS 113,6135
- Тест 2: Min FPS 92 | AVG FPS 115,3015
- Тест 3: Min FPS 89 | AVG FPS 111,741
Да, разброс результатов получился высоковатым, однако находится в пределах четырёх процентов и результаты могут быть применимы для оценки производительности железа.
Call of Duty: Black Ops
Игра вышла недавно и, хотя понравилась не всем, все же смогла пробиться к вершинам чарта продаж проектов сервиса Steam. Такой продукт обойти стороной сложно.
Особенности, которые следует учитывать:
- Игра позволяет загрузить уровень, не прибегая к использованию мыши, соответственно скрипт должен подойти к любому разрешению экрана.
- Во время загрузки любого уровня в игре показывается долгий видеоролик, который можно пропустить после загрузки уровня. Это позволяет задать одну и ту же точку начала тестовой сцены независимо от времени её загрузки.
Код получился местами сложный для восприятия неподготовленному человеку, так как содержит большое количество операторов условия и пару циклов, поэтому для упрощения восприятия немного структурирован.
Последовательность действий:
SetKeyDelay [, 20, 20] ;Установка задержки и времени зажатия клавиш в миллисекундах. run, BlackOps.exe ;Запуск игры. Sleep 16000 ;Пока игра включается – идёт показ вступительного видеоролика. По истечению определённого количества времени его можно пропустить. Как правило, 16-ти секунд достаточно, но на слабой конфигурации, возможно, придётся увеличить это число. Send {LButton down} ;Долгое зажатие левой кнопки мыши позволяет ролик пропустить. sleep 500 Send {LButton up} Sleep 3000 Send {Enter} ;Экран «Нажмите любую клавишу». Поскольку клавиша с таким названием на клавиатуре отсутствует, то используется Enter. Sleep 2000 ;Ожидание появления главного меню. i=0 ;Инициализация переменной. Понадобится, и не раз. Loop 5 ;Объявление цикла. Заключённая в фигурные скобки ниже последовательность действий будет воспроизведена пятикратно. { Send {Enter} ;Переход в меню «Кампания». Sleep 3500 Send {Down down} ;Переход на строчку вниз, к меню «Выбор эпизода». Sleep 60 Send {Down up} Sleep 500 if (i>0) ;Оператор условия, для второго и каждого последующего запуска осуществляет переход в меню ещё на строчку ниже. Такая необходимость существует из-за того, что при втором (и каждом последующем) запуске в меню появляется дополнительная строка «Продолжить», а нужен «Выбор эпизода». { Send {Down down} Sleep 60 Send {Down up} Sleep 500 } Send {Enter} ;Переход в меню выбора эпизода. Sleep 2000 Send {Up} ;Нажатие стрелки вверх. Приведёт к выделению последнего эпизода под названием «Искупление». Выбор обусловлен как высоким требованиями данного уровня к ресурсам системы, так и тем, что в этой миссии показывается один ролик вступления, а не два-три, как в остальных. Sleep 500 Send {Enter} ;Подтверждение выбора эпизода и переход в меню выбора сложности. Sleep 2000 Send {Up} ;Одиночное нажатие стрелки вверх приведёт к выбору минимального уровня сложности. Sleep 500 if (i>0) ;Однако игра, скорее всего, запоминает последнее выбранное значение, и для второго запуска тестовой сцены выбирается максимальная сложность. Чтобы этого не произошло, используется оператор условия, который для второго и каждого из последующих запусков будет переходить на строку вниз. { Send {down} Sleep 500 } Send {Enter} ;Подтверждение выбора сложности. С этого момента начинается показ длительного видеоролика и параллельная загрузка уровня. If (i==0) ;Оператор условия, выполняющийся для первого запуска тестовой сцены. Предусматривает увеличенную паузу для первой загрузки уровня. Как правило, 50-ти секунд хватит и слабому компьютеру. Но кому-то, возможно, придётся и увеличить это значение. { Sleep 50000 Send {LButton down} ;Пропуск вступительного видеоролика. sleep 500 Send {LButton up} Sleep 24000 ;Пауза в 24 секунды. Так как следующий оператор условия относится ко второму и последующим запускам тестовой сцены, то после этой паузы будет произведён выход в главное меню. } If (i>0) ;Оператор условия. Подразумевает выполнение тестовой сцены. Работает, начиная со второго запуска. { Sleep 18000 ;Пауза перед пропуском вступительного видеоролика. Send {LButton down} ;Пропуск вступительного видеоролика. sleep 500 Send {LButton up} Sleep 23500 ;Пауза, в течении которой делать нечего, всё управление осуществляется «автопилотом». Send {F10} ;Создание скриншота. Не сильно нужно, но может пригодиться. Sleep 500 Send {F11} ;Начало замера производительности и тестовой сцены. Суть сцены сводится к штурму корабля с вертолёта. Производится уничтожение пары зенитных установок, далее ведётся обстрел корабля с расстояния. Sleep 5000 Send {w down} Sleep 3000 Send {LButton down} Send {w up} Sleep 500 Send {d down} Sleep 150 Send {RButton down} Sleep 100 Send {RButton up} Send {d up} Sleep 1000 Send {w up} Send {RButton down} Sleep 100 Send {RButton up} sleep 2000 Send {LButton up} Send {w down} Sleep 350 Send {w up} Sleep 400 Send {RButton down} Sleep 100 Send {RButton up} Send {s down} Sleep 550 Send {LButton down} sleep 3000 Send {LButton up} Send {s up} Loop 7 ;К этому моменту вертолетом уже уничтожены досаждающие зенитные установки, можно и пообстреливать корабль. Обстрел реализован в цикле несколькими повторяющимися действиями. { Send {d down} Send {LButton down} Sleep 3000 Send {d up} Send {a down} Sleep 3100 Send {a up} Send {LButton up} Sleep 1000 Send {w down} Sleep 100 Send {w up} } ;Окончание обстрела. Sleep 1000 Send {F11} ;Окончание замера производительности. Sleep 500 Send {F10} ;Создание скриншота. Пригодится. Sleep 1000 } ;Окончание действий, заключённых в оператор условия, подразумевающий прохождение тестовой сцены. Send {Esc} ;Выход в меню паузы. Sleep 2000 Send {up} ;Выбор строки «Сохранить и выйти». Sleep 500 Send {Enter} ;Клик по выбранной строке. Sleep 2000 Send {up} ;Выбор строки подтверждения выхода. Sleep 500 Send {Enter} ;Клик по выбранной строке. Sleep 7000 ;Пауза, пока осуществляется выход в главное меню. Send {LButton down} ;Пропуск вступительного видеоролика. sleep 500 Send {LButton up} Sleep 1000 i++ ;Увеличение переменной i на единицу. } ;Переход на следующую итерацию/окончание главного цикла. Sleep 1000 ;Пауза по окончании цикла тестирования. Send {up} ;Переход на строку вверх – к меню выхода. Sleep 500 Send {Enter} ;Клик по выбранной строке. Sleep 2000 Send {up} ;Переход на строку подтверждения выхода. Sleep 500 Send {Enter} ;Подтверждение выхода.
|
Дополнительно - скриншоты начала и окончания замера производительности:
Перейду непосредственно к результатам:
Настройки графики:
- Разрешение: 1920x1080;
- Сглаживание: 4х;
- Синхронизация кадров: Нет;
- Фильтрация текстур: Трилинейная;
- Анизотропная фильтрация: 16x;
- Качество текстур: Макс;
- Тени: Да;
- Следы пуль: Да;
- Число трупов: Большое;
Call of Duty Black Ops
Min | Avg FPS
Включите JavaScript, чтобы видеть графики
Если отбросить по два крайних результата и усреднить пару оставшихся, то получится следующая картина:
- Тест 1: Min FPS 55,5 | AVG FPS 65,955
- Тест 2: Min FPS 56,5 | AVG FPS 67,0845
- Тест 3: Min FPS 56 | AVG FPS 67,06
Не идеально, конечно, но точности полученных цифр хватит, чтобы использовать данную тестовую сцену.
Dragon Age Origins
Популярная игра жанра RPG, сильно требовательна к вычислительным мощностям, в первую очередь - к процессорам.
Особенности, которые следует учитывать:
- Управление в меню осуществляется мышкой. Это плохо, так как скрипт становится привязанным к одному разрешению экрана, а для других разрешений придётся менять код. Здесь он оптимизирован под разрешение 1920x1080.
- Надо учесть, что время загрузки уровня – величина непостоянная.
Последовательность действий:
SetKeyDelay [, 20, 20] ;Установка задержки и времени зажатия клавиш в миллисекундах. SetDefaultMouseSpeed, 30 ;Установка скорости перемещения курсора мыши. Run, daorigins.exe ;Запуск игры. Sleep 16000 ;Пауза, пока загружается игра. В зависимости от конфигурации понадобится либо уменьшить это время, либо увеличить. Как вариант, который может подойти практически для любой системы – выставить значение паузы около 60 секунд и стереть следующие восемь строк кода, отвечающих за пропуск двух вступительных видеороликов. Send {Esc down} ;Пропуск первого рекламного ролика. Sleep 60 Send {Esc up} Sleep 500 Send {Esc down} ;Пропуск второго рекламного ролика. Sleep 60 Send {ESC up} Sleep 1000 i=0 ;Инициализация переменной. Куда ж без неё. SendEvent {Click 1835, 750} ;Клик по строке «Загрузить». Loop 5 ;Начало цикла. { Sleep 1500 ;Пауза, необходимая для перехода в меню загрузки. Подразумевается, что сохранение, предназначенное для замера производительности, будет либо единственным, либо первым в списке. SendEvent {Click 1170, 800} ;После выполнения предыдущего условия при попадании в меню загрузки сохранений оно уже выделено и остаётся только щёлкнуть по кнопке «Загрузить». Что и делается этой командой. If (i==0) ;Оператор условия. Подразумевает для i=0, то есть для первого запуска тестовой сцены 40 секунд паузы. Как правило, этого с лихвой достаточно для первой загрузки уровня. Sleep 40000 If (i>0) ;Оператор условия. Обеспечивает проход тестовой сцены при второй и каждой последующей загрузке уровня. { Sleep 6000 ;Время, необходимое для загрузки тестового сохранения. На слабых системах может быть выше, но, скорее всего, этого хватит. Send {F10} ;Скриншот, по которому впоследствии можно определить, хватило ли времени паузы строкой выше. Sleep 500 Send {F11} ;Начало замера производительности. Тестовая сцена – несложная пробежка персонажем по уровню, который является одним из самых, если не самым ресурсоёмким в игре. Send {w down} Sleep 16760 Send {w up} Sleep 5540 Send {s down} Sleep 16600 Send {s up} Sleep 500 Send {F11} ;Окончание замера производительности. Sleep 500 Send {F10} ;Второй скриншот, по окончании тестовой сцены. Sleep 500 } ;Выход из оператора условия. Дальнейшие действия актуальны для любого значения переменной i. Send {Esc down} ;Выход в меню паузы. Sleep 60 Send {Esc up} Sleep 1000 SendEvent {Click 950, 500} ;Клик по меню «Загрузить». Возвращение к точке, с которой начался цикл. Sleep 1000 i++ ;Увеличение переменной i на единицу. } ;Переход на следующую итерацию/окончание главного цикла. Sleep 1000 Send {Esc down} ;По окончании главного цикла надо выйти из меню загрузки уровня. Делается нажатием Escape. Sleep 60 Send {ESC up} Sleep 1500 SendEvent {Click 960, 700} ;Клик по меню «Выход». Sleep 1500 SendEvent {Click 900, 555} ;Подтверждение выхода. Sleep 1500 ;Пауза, в этот момент осуществляется переход в главное меню. SendEvent {Click 1850, 950} ;Клик по меню «Выход». Подтверждение не требуется.
|
Дополнительно - скриншоты начала и окончания замера производительности:
Перейду непосредственно к результатам:
Настройки графики:
- Разрешение: 1920х1080;
- Детализация графики: Очень высоко;
- Сглаживание: 4х;
- Детализация текстур: Высоко;
- Эффекты кадрового буфера: Включены;
Dragon Age Origins
Min | Avg FPS
Включите JavaScript, чтобы видеть графики
Если отбросить по два крайних результата и усреднить пару оставшихся, то получится следующая картина:
- Тест 1: Min FPS 43 | AVG FPS 54,978
- Тест 2: Min FPS 43 | AVG FPS 55,199
- Тест 3: Min FPS 43 | AVG FPS 55,3145
Даже комментировать особо нечего, повторяемость результатов близка к идеальной.
реклама
Теги
Лента материалов раздела
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила