Конфиг и оборудование

ENG

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

Сам мод: последняя на данный момент версия
Наличие версии поновей можно проверить здесь
Установка ничем не отличается от установки обычного мода для Q3.

Замены стандартному quake3.exe, поддерживающие автоматическую скачку карт, сворачивание игры и прочую полезноту:
dfengine 1.08 win
dfengine 1.08 lin i386
iodfe win x86
iodfe lin i386
iodfe lin x86_64

Чтобы заработала автозакачка карт, надо изменить dl_source на "http://ws.q3df.org/getpk3bymapname.php/%m" и cl_allowDownload поставить 0.




Рассмотрим моменты, касающиеся конфига.
Насчёт биндов передвижения и переключения оружия ничего определённого посоветовать нельзя, поскольку это хорошо работает практически в любом варианте и соответственно делается так, как вам удобно.
Разве что cg_autoswitch можно сразу поставить в значение 1 или 2, т.к. эта фишка полезна на очень многих картах (правда есть несколько непродуманных мап, где это придётся отключить, но карт таких немного).
Настройки графики не критичны в том случае, если ваша машина держит стабильно 125 fps (r_picmip 0 for teh win); если же компьютер слабый, то имеет смысл повысить фпс, сбросив графику в худшее качество.
Также стоит отключить вертикальную синхронизацию, т.к. она даёт ощутимую задержку ответа видеоряда. Может быть включена в драйвере по дефолту.
Общепризнанный стандарт для выстрела и прыжка - левая и правая кнопки мыши соответственно. Конечно, можно забиндить эти важные команды и по-другому, но тогда очень вероятны проблемы со стрейфами, рокетджампом и плазмаклаймбом.
Ещё один важный в дефраге бинд - скрипт на рокетджамп.
bind key "+moveup;+attack"
Это единственный некритичный скрипт, и его используют очень многие; можно обойтись и без него, можно его использовать - это решение принадлежит вам и администрации соревнований/серверов. Кстати, могут возникнуть сложности с тем, чтобы научиться играть без скрипта, если он окажется запрещён.



Настройки мыши.
Чувствительность - sensitivity - непростой вопрос, т.к. всякие движения необходимы - и быстрые, и точные. Нужен балланс.
Самый простой и универсальный способ замерить сенсу - в сантиметрах перемещения мыши, необходимых для поворота на 360 градусов в игре.
Берём линейку и меряем :D
Способ позволяет избежать зависимости от программного обеспечения и разрешения мыши.
Оптимальные, на мой взгляд, значения сенсы находятся между 8 и 25 сантиметрами.

Если есть желание посчитать значение sensitivity, исходя из сантиметров или наоборот, формулы следующие: sens = 41563/(dpi*sm), соответственно sm = 41563/(dpi*sens).
Это годится при условии, что m_pitch и m_yaw имеют дефолтное значение 0,022 и системный множитель чувствительности мыши равен 1.
Чтобы отключить влияние системы на мышиный ввод в dfengine и ему подобных ставим in_mouse 3.

Акселерация - cl_mouseaccel - достаточно хороша в значении 0; в deathmatch, где необходимо сочетание резких поворотов и точного прицеливания, акселерация работает хорошо; в дефраге же лучше подходит линейная зависимость между перемещением мыши по коврику и изменением направления взгляда в q3, т.к. точность требуется в каждом движении.
Однако, есть примеры игроков, умело управляющихся и с акселем, даже большим. Наверняка же можно сказать, что небольшое значение акселя сильно не навредит.
Фильтрация ввода - m_filter - некритичный параметр, однако при большой чувствительности со значением 1 играть несколько удобнее. Это включает интерполяцию значений направления взгляда, появляются дополнительные средние значения между теми, что были реально введены при помощи мышки.



Настройки физики.
Тут надо сказать, что, как и в любом другом спорте, является логичным, что игроки должны иметь равные возможности.
Поэтому есть регламентированные настройки физики, и легитимными являются только демки, записанные при этих настройках.

Переменные, фактически отвечающие за физику, здесь стоят по дефолту:
sv_cheats 0
timescale 1
g_speed 320
g_gravity 800
g_knockback 1000

Следующие переменные изначально не были предназначены для настройки физики:
sv_fps 125
com_maxfps 125
g_synchronousClients 1
pmove_fixed 0
Однако, такая зависимость обнаружилась.
Поэтому, для полной ясности, я напишу о них подробнее.


sv_fps - фреймрейт сервера - т.е. частота, с которой обсчитывается физика.
Дело в том, что в q3 каждый фрейм происходит расчёт на основе только что введённых данных.
Т.е. вы вводите данные (нажатия, положение мыши), они обсчитываются, изменяется состояние игрока.
И так столько раз в секунду, сколько выставлено значение фпс.
Почему выбрано значение 125?
При расчёте в каждом фрейме происходит округление величин векторов скорости до целых чисел. В q3, в отличие от обычных методов, округление происходит по математическим правилам, т.е. не всегда в меньшую сторону, а в зависимости от числа после запятой.
При таком раскладе есть возможность заставить ошибки округления аккумулироваться в бОльшую сторону.
Именно поэтому выбрано число 125, как одно из ряда значений, при котором поведение физики является наиболее благоприятным для более высоких прыжков и лучшего набора скорости.
com_maxfps 125 - это ограничение максимального значения частоты обсчёта видеоряда и частоты опроса ввода, выбрано равным значению фпс сервера для отсутствия расхождений в расчёте физики и видео с инпутом на хороших компьютерах.
g_synchronousClients - этот параметр отвечает за синхронизацию клиент-сервер.
Значение 0: сервер использует значение фпс видеоряда от клиента для определения частоты обсчёта; в этом случае sv_fps не играет никакой роли, частота начинает соответствовать частоте видеоряда, и физика зависит от реального фпса.
Значение 1: частота обсчёта определяется значением sv_fps, появляется возможность заставить физику вести себя наиболее благоприятно, что нам и необходимо.
pmove_fixed - при включении данной функции эмулируется стабильный 125фпс режим обсчёта.
Эта фича создана специально для работы на слабых машинах с g_synchronousClients 0; т.е. она отключает использование значения фпс от клиента для определения частоты обсчёта.
Сам же режим g_synchronousClients 0 необходим для игры онлайн, поскольку при значении 1 происходит задержка между вводом данных и ответом видеоряда, зависящая от пинга.
Однако режим с pmove_fixed 1 работает неидеально, могут быть баги с триггерами и оружием при низком фпс, поэтому для listen (offline) дефраг сервера pmove не используют. Фактическое отличие режима с pmove проявляется с оружием - в небольшом диапазоне пологих углов при отстреливании от поверхностей отдача незначительно отличается.

Что же касается онлайн игры, то здесь должны быть использованы следующие значения по причинам, которые объяснил выше.
g_synchronousClients 0
pmove_fixed 1
pmove_msec 8
Последняя переменная отвечает за то, какой фпс-режим будет эмулироваться при включении pmove_fixed.
Значение указывается в миллисекундах и определяет длину фрейма.
1000 msec/8msec=125герц - что нам и требовалось.


Вполне вероятно, что вы чего-то не поняли из этих объяснений (а может, и вовсе ничего не поняли, что даже более вероятно=))), но отчаиваться не стоит.
Достаточно запомнить, что g_synchronousClients 0 + pmove_fixed 1 это почти то же самое, что и g_synchronousClients 1 + pmove_fixed 0, первое используется онлайн, второе - оффлайн.


Для игры онлайн также актуальны настройки соединения - влияют на физику с оружием и комфортное восприятие игры
rate 25000
snaps 125
cl_maxpackets 125


До кучи вопрос о том, почему все легитимные рекорды в дефраге делятся нацело на 0.008.
Происходит так потому, что тактов в секунде 125, а соответственно шаг времени равен 8 миллисекунд (есть, правда, карты-исключения из этого правила, где результат плюс 0.004 кратен 0.008; происходит так, если игрок респаунится в таймере или телепортируется в него).



Ну что же, с физикой разобрались, поехали дальше.
Бинд на рестарт.
На дефраг картах необходимо как-то возвращаться на старт после того, как дорожка пройдена или вдруг захотелось начать сначала.
Можно использовать для этой цели команду kill, забинденную на удобную клавишу.
Альтернативный вариант, подходящий только для игры в оффлайне - map_restart 0


Для просмотра демок удобно забиндить клавиши для изменения скорости проигрывания; бывает необходимо перемотать, а иногда что-то внимательно посмотреть.
Вполне хватит трёх значений timescale, например 0.2, 1 и 5, хотя можно использовать и более плавное изменение скорости.



Вывод статистики.
Тут посоветовать ничего конкретного нельзя, статсы, полезные для одного игрока, могут оказаться лишним мусором на экране для другого.
Поэтому объясню, как их включить, а вы решайте, какие из них вам необходимы.

df_chs0_Draw - включает нулевой статс, отображающий нажатия клавиш, которые сохраняются в демках, начиная с версии дефрага 1.7.
Очень полезен для понимания того, как тот или иной трикс сделан.
1 - включить для просмотра дем и во время игры.
2 - только для демок и режима спектатора.

df_chs1_Draw и df_chs2_Draw - два блока статсов по 8 параметров каждый.
Включаются соответственно df_chs1_Info1-8 № и df_chs2_Info1-8 №, где № - это номера статсов, указанные в DeFRaG\DOCS\list-[CHS-Info].txt, а также выводящиеся в консоль по команде \info
Можно определить отображение более одного статса каждым информационным параметром, включив df_chs1(2)_EnableCombos и вписав номера в информационный блок через пробел.
Для многих статсов можно включить отображение с десятичной запятой, дописав перед номером статса цифру, равную необходимому числу знаков после запятой.
Есть альтернативный вариант вывода этих статсов через команды say и echo, который не окажет влияния на фпс и позволит не засорить экран.
Очень удобен для отображения истории скоростей прыжков, акселей и т.д.
Формат следующий: bind key "varcommand say(echo) $chsinfo(№)"



Сейвпоз.
Очень полезная фича дефрага для триксов и отработки дф-мап, позволяет восстанавливать сохранённые положение и скорость игрока.
Поэтому нет ничего удивительного в том, что практически все триксовые демки записаны с sv_cheats 1; сейвпоз работает только в этом режиме.
Изменение ключевых переменных в любом случае отображается в консоли, поэтому жульничать с ними никто не станет, а вот каждый раз возвращаться в исходную позицию может надоесть.
Настройки следующие:
seta saveposname variablename - установить сохранение позиции в переменную "variablename"
bind key "savepos" - сохранить текущую позицию
bind anotherkey "vstr variablename" - восстановить сохранённую позицию



Для тех, кому не терпится поиграть, предлагаю готовый пример конфига с описанными выше и другими полезными настройками.
Также включает фильтр консоли от лишней информации (для маперов и прочих девелоперов она не лишняя).



Как настроить нестандартное разрешение видео (например для широкоформатного монитора):
r_mode -1
r_customwidth - ширина
r_customheight - высота
vid_restart

cg_fov в Q3 привязан к разрешению по горизонтали, поэтому при переходе на широкий формат старый fov будет мал.
Наверное, можно как-то рассчитать эквивалентный fov, но есть способ проще: при старых настройках сделать скриншот (команда screenshot), затем, не двигаясь в игре, сменить настройки на новые и подобрать значение cg_fov так, чтобы по вертикали было видно ровно столько же, сколько на скрине.



Ещё полезнота: личные сообщения на онлайн сервере.
\tell номер_игрока сообщение
Номер смотрим по команде \info players
Собственно фича Q3, но info players есть только в дефраге.


На карте может быть несколько респаунов; как появляться всегда на нужном:
команда \respawnpoint set поблизости от него
\respawnpoint clear - сбросить привязку к респауну



И в заключение немного об оборудовании.
Что касается железа, то тут чем мощнее - тем лучше, это и так понятно.
А вот что касается мыши, то научиться неплохо играть можно практически на любой; хорошо, если она обладает эргономичной формой, ещё лучше, если она оптическая/лазерная.
Тогда есть шанс с минимальными потерями для real life научиться играть не только хорошо, а отлично.




Конечно, можно весело провести время в дефраге, и не следуя всем этим советам: это лишь мой взгляд на данные вопросы.