Last server records
Pro Nub

KZ-Rush LJ статистика

Posted by Kpoluk 20 Dec 2020 in 11:05
Данная статья описывает работу KZ-Rush LJ статистики, используемой на наших серверах и включённой в нашу сборку LAN сервера (нажмите здесь, чтобы скачать сборку). Приведённые далее значения для максимального престрейфа подразумевают прыжок с ножом, usp или другим оружием со скоростью 250 юнитов/с.


Основная и стрейфовая статистики


В качестве примера рассмотрим успешный countjump на блоке 250:


В первой строчке основной статы указано название техники. В случае HighJump в скобочках указывается также количество FF (Friction Frames), то есть фреймов, в течение которых при приближении к краю блока на вас действовало замедление edgefriction. Также число FF для HighJump можно увидеть в момент прыжка, если включить ShowPre.

Во второй строчке указывается дистанция Distance, и далее идут все элементы престрейфа (начиная с последнего), которые и определяют название техники. В нашем случае сначала был duck престрейф, а затем престрейф bhop типа. В скобках у bhop престрейфа указано количество FOG (frames on the ground), то есть сколько фреймов прошло с момента приземления до прыжка (подробнее о FOG см. в разделе ShowPre). В последней строчке пишет количество стрейфов.


В столбцах стрейфовой статы дана информация по каждому сделанному стрейфу. В первом столбце пишется клавиша стрейфа, во втором разница gain (прирост скорости) и loss (потери скорости), а в третьем loss. В четвёртом столбце указано количество фреймов, которое длился стрейф. Последний столбец показывает эффективность стрейфов, то есть отношение количества стрейфов, которые давали прирост скорости, к общему количеству фреймов для каждого стрейфа в процентах. Можно изменить настройки статы (см. далее раздел Меню настроек) так, что вместо клавиши стрейфа в первом столбце будет его номер. Также в последнем столбце вместо эффективности (Efficiency) можно выбрать перекрытия (Overlaps) или рассинхрон (Desync). Остановимся подробнее на этих понятиях.

Overlaps - количество фреймов в конце стрейфа, в течение которых помимо основной была нажата ещё какая-то клавиша. Например, если при переключении стрейфа с A на D вы нажали D когда A ещё не была отпущена, то это считается перекрытием. Значения Overlaps больше 1 приводят к снижению Efficiency. Desync показывает количество фреймов, когда движение мыши происходило в сторону, противоположную стрейфу. Как известно, мышь должна чуть запаздывать по сравнению с нажатиями клавиш, однако слишком сильное запаздывание несёт в себе опасность. Если Desync будет больше 2, то Efficiency с большой вероятностью пострадает. Таким образом, Overlaps и Desync помогают выяснить конкретную причину потерь скорости при стрейфах. Если вам этого мало, то есть специальная команда /dt (или /detailed), которая помимо самой стрейфовой статы выведет в консоль подробную информацию по каждому фрейму - gain-loss, зажатые клавиши, направление движения мыши.

Внизу стрейфовой статы указаны jof (jumpoff, то есть какой запас до края блока у нас был в момент прыжка), land (landing, то есть с каким запасом мы приземлились в конце) и block (дистанция блока, отображаемая при условии наличия jof и land):


Если бы блок взять не удалось, то вместо land написало бы last, то есть расстояние, которого не хватило, чтобы взять блок при данном jof:


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


ShowPre


Отображение скорости в момент прыжка может работать в двух режимах (см. раздел Меню настроек).

В режиме Pre + Post Speed в момент прыжка в HUD отображаются тип прейстрейфа, количество FOG, скорость до прыжка (перед попаданием на землю) и скорость после (это касается не только bhop, но также и double duck):


В режиме Speed + Difference отображаются округлённое значение скорости до прыжка и потери скорости после:


По умолчанию bhop престрейф может быть окрашен в три цвета. Выбор цвета определяется следующим образом:

  • зелёный - bhop 1 FOG без потерь скорости (скорость перед прыжком была меньше 299.973 юнита/с)
  • синий - bhop 2 и больше FOG с минимальными потерями скорости (скорость перед прыжком была больше 299.973 юнита/с)
  • красный - bhop с потерей скорости (все остальные случаи)
Для double duck всё проще - 2 FOG даёт зелёный престрейф, 3 и больше красный (1 FOG быть не может). Другие типы престрейфа имеют белый цвет. Выводится прейстрейф в том же HUD канале, что и /speed и /keys, поэтому если отображаются скорость или клавиши, то престрейф начинает обновляться с их частотой, из-за чего можно заметить его мерцание. Цвет скорости и клавиш по умолчанию белый, но если отображается цветной престрейф, то цвет перенимается у него.


JumpOff


Jumpoff можно увидеть не только в стрейфовой стате, но и непосредственно в момент прыжка (команда /jumpoff или /jof). Причём с помощью настроек (см. далее Меню настроек) можно также включить отображение jumpoff для duck или просто при падении с блока. Если jumpoff не больше 5, то его цвет в HUD будет красным, а если он при этом ещё и окажется минимальным, то цвет будет зелёным. Заметьте, что минимальный здесь означает наименьший возможный в данной ситуации, то есть при другом разбеге минимальный jumpoff может оказаться меньше. Например, пусть мы бежим навстречу краю lj блока. Наша скорость равна 250 юнитов/с, то есть каждый фрейм мы преодолеваем 2.5 юнита. При падении с lj блока jumpoff конечно же будет минимальным, но при этом его значение может варьироваться от 0 до 2.5 юнитов.


Fuser2 и Height


Никогда не задумывались, почему bhop и countjump дают настолько разные дистанции? Ведь в обоих случаях мы делаем прыжок скроллом, и в обоих случаях максимальный престрейф, позволяющий не потерять скорость, равен 299.973 юнита/с. Оказывается, дело в высоте прыжка, которая в свою очередь зависит от специального параметра под названием fuser2. В момент прыжка fuser2 становится равным 1315, и затем каждый фрейм уменьшается на 10, то есть через 1.31 секунды обнуляется. Когда мы делаем бхоп на обычном блоке, то с момента прыжка перед бхопом ещё не успевает пройти 1.31 секунды, fuser2 не успевает обнулиться, и высота полёта становится меньше. В случае же countjump такого не происходит, так как duck никак на fuser2 не влияет. Теперь становится понятно и то, что дистанция upbhop и dropbhop зависит от разницы высот между начальной платформой и уровнем прыжка, и что на одном и том же бхоп блоке sbj выше обычного бхопа.

В консольном логе каждый прейстрейф сопровождается информацией о fuser2. Также с помощью команды /fuser2 можно включить отображение fuser2 для HUD в момент прыжка и в основной стате.

Вместо fuser2 можно смотреть непосредственно на высоту полёта, прописав в чате команду /height. В момент прыжка отображается оценочная высота, реальная же будет показана в основной стате (она может оказаться меньше, если полёту помешал потолок).


JumpBug Trainer


Успешный jumpbug происходит тогда, когда игрок при падении на землю одновременно встаёт и прыгает, причём его центр находится в этот момент на высоте 36-38 юнитов от земли (то есть между ногами стоячей модельки и землёй меньше 2 юнитов). В таком случае, если в KZ-Rush LJ стате включена статистика jumpbug (см. Enable Menu в разделе Меню настроек), вы увидите сообщение следующего вида:


Здесь указана высота dist, показывающая разницу между уровнями стартовой и финишной платформ, а также расстояние left от ног до земли в момент выполнения jumpbug. Если при этом заглянуть в консоль, то там можно обнаружить следующее:

[MAIN] JumpBug
Distance: 512.00 units
Left: 1.031250 units
Your Z: -666.968750
Required Z: -668.000000 (+ 2.0)

Помимо dist и left в консоль выведена вертикальная координата Z центра модельки в момент выполнения jumpbug (Your Z), а также диапазон высотой в 2 юнита, в который нужно было попасть для успешного выполнения (Required Z).

Но что если мы смогли одновременно встать и прыгнуть, но сделали это слишком рано или слишком поздно? Тут нам поможет jumpbug trainer. Включить его можно либо в Enable Menu (см. Меню настроек), либо поставив ljs_enable_jumpbug 2. Вот пример неудачного jumpbug при включённом trainer:


Как подсказывает стата, мы одновременно встали и прыгнули на 4 фрейма раньше, чем нужно, на высоте 37.19 юнита от нужной. В консоли же можно увидеть и нашу координату Z, и необходимый диапазон, и ту координату, на которой мы могли бы сделать успешный jumpbug (Possible Z):

[MAIN] Failed Jumpbug
Distance: 512.00
4 frames earlier
Higher by: 37.19
Your Z: -630.808776
Required Z: -668.000000 (+ 2.0)
Possible Z: -666.968750 (4 frames later)

В примерах выше jumpbug был возможен потому, что на стартовой платформе был выполнен scroll duck. Если же на ней сделать обычный прыжок, то окажется, что выполнить jumpbug на данной высоте невозможно, и в HUD мы увидим следующее:


В консоли опять же информации больше:

[MAIN] Impossible Jumpbug
Distance: 512.00
Lower by: 13.78
Your Z: -681.786621
Required Z: -668.000000 (+ 2.0)
Nearest Z1: -662.833190 (2 frames earlier)
Nearest Z2: -672.269897 (1 frame earlier)

Помимо знакомых нам Your Z и Required Z здесь есть также две высоты, ближайшие к необходимому диапазону: Nearest Z1 находится выше диапазона, а Nearest Z2 ниже, и ни в один из этих фреймов успешного jumpbug у нас не получилось бы.


Команды чата


/lj, /ljstats - вкл/выкл основную и стрейфовую стату
/ljs, /ljmenu, /ljsettings - меню с настройками LJ статы
/savelj, /saveljsettings - сохранить LJ настройки
/pre, /showpre - показывать престрейф в момент прыжка
/jof, /jumpoff - показывать jumpoff в момент прыжка
/colorchat - вкл/выкл цветные сообщения статы в чате
/ljsound - вкл/выкл звуки LJ статы
/beam, /ljbeam - отрисовывать траекторию полёта
/speed - отображать текущую скорость
/ljpre - при включённом showpre показывать престрейф longjump
/multibhop - при включённом showpre показывать престрейф каждого бхопа
/duck, /ducks, /duckpre, /duckspre - при включённом showpre показывать престрейф каждого дака
/fuser2 - показывать fuser2 в момент прыжка и в основной стате
/height - показывать высоту в момент прыжка и в основной стате
/ljtop - показать MOTD с top10 (при условии ljs_top_enable 1)
/weapontop - меню с выбором скорости оружия для top10 (при условии ljs_top_weapon_enable 1)
/dt, /detailed - вместе с обычной стрейфовой статой выводить в консоль подробную информацию по каждому фрейму
/ljversion - версия LJ статы


Меню настроек


Меню вызывается командой чата /ljs.

Первая страница настроек:


1. Stats Mode (по умолчанию: Simple)

Режим работы основной и стрейфовой статы.
Advanced - к обычному режиму добавляется отображение статы для случаев, когда начальная и конечная позиция находятся на разной высоте, а также когда полёт заканчивается касанием телепорта, слайда или воды (ljs_mode 2)
Simple - обычный режим работы (ljs_mode 1)
Off - отключить (ljs_mode 0)

2. ShowPre (по умолчанию: Off)

Режим отображения скорости в момент прыжка.
Speed + Difference - скорость перед прыжком и потери скорости после прыжка (ljs_showpre 2)
Pre + Post Speed - FOG, скорость до и после прыжка (ljs_showpre 1)
Off - выкл (ljs_showpre 0)

3. JumpOff (по умолчанию: Off)

Режим отображения расстояния до края блока.
for Jump + Duck + Fall - для прыжка, duck и при падении с блока (ljs_jumpoff 3)
for Jump + Duck - для прыжка и duck (ljs_jumpoff 2)
for Jump - для прыжка (ljs_jumpoff 1)
Off - выкл (ljs_jumpoff 0)

4. ColorChat (по умолчанию: On)

Цветные сообщения LJ статы в чате.
On - показывать прыжки всех игроков (ljs_colorchat 2)
Only Your Stats - показывать только своих прыжков (ljs_colorchat 1)
Off - выкл (ljs_colorchat 0)

5. Speed (по умолчанию: Off)

Отображение текущей скорости в HUD.
On - вкл (ljs_speed 1)
Off - выкл (ljs_speed 0)

6. LJ Beam (по умолчанию: Off)

Отрисовка траектории движения в прыжке.
On - вкл (ljs_beam 1)
Off - выкл (ljs_beam 0)

Вторая страница настроек:


1. Pre Menu

Меню, в котором настраивается, какие престрейфы будут отображаться при включённом ShowPre:


Заметьте, что если перед duck вы находились на земле больше 10 фреймов, то это duck pre, а если меньше, то dd pre. А вот cj pre, как подсказывает надпись в меню, отвечает не за duck, а за прыжок.

2. Enable Menu

Меню, которое задаёт, для каких техник включена LJ стата:


3. LJ Sound (по умолчанию: Off)

Проигрывание звуков LJ статы.
On - вкл (ljs_sound 1)
Off - выкл (ljs_sound 0)

4. Always show Strafe Stats (по умолчанию: Off)

В каком случае показывать стрейфовую стату?
On - при любом прыжке независимо от основной статы (ljs_speed 1)
Off - только вместе с основной статой (ljs_speed 0)

5. Total gain and efficiency in Strafe Stats (по умолчанию: Off)

Добавление в стрейфовую стату информации о суммарном gain и средней efficiency.
On - вкл (ljs_strafes_total_gaineff 1)
Off - выкл (ljs_strafes_total_gaineff 0)

6. Last column of Strafes Stats (по умолчанию: Efficiency)

Какую информацию выводить в последнем столбце стрейфовой статы?
Desync - количество фреймов c асинхронным нажатием клавиш и движением мыши (ljs_strafes_last_column 2)
Overlaps - количество фреймов с перекрытиями по нажатиям клавиш (ljs_strafes_last_column 1)
Efficiency - эффективность стрейфов (ljs_strafes_last_column 1)


Топы


По умолчанию LJ топы в сборке отключены (ljs_top_enable 0), в том числе и топы по оружию (ljs_top_weapon_enable 0). Если же их включить, то появится возможность вызова меню /ljtop:


При включённых топах по оружию с помощью пункта 7. Choose Speed (или команды чата /weapontop) можно также вызвать меню с выбором скорости оружия:



Конфиг статистики


Помимо упомянутых в этой статье KZ-Rush LJ стата имеет ещё множество кваров для настройки, найти которые можно в файле ...\cstrike\addons\amxmodx\configs\kz_jump_stats.cfg. В той же папке configs есть их краткое описание в файле kz_jump_stats_info[RU].txt.

На этом всё, удачных прыжков!