Tom Clancy's Rainbow Six® Siege X

Tom Clancy's Rainbow Six® Siege X

43 ratings
KAD, или простейший алгоритм вычисления рейтинга
By El_Duck
Так как на просторах интернета сложно найти что-то конкретное для вычисления того самого рейтинга, я решил набросать простенький алгоритм, который каждый сможет настроить по-своему. Пригодится он разве что тем, кто пытается провести турики за 3 копейки, не имея особого опыта и бюджета.
Строго говоря, подходит он не только для осады, но и кски, валоранта и им подобных
   
Award
Favorite
Favorited
Unfavorite
Пункт 1 a.k.a. сам алгоритм и что для него надо
Прежде чем мы перейдём к сути, надо сделать важную ремарку: оценка скилла - просто красивая фраза в нашем случае. Эта статья вряд ли пригодится вам на практике, но вполне может оказаться интересной. Я вдохновлялся классикой всяких рейтингов для киберспортсменов, и эта штука даже близко не претендует на замену Эло и рангов, так как она априори не об этом :/

Алгоритм представляет из себя одну-единственную формулу, основанную на 4 параметрах (это для казуалов, есть и другие, но ленивым их трогать не стоит). Собственно говоря, название является аббревиатурой того, что он использует - Kills(k), Assists(a), Deaths(d). Убийства, ассисты, смерти. Четвёртый параметр - кол-во сыгранных раундов (r).
Именно это и сделало алгоритм простым и универсальным - он не учитывает специфические факторы игры. Поподробнее об этом смотрите в разделе 3, тут всё максимально просто и по сути.
Вот это - формула, которую я настроил под свой небольшой турик по осаде (вот его дискорд, кстати:https://discord.gg/ZJ9ehYj). Если вам нужно простое и быстрое решение, а точность не должна быть идеальной - это ваш выбор. Перепишите и пользуйтесь на здоровье



Если вам интересно, как я дошёл до жизни такой этого и как оно работает - читаем дальше
Пункт 2 или как это работает
Так как история создания и суть работы тесно связаны, получилось нечто среднее между докладом по математике среднестатистического школьника и технической документацией. Уж не обессудьте

Основа основ
Когда речь идёт о простоте и универсальности, то самый оптимальный вариант - взять за основу импакт игрока и его умение выживать в дикой природе. По сути, так как первое важнее, второе можно причислить скорее к корректирующему фактору. Надо ведь не просто помочь хорошенько команде, но и выжить при этом?



Вот она, основа основ и суть всего алгоритма. Всё остальное - просто моё желание усложнить уточнение этих двух элементов: вклада в победу и выживаемости. Ну и технические нюансы.

Impact или же вклад в победу
Фраза "вклад в победу" очень громкая, но именно она отражает лучше всего суть слова Impact, когда речь идёт о соревновательных пострелушках. Так как наша цель - простота (универсальность получилась случайно, изначально я вообще о ней не думал), то за основу мы просто берём две базовые вещи - убийства и ассисты, то бишь соучастничество. Такие вещи легко найти в большинстве подобных игр (о том, что происходит при отсутствии ассистов, будет в пункте 3). Самый тупой вариант - сложить KPR и APR (kills per round и assists per round, а если не по-басурмански, то среднее кол-во убийств и поддержек в убийстве за один раунд). Это вполне хорошие показатели эффективности игрока, однако это создаст некоторую несправедливость - ассист сделать всё-таки немного проще, чем убийство. А зачастую они возникают вообще из-за провалившейся попытки прибить оппонента. Недолго думая, в студии появляется весовой коэффициент - или же просто показатель ценности. После нехитрого математического преобразования вот что мы получаем:



Подождите обвинять меня в том, что я говорю о математике, а в формуле одни буквы, да ещё и не очень понятные. Так как с k, a, r вы уже встречались в первом пункте, незнакомцы только w1 и w2. На деле это будет простенькая циферка. Если мы вернёмся к большой и страшной формуле, то теперь сможем понять, откуда растут ноги у 1.15 и 0.42



Видите? Отлично. А теперь очень важный момент - цифры 1.15 и 0.42 вовсе не означают, что я считаю убийство в три раза более ценным, чем ассист. К сожалению, параметры эти приходится подбирать вручную. Лично я надыбал статистики некоторых игроков с RML (гугл в помощь, если не знаете, позорища) и пытался толкаться от неё. На идеальное совпадение надеятся смысла нет, так что я просто старался, чтобы алгоритм отвечал тенденции - "вот этот набил больше киллов, но меньше ассистов, а рейтинг у него выше. Значит надо сбавить "ценность" ассиста и подкрутить "ценность" убийства". Печально, но факт - если вы дочитали до сюда, то простая часть закончилась.

Survival rating или же мастерство выживания
Раз с импактом мы разобрались, время подбираться к самой пугающей части формулы. На самом деле, SR как таковой - это процент раундов, в которых игрок выжил, от 0 до 100. В нашем случае, мы преобразуем это для удобства в шкалу от 0 до 1, считать будет попроще.
Ежели всё так просто, чего ты нагромоздил такую дичь? - спросите вы, а я вам отвечу, что пытался использовать школьную программу на практике шкала от 0 до 1 попросту не подходит как коэффициент для импакта. На деле выйдет так, что если ты умер в каждом раунде, то и игрок из тебя нулевой. Такой подход суровый, но не очень-то и справедливый, вам так не кажется?

Вот здесь и начинается самая неприятная часть. Давайте разбирать всё по порядку.



С r и d мы уже знакомы. Сама по себе дробь и есть суть SR - она будет принимать значения от 0 до 1. Можете проверить самостоятельно, я подожду. Всё? Тогда продолжаем.
Самая первая цифра - 0,75. Исторически она первая появившаяся в этой формуле по мере её создания. Отойдём пока от цифр к простой логике: если игрок умер в большинстве раундов, то его rating должен уменьшится, а если наоборот - то вырасти. Именно тут и вступает наша волшебная цифра 0,75 - смотрите внимательно, сейчас будет магия. Если игрок погибает во всех раундах, то его рейтинг станет на 1/4 меньше - Impact*0,75. Но если он выжил во всех раундах - вырастет - Impact*1,75. Выглядит уже лучше правда?
Как показала практика, такой подход жутко завышает скилл тех, кто выжил во всех раундах и занижает тех, кто постоянно умирал. Поэтому возникла необходимость снизить влияние SR на рейтинг - звучит просто, но на деле оказалась та ещё задачка. Именно за неё отвечают цифры 0,6 и 0,29. Первая ограничивает "разброс" - то есть 1 она превратит в 0,6, а 0 - в 0. Так, стоп, вам не кажется, что тут что-то не так? Ах да, я забыл про 0,29. Эта цифра регулирует нижнюю границу. Теперь это божественное дуо сократит нам диапазон [0; 1] до [0,17; 0,6]. Срезало неравномерно, но именно высокие показатели выживаемости сильнее ломали нашу систему, так что на деле вышло вполне справедливо.

Какое-никакое обобщение



Давайте посмотрим теперь на эту формулу как просвещённые:
1.15 - показатель ценности убийства
0.42 - показатель ценности ассиста
0,75 - нижняя граница коэффициента выживаемости
0,6 - "урезатель" влияния SR на наш рейтинг
0,29 - напарник "урезателя", работающий с другой стороны.

Теперь, когда вы всё это знаете, ничто не помешает вам настроить эти циферки под свои цели. Прекрасно, правда?

Ну а если вам и этого мало, или остались какие-то вопросы, то для вас есть пункт под номером 3
Пункт 3 (для отчаявшихся и извращенцев)
Ну вот мы и добрались до раздела со всяким мелочами и вопросами, который можно было бы назвать фак ю FAQ. Давайте пройдёмся по мелочам и вопросам, которые остались за кадром.

А что если ассисты не предусмотрены?
Тут ответ максимально прост - так просто пиши 0. Или поставь их ценность как 0. Или просто вычеркни из формулы и получишь в роли импакта простой KPR. Не лучшее решение, но мы здесь за простотой, не так ли?

А если меня не устраивает такой подход?
Я мог бы сказать, что тогда это рукоблудство руководство не для вас. НО! Я расскажу вам о том, что вы можете взять и закончить мою работу. Звучит не очень соблазнительно, но что поделаешь - зато по фактам. Такой подход хорош тем, что абсолютно ничего не мешает вам на базе этой формулы вписать ещё один корректирующий показатель - например, плент/дефьюз. Как вы будете его высчитывать - ваше дело. Вещь эта сугубо индивидуальная для большинства игр, поэтому расписывать что-то я не буду.

А что если мне так понравилось, что я хочу поддержать автора?
Большое тебе спасибо, если ты уже это читаешь! Внизу предусмотрены комментарии, в которых ты можешь написать мне, как меня любишь, как ты мне благодарен итп. Если ты считаешь, что я заслужил большего - money.yandex.ru/to/4100115374320550, я буду только рад халявному дошираку.

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

Если вы прочитали ВСЮ статью вплоть до этого момента - моё уважение и поздравления. Вы постигли мой дзен алгоритм в полной мере. Сомневаюсь, что вы сможете ещё что-то из меня вытащить, чтобы покормить сидящего внутри монстра, жаждающего знаний. На этом у меня всё! Пользуйтесь, радуйтесь, хейтите меня и наслаждайтесь жизнью и играми - удачи вам! Засим откланиваюсь, дамы и господа!
23 Comments
Romul 27 Oct, 2024 @ 1:50pm 
долго голову ломал, почему r - d делится на d, пока не понял, что автор накосячил с предпоследним скрином
Turai 15 Jun, 2020 @ 7:35am 
нихуя он умный
VNE 14 Jun, 2020 @ 5:16am 
Этим афтором был Эйнштейн? По существу: лучше что бы в играх была инфа сколько ты нанес урона противнику и тогда все будет куда лучше с формулами, так как не придется подбирать коэф. убийства и асистов. (убить двух челов у каждого по 1 хп куда проще чем убить двух фуловых с 1 хп). Не надо будет считать инпакт и выживаемость разными формулами так как это все будет зависеть друг от друга. :cocochan2:
El_Duck  [author] 12 Jun, 2020 @ 1:10am 
Попрошу, не медь 5, а медь 4. Это очень большая разница!

А кому это надо, написано было в самом начале. Читать надо, прежде чем комменты писать:SG0_Angry:
WedsonWestar 11 Jun, 2020 @ 8:01am 
Зашибись, почитал, поржал да и мозги подвигал немного)
AXEL-7 10 Jun, 2020 @ 8:07am 
да кому это надо
block 10 Jun, 2020 @ 7:16am 
ты медь 5 какие гайды
домашний 10 Jun, 2020 @ 4:56am 
Nihuya не понял, но очень интересно
habibi 10 Jun, 2020 @ 3:37am 
Формула компаратора из майнкрафта была таки пострашнее
uemmega 9 Jun, 2020 @ 2:28pm 
:2016villain::CatNo: