Сегодня 02 июня 2024
18+
MWC 2018 2018 Computex IFA 2018
реклама
Видеокарты

Тестирование скорости системы в играх на движке 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
Тренды 🔥
Привет из 2014-го: Asus выпустила обновлённую GeForce GT 710 EVO с 2 Гбайт GDDR5 8 ч.
Apple выбрала процессоры М2 Ultra и М4 для серверов, на которых будут работать ИИ-функции iPhone 11 ч.
Выставка Computex 2024 откроется 4 июня, но презентации AMD, Intel и Nvidia пройдут раньше 13 ч.
iPhone 5s официально устарел, а iPod touch 6 стал винтажным 13 ч.
Vivo оккупировала значительную часть майского рейтинга производительности AnTuTu 14 ч.
Игровой монитор Xiaomi G Pro 27i на панели Mini LED с 1152 зонами затенения выйдет на мировой рынок 14 ч.
Starlink хочет открыть для пользователей спутниковую сотовую связь уже осенью 15 ч.
Новые спутники Starlink могут уничтожить радиоастрономию на Земле, предупреждают учёные 18 ч.
Корейский профсоюз Samsung объявил забастовку, но на производство и поставки памяти это не повлияет 18 ч.
Последний «дружественный» поставщик VSAT-оборудования Gilat Satellite Networks приостановил работу в РФ 18 ч.