Как работают Реальные Проки в Минуту или немного теории чар для оружия

1
Далее от лица автора necroaqua (https://xpoff.com/threads/how-rppm-works.81584/):

С тех пор как я играю за твинков, было много споров о том, как прокают эффекты зачарований. Какие проки крутые. Какие - полная фигня. Как часто прокает. Каков механизм всего этого. В итоге я решил рассмотреть основные типы проков и как они работают, с упором на РПВМ - как явление наименее понятное. Во время игры на 19 уровне я часто замечал проки силы стихий со стрелы от Шедоуфанга. Это и стало поводом для написания этой статьи.

Процент проков + внутренний кулдаун (ВК)

Внутренний кулдаун (ВК) проков - самая старая и простая для понимания механика. Это вероятность прока (например 3%) и внутренний кулдаун (например 40 сек). Как только эффект прокает, они не может прокнуть снова, пока не пройдет внутренний кулдаун. Наиболее справедливо это для шансовых бафов (шанс получить при атаке много определенной характеристики). Довольно много тринкетов на высоких уровнях ранее работали именно так. Было применимо на низком уровне для https://ru.wowhead.com/item=70139/%D0%B ... 1%80%D0%B0 и https://ru.wowhead.com/item=59594/%D0%B ... 0%BE%D0%BF. Игрок знает, что не увидит нового прока до тех пор, пока внутренний кулдаун не пройдет. Опытный игрок может сменить оружие на другое, с эффектом другой механики, как только использует преимущество от первого. Например на https://ru.wowhead.com/item=158203/%D0% ... 1%81%D1%8B

Проки в минуту и проки за удар (ПВМ и ПЗУ)

Проки в минуту (ПВМ) - немного сложнее, но все еще просты для понимания. Пример ПВМ чарки - Рыцарь (Круса). На практике значение ПВМ конвертируется в определение “Прок за Удар” - шанс прока в процентах для каждого нанесенного удара. ПЗУ зависит от скорости оружия по формуле: скорость оружия * ПВМ / 60. То есть, чем медленнее ваше оружие, тем выше шанс прока при ударе. Можно подумать, что при низкой скорости оружия ударов будет мало. Но нужно учитывать, что имея медленное оружие со скоростью 3.6, вы не только получаете высокий ПЗУ, но и можете использовать все свои способности, а также располагаете определенным значением хаста, а значит проков будет намного больше, чем просто учитывая автоатаки.

Выводы:
ПЗУ зависело от базовой скорости оружия, исходно не зависит от хаста и бафов на хаст
Чем выше была активность в бою (хаст, умения), тем больше в итоге количество проков из-за более частой проверки шанса.

Пример: армс вар с рыцарем (ПВМ =1) получает ПЗУ равное (3.6*1/60) = 6% на каждый удар. Добавьте хаста и по факту можно использовать умения чаще, а значит проки чаще чем раз в минуту.

Реальные Проки в Минуту (РПВМ)

И наконец самое актуальное - Реальные Проки в Минуту (РПВМ). Если я правильно помню, формула появилась в Пандарии как замена Внутреннего Кулдауна и Проков В Минуту. РПВМ механика предполагает корректное число проков в минуту, независимо от глобального числа действий, которое совершает игрок. То есть, в среднем, афли лок во время мультидотинга на 10 противников получит такое же количество проков Силы стихий, как армс вар, который бьет одну цель автоатакой.

Цитата с http://blog.askmrrobot.com/haste-rppm-trinkets/
Реальные Проки в Минуту - означает, что ваш тринкет, имея значение РПВМ = 1, в среднем прокнет 1 раз в минуту. Если РПВМ = 2, будет в среднем 2 прока в минуту. Применимо к РПВМ механике не имеет значения, сколько заклинаний произнес или ударов сделал игрок.
О хасте и РПВМ с http://blog.askmrrobot.com/haste-rppm-trinkets/
Единственное, что может сделать проки ваших тринкетов чаще - это хаст. Показатель включает себя рейтинг хаста с экипировки и различные бафы, которые повышают тот же рейтинг (барабаны, например). Если у вас 20% хаста, шанс проков увеличивается на 20%. Имея РПВМ = 1 и 20% хаста, тринкет будет прокать на 20% чаще - 1.2 раза в минуту. Это просто.
Как это по-настоящему работает? Далее будет много теории, если нет склонности к математике, можно не читать. Но если хотите понимать тонкости механики в плане срабатывания чар - стоит разобраться в формулах.

Давайте посмотрим на последнее изменение формулы РПВМ, которое мы знаем - это не официальный документ, а просто информация об одном из изменений в игре. В основе лежит баг, найденный в работе РПВМ довольно давно. В итоге удалось получить формулу, которая учитывает исправление этого бага.

Код: Выделить всё

proc_chance = unlucky_streak_prevention *
              (rppm / 60.0) *
              MIN(time_since_last_proc_attempt, 10.0)

unlucky_streak_prevention = MAX(1.0, 1.0 + 3.0 * (time_since_last_proc * rppm / 60.0 - 1.5))

ON ENTERING RAID BOSS COMBAT:
  SET time_since_last_proc = 0.0
  SET time_since_last_proc_attempt = 0.0
Не знаю, правда, насколько состояние "entering raid boss combat" совпадает по исходным данным с "entering pvp combat". Но в теории, изменение стартовых переменных может повлиять только на шанс первого прока, далее разница нивелируется формулой.

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

Для любого действия, которое может вызвать прок, формула proc_chance определяет шанс этого прока. Генератор выдает случайное число и сравнивает его с шансом прока. Если есть совпадение - отлично, игрок получает прок и обе переменные времени обнуляются. Если прока не было, переменная time_since_last_proc_attempt устанавливается на 0, но значение time_since_last_proc - не сбрасывается.

Перейдем к переменной unlucky_streak_prevention (USP). Функция MAX берет более высокое значение из двух, выбирая между 1.0 и рассчитанным по формуле значением. В результате, если формула 1+3*(time_since_last_proc * rppm /60 - 1.5) дает значение больше 1, это новое значение используется как множитель. В других случаях множитель будет равен 1. Рассмотрим на примере:

Сила стихий имеет РПВМ = 10 (и самая популярная чарка). При подстановке данного значения в формулу, unlucky_streak_prevention дает бонус, если у игрока не было проков 9 секунд. Реальные данные могут отличаться с учетом хаста от экипировки и бафов. Для Сатира с РПВМ = 2.5 необходимо провести 36 секунд без единого прока, чтобы получить бонус к расчету вероятности.

На практике, у разбойника в мили рейндже почти нереально срабатывание бонуса unlucky_streak_prevention. Но если начать кайтить противника, не нанося прямого урона, бонус становится реальным. Подытожим: пока не случилось unlucky_streak_prevention, модификатор шанса на прок равен 1. Аналогично MAX, функция MIN берет одно из значений, но ориентируется на меньшее. То есть для формулы (rppm/60) * MIN(time_since_last_proc_attempt, 10.0) не будет результата с частотой прока менее 10 раз в минуту при нанесении ударов в бою.

От переводчика:
получается, функция MIN работает в бою, чтобы не было проков реже, чем подразумевает РПВМ, а функция MAX рассчитывает бонус к шансу при паузах или в начале боя, чтобы избежать ситуации, когда придется ждать минимум 60/rppm, чтобы получить первый прок чарки после перехода в комбат. В итоге, благодаря MAX, игрок может получить прок с первого удара.
Значение time_since_last_proc_attempt для кого-то шустрого типа разбойника в мили рейндже будет постоянно низким. Вы атакуете оружием и умениями достаточно часто, ваш мейнхенд может дать прок каждый раз, когда применяется умение. Относительно силы стихий можно опираться на расчет 10/60 * количество секунд с момента последнего прока. Если у вас секунда между действиями, функция MIN будет равна 1.0 и вы можете рассчитывать на ⅙ ударов с проком силы стихий. Чаще вы при этом будете колотить по клавишам умений и снижать шанс прока за счет ожидания ГКД и дыр в ротации. Если ненадолго увеличить дистанцию до цели, вероятность прока при следующей атаке будет выше. Для Силы стихий РПВМ настолько высок, что функция MIN в реальности никогда не будет применяться. А если вы сможете отмерять 6 секунд между атаками, видна реальная возможность иметь 100% прок Силы стихий.

Для сравнения давайте рассмотрим Сатира в РПВМ = 2.5. Имея 1 секунду между атаками, абстрактный шанс прока выглядит как 4.16% или даже ниже с быстрой ротацией. Здесь вовсю разгуляется функция MIN. Если не предпринимать никаких атак более 10 секунд, шанс прока возрастает до 41.66%. Если подождать больше, функция MIN все равно вернет 10 и шанс останется 41.66%. И помните, что функция unlucky_streak_prevention даст свой модификатор, только если прошло более 36 секунд между проками.

Есть один вопрос, который задавали все серьезные разбойники: может Сила стихий прокнуть со срабатывания стрелы с Шедоуфанга? Ответ - может, стрела это атака. Второй вопрос: делают ли стрелы с Шадоуфанга проки Силы стихий чаще. Ответ - нет. Для каждой атаки заново рассчитывается шанс прока. То есть если вы совершили мили атаку при которой сила стихий не прокнула, но прокнула стрела, вы обнулили time_since_last_proc_attempt. А значит при следующем действии секундой позже, шанс прока Силы стихий не будет увеличен.

Но если прок был с пистолета, а значит стреле надо время, чтобы достичь цели, время между атаками увеличится, а значит потенциально есть место для модификатора более 1.0. Но на практике значение будет настолько мизерным, что рассматривать его можно примерно как урон но стрелы Шадоуфанга (<10).

Что в итоге: РВПМ хорошо проявляет себя как средний показатель проков, независимо от максимальной частоты атак в минуту. Больше атак или меньше атак - неважно. В случае “больше” шанс прока упирается в MAX функцию с учетом хаста. В случае “меньше” - функция MIN не позволит прокать реже, чем предписывает РВПМ.

Еще от переводчика:
вполне логичная система получилась, но в случае с охотником при стрельбе через макрос аркан-шотом вперемешку с автоатаками, Сатир с РПВМ = 2.5 иногда срабатывает два раза подряд с интервалом около секунды в одну цель. Возможно, это происходит из-за того, что две атаки, для которых рассчитывается прок чарки происходят без ГКД и система учитывает их обе. Других отклонений не замечал.