реклама
Видеокарты

Тестирование скорости системы в играх на движке Quake

⇣ Содержание
Stanislav Vasiliev
Kuzin Andrey

Предисловие

Движок Quake, созданный программистами iD Software достаточно давно, является даже на текущий момент достаточно ресурсоёмким, что в своё время при более слабых среднестатистических системах было ещё более актуально. Поэтому для замеров производительности каждой конкретной системы, в игру была включена возможность замера FPS (расшифровывается как Frames Per Second, или Кадров В Секунду) несколькими способами. В последствии, при создании движка Quake 2 эта система была сделана ещё более удобной и расширена некоторыми дополнительными возможностями. Так как в Quake впервые появилась такая вещь, как консоль, позволяющая вызывать практически любые комманды в любой момент времени, то и замеры производительности можно провести так же любым из двух возможных способов в любой момент нахождения в игре.

Способ первый - комманда timerefresh (пишется с одной r), кстати для того, чтобы вводить комманды в Quake, не надо набирать их до конца, к примеру для того, чтобы ввести эту команду, достаточно набоать timer и нажать TAB. Почему не time или не ti? Потому что тогда интеллектуальная система Quake подставит вместо refresh слово demo, и получится слово timedemo, которое, собственно, является второй коммандой измерения скорости.

Часть 1 - Синтаксисы комманд:

Комманды для Quake 1
  • "timerefresh" - введя слово просто без всяких параметров, получаем простой тест скорости в FPS на одном месте.
  • "timerefresh ]" - получено мной совершенно случайно, в следствие опечатки, при этом похоже изображение не выводится на экран, а вместо этого показывается сколько кадров максимум (на самом мощном акселераторе) мог бы выдать Ваш процессор, для сравнения в первом случае мой P2-450(464) показывал 155 FPS (Quake2, base1, сразу после начала), при втором - 195, что означает, что всё же пока узким местом явился акселератор. Хотя это мой вывод, и я нигде не видел никакой документации по этому вопросу (даже в полном списке комманд консоли Q)
  • "timedemo ???" , где ??? - название демонстрации, к примеру если это стандартная демка Q, запускаемая при запуске, то она имеет название от demo1 до demo3 (всего 3 демки), но так же можно подключить любую другую демку, создав в каталоге ID1 папку с именем DEMOS, и скачав туда файл с расширением DEM. После чего написать в консоли timedemo name, и демка будет играться.
Комманды для Quake 2:
  • "timerefresh" и "timerefresh ]"- совершенно идентично Quake 1.
  • "timedemo 1" (1 включает режим timedemo а 0 - отключает) - синтаксис этой комманды был совершенно переработан. Кстати надо рассказать о принципе действия этой комманды. Насколько я понимаю, в стандартной игре есть некий лимит скорости происходящих событий, и все события каким либо образом привязаны к таймеру, то есть, если проще говорить, игра отдельно обрабатывает движение, и отдельно вывод визуализации этого движения. Так например пехотинец всегда делает один шаг в одну секунду, при этом например шаг состоит из 60 фаз (это я про анимацию персонажа), то есть поскольку в игре всё не как в жизни, то персонажи анимируются следующим образом - берётся нога (всё буду обьяснять немного грубо, и не всегда совсем так, как это реализовано программистами, и если кому интересно как это сделано на самом деле, он может пойти на любой сервер типа www.planetquake.com и там ознакомиться с огромными текстами по принципам работы движка Q), после чего ей прописываются крайние положения (например стоит и висит в воздухе), а затем примерно делается ещё 58 кадров анимации (как ходит ступня, как сгибается колено, ну и т.д и т.п), в результате мы видим плавное движение этой самой анимированной ноги. Теперь о том, как работает графическая часть - игра сама считает время, за которое нога должна быть опущена, но её совершенно не волнует рассчёт геометрии этой ноги и вопрос увидите ли вы эту ногу или не увидите вообще. Она просто считает где должна быть нога. А визуализацией занимается отдельный блок, который как раз здорово зависит от скорости вашего процессора, акселератора, памяти и др. составляющих системы (кроме звуковой карты, для неё тоже сделан отдельный блок), и когда у Вас слишком медленный компьютер, который например показывает только 5 кадров в секунду, то соответственно вы и увидите только 5 из 60 позиций этой ноги. А по русски мы это называем тормозами. То есть всё дёргается, попасть никуда нельзя, ну и т.д. А если у вас 120 кадров в секунду ? Тогда Вы увидите каждый кадр анимации ноги 2 раза. И вот как раз на этом и основано действие комманды TIMEDEMO, она включает синхронизацию этих двух блоков, и каждый из кадров анимации показывается на экране всего 1 раз. Соответственно если FPS меньше AFPS (анимационных фрэймов в секунду), то игра будет идти медленнее, если же их больше, то быстрее. И при всём этом будет производиться конкретные замерения количества кадров в секунду каждую секунду, а в конце будет выдано среднее значение. Не кажется ли Вам, что мы ушли далеко от синтаксиса ? А вот мне кажется... (Кстати ещё раз напоминаю, всё вышесказанное - жуткая интерполяция реальных технологий игры, и поэтому просьба тем, кто хорошо понимает в принципе работы движка Q не посылать мне мануалей по этому самому движку, они у меня есть, я просто пытаюсь кое что доходчиво обьяснить тем, кто таких мануалей не читал, но тем не менее хочет хоть примерно понять как оно работает). Так вот значит... Синтаксис таков: timedemo 1 или timedemo 0, при этом 1 включает режим отвязки от времени, и 0 - выключает. Соответственно если надо протестировать - то пишем 1, если хотим поиграть - 0. При этом режим timedemo работает и в игре. Главное отличие от Q1 в этой ситуации только то, что играется не одна демка, а вся игра переключается в ускоренный режим. Но ведь нам надо получить скорость в конкретной демонстрашке? А вот для этого и служит такая комманда как
  • "demomap ???.!!!", где ??? - название основной части файла демонстрации (BASEQ2DEMOS для внешних демок), а !!! это расширение файла демонстрации. Для стандартных демонстраций оно DM2. Значит чтобы включить демонстрацию, надо набрать "demomap demo1.dm2" (опять напоминаю о том, что кавычки не нужны). После этого запускается демонстрация DEMO1 в ускоренном (замедленном) времени. Кстати для того, чтобы если у Вас _жутко_ медленный компьютер, Вам не приходилось смотреть на одну демку по пол года, сделана не полная рассинхронизация со временем. То есть если FPS большой, то всё будет идти слишком быстро, а вот если маленький, то всё будет идти как обычно, только опять таки с "тормозами". Но после просмотра демонстрации наступает ещё одна проблема: Quake 2 не только не выдаёт результатов, но ещё и запускает demo2 в том же темпе. Что делать? А делается так. Прописывается алиас на прокрутку демок с принудительным убиванием демосервера. Делается это следующим способом:
    alias d1 "demomap demo1.dm2;nextserver d2"
    alias d2 "killserver"
    после чего (или перед чем) вводите timedemo 1, и просто убираете консоль, запускается демка, отыгрывается, заканчивается и выдаёт снизу FPS. Выглядит так :
Quakescr1.jpg (45976 bytes)

Как видно из скрина, было проиграно 689 фрэймов анимации за 8 секунд и это получилось потому, что было около 86 fps в среднем.

Кстати по поводу комманды timerefresh в Quake 1 (и иногда в Quake 2) - на некоторых 3D карточках, почему то, при попытке сделать timedemo режим OpenGL переключается в Software, а значит больше 1-2 fps в результате через пару минут (пока крутится этот таймерефреш) Вы не получите. Я встречал такие проблемы раньше на Riva128, теперь вроде бы их исправили, а теперь встречаю на RivaTNT.

Quake 3 Arena Test 2

В вышедшей новой версии Quake 3 Arena код timedemo поправлен и работает как надо. Для тестирования необходимо вызвать консоль нажатием тильды (~ - прямо под Esc) и набрать "timedemo 1" после этого если нужно протестировать производительность в Q3Test1 то набрать "demo q3testdemo1", если нужно протестировать Q3Test2 то набрать "demo q3testdemo2". Игра прокрутит 1 раз демонстрацию и вывалится в меню. После этого надо вызвать консоль и записать результат FPS. Затем сменить разрешения и/или разрядность и снова запустить тест по новой.

Следующая страница →
 
⇣ Содержание
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Вечерний 3DNews
Каждый будний вечер мы рассылаем сводку новостей без белиберды и рекламы. Две минуты на чтение — и вы в курсе главных событий.
window-new
Soft
Hard
Тренды 🔥
Итоги Golden Joystick Awards 2024 — Final Fantasy VII Rebirth и Helldivers 2 забрали больше всех наград, а Black Myth: Wukong стала игрой года 48 мин.
В программу сохранения классических игр от GOG вошли S.T.A.L.K.E.R. Shadow of Chernobyl и Call of Pripyat, а Clear Sky — на подходе 2 ч.
Star Wars Outlaws вышла в Steam с крупным обновлением и дополнением про Лэндо Калриссиана 3 ч.
Рекордная скидка и PvP-режим Versus обернулись для Warhammer: Vermintide 2 полумиллионом новых игроков за неделю 5 ч.
Роскомнадзор с декабря начнёт блокировать сайты за публикацию научной информации о VPN 5 ч.
Новый трейлер раскрыл дату выхода Mandragora — метроидвании с элементами Dark Souls и нелинейной историей от соавтора Vampire: The Masquerade — Bloodlines 6 ч.
В Японии порекомендовали добавить в завещания свои логины и пароли 8 ч.
Обновления Windows 11 больше не будут перезагружать ПК, но обычных пользователей это не касается 8 ч.
VK похвасталась успехами «VK Видео» на фоне замедления YouTube 10 ч.
GTA наоборот: полицейская песочница The Precinct с «дозой нуара 80-х» не выйдет в 2024 году 11 ч.
Представлен внешний SSD SanDisk Extreme на 8 Тбайт за $800 и скоростной SanDisk Extreme PRO с USB4 27 мин.
Представлен безбуферный SSD WD_Black SN7100 со скорость до 7250 Мбайт/с и внешний SSD WD_Black C50 для Xbox 32 мин.
Новая статья: Обзор ноутбука ASUS Zenbook S 16 (UM5606W): Ryzen AI в естественной среде 47 мин.
Redmi показала флагманский смартфон K80 Pro и объявила дату его премьеры 3 ч.
SpaceX рассказала, почему затопила ракету Super Heavy во время последнего запуска Starship 4 ч.
Астрономы впервые сфотографировали умирающую звезду за пределами нашей галактики — она выглядит не так, как ожидалось 6 ч.
Японская Hokkaido Electric Power намерена перезапустить ядерный реактор для удовлетворения потребности ЦОД в энергии 7 ч.
Meta планирует построить за $5 млрд кампус ЦОД в Луизиане 8 ч.
Arm задаёт новый стандарт для ПК, чтобы навязать конкуренцию x86 8 ч.
HPE готова ответить на любые вопросы Минюста США по расследованию покупки Juniper за $14 млрд 8 ч.