Spell batching wow что это

Обновлено: 05.07.2024

Spell Batching или пакетная обработка заклинаний.

Что это значит на практике? В первую очередь это означает, что любое действие, которое вы совершаете над собой (исцеление себя, баф себя и т. д.), происходит мгновенно; пакетируются только действия, предпринятые с другими юнитами, будь то игроки или мобы.

Важно отметить, что только применение урона или исцеления и баффов / дебаффов, возникающих в результате атаки, наложения или использования способности, откладывается до следующего окна пакетной обработки; расчеты, которые определяют, ударила ли атака или промахнулась, вызвали ли какие-либо проки, происходят сразу же после окончания действия заклинания, и игрок может сразу же начать кастить другое заклинание или использовать другую способность еще до того, как был нанесен урон предыдущего (вы можете найти пример этого ниже с участием Frostbolt).

Заклинания с временем каста:

Автоатаки:

Spell batching wow что это

Роман Деревянко


Роман Деревянко

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

Алексей Закутаев


Алексей Закутаев

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

spell batching / обработка заклинаний

2. Он у нас одинаковый для контроля/интерраптов/остальных способностей? Можно конкретные значения, если разный?

3. Он у нас близзлайк?

Any action that one unit takes on another different unit used to be processed in batches every 400ms. Some very attentive people may have noticed that healing yourself would give you the health instantly (minus client/server latency), whereas healing another unit would incur a delay of between 0ms and 400ms (again, on top of client/server latency). Same with damaging, applying auras, interrupting, knocking back, etc.

Basically the server used to process commands in 400ms batches.
The system caches all spell usage at 400ms intervals meaning if you interrupt something depending on the timing of the cycle the system is on
it can between 1-400ms before the interrupt is "going off".

Последний раз редактировалось Ink_Forever; 18.12.2019 в 02:16 .

Ну очевидно что я понял что этот батчинг связан с серверной частью
И я понял что это момент когда заклинание можно применить одновременно с чужим
Не раз такое было что ты отдаёшь рефлект в смерч а он не срабатывает и возможно это и есть batching
Надеюсь я правильно понял?

Последний раз редактировалось Saccna; 18.12.2019 в 11:02 .
Я просто мог не правильно воспринять,не вырывай из контекста И я понял что это момент когда заклинание можно применить одновременно с чужим

Батчинг - тактовая обработка заклинаний, направленных на другого юнита (игрока, НПС).
По умолчанию сервер отправляет пакеты данных о наложенных на другого юнита эффектах раз в 400 мс (+ задержка клиента и задержка сервера), что позволяет игрокам одновременно накладывать друг на друга эффекты, которые фактически не были применены одновременно.
Если эффекты каждого игрока были отправлены одним и тем же пакетом, то вне зависимости от того, вошли они в него через 1 мс после начала сбора или через 400 мс - они считаются одновременными для сервера (он получил их в 1 пакете) и потому накладываются оба и лишь в тот момент, когда пакет до него дойдет.

Гаудж в блинк/дабл чардж/сап/чипшот/блайнд/овца/фир/скаттер и всё остальное - это результат батчинга.
Но это может происходить и без него, если игрокам просто повезло нажать кнопки с задержкой 50-100 мс,
смотря какое настроение у сервера и провайдера.
Если про интеррапты, то я не должен получать кик в 0.05, потому что кик, как направленный на другого юнита спелл, должен проходить батчинг и иметь задержку сверху от 1 до 400 мс, что должно позволять мне хотя бы отфейкать его по /роллу 1-400, что я пока что физически не всегда могу.

Исцеление:

Spell batching and Warrior's spells:

(щелкните правой кнопкой мыши и откройте в новой вкладке, чтобы увидеть в полном разрешении)

(щелкните правой кнопкой мыши и откройте в новой вкладке, чтобы увидеть в полном разрешении)

На этой потрясающей инфографике мы видим Воина, экипированого оружием со скоростью 2,90 и использующего различные способности. Последовательность событий помогает проиллюстрировать пакетные взаимодействия, как описано в разделе выше:

Мгновенные melee-атаки:

spell batching / обработка заклинаний

2. Он у нас одинаковый для контроля/интерраптов/остальных способностей? Можно конкретные значения, если разный?

3. Он у нас близзлайк?

Any action that one unit takes on another different unit used to be processed in batches every 400ms. Some very attentive people may have noticed that healing yourself would give you the health instantly (minus client/server latency), whereas healing another unit would incur a delay of between 0ms and 400ms (again, on top of client/server latency). Same with damaging, applying auras, interrupting, knocking back, etc.

Basically the server used to process commands in 400ms batches.
The system caches all spell usage at 400ms intervals meaning if you interrupt something depending on the timing of the cycle the system is on
it can between 1-400ms before the interrupt is "going off".

Ну очевидно что я понял что этот батчинг связан с серверной частью
И я понял что это момент когда заклинание можно применить одновременно с чужим
Не раз такое было что ты отдаёшь рефлект в смерч а он не срабатывает и возможно это и есть batching
Надеюсь я правильно понял?

Я просто мог не правильно воспринять,не вырывай из контекста И я понял что это момент когда заклинание можно применить одновременно с чужим

Батчинг - тактовая обработка заклинаний, направленных на другого юнита (игрока, НПС).
По умолчанию сервер отправляет пакеты данных о наложенных на другого юнита эффектах раз в 400 мс (+ задержка клиента и задержка сервера), что позволяет игрокам одновременно накладывать друг на друга эффекты, которые фактически не были применены одновременно.
Если эффекты каждого игрока были отправлены одним и тем же пакетом, то вне зависимости от того, вошли они в него через 1 мс после начала сбора или через 400 мс - они считаются одновременными для сервера (он получил их в 1 пакете) и потому накладываются оба и лишь в тот момент, когда пакет до него дойдет.

Гаудж в блинк/дабл чардж/сап/чипшот/блайнд/овца/фир/скаттер и всё остальное - это результат батчинга.
Но это может происходить и без него, если игрокам просто повезло нажать кнопки с задержкой 50-100 мс,
смотря какое настроение у сервера и провайдера.
Если про интеррапты, то я не должен получать кик в 0.05, потому что кик, как направленный на другого юнита спелл, должен проходить батчинг и иметь задержку сверху от 1 до 400 мс, что должно позволять мне хотя бы отфейкать его по /роллу 1-400, что я пока что физически не всегда могу.

Глобально - каждые 100 мс (это минимальное значение, может увеличиваться в зависимости от серверной задержки).
2. Он у нас одинаковый для контроля/интерраптов/остальных способностей? Можно конкретные значения, если разный? У нас есть кастомные задержки например для откидывания (+300 мс) или для контролей (+100 мс), но это не совсем то.
Вот сами пакеты от клиента вроде обрабатываются каждые 100 мс, если не ошибаюсь.
Если про интеррапты, то я не должен получать кик в 0.05, потому что кик, как направленный на другого юнита спелл, должен проходить батчинг и иметь задержку сверху от 1 до 400 мс Интеррапты вроде как должны обрабатываться инстантно, судя по мувикам с офа. Иначе получалось бы так, что кик в 0.4-0.5 сек (с учетом пинга) мог не прервать каст. Повысить до 200 - это уже увеличить в 2 раза с текущим, но все ещё оставить в 2 раза ниже, чем "должно быть".
Если это не так сложно изменить и вернуть, то можно как минимум попробовать. Глобальный батчинг менять плохая идея. Т.к. у нас с ним связано абсолютно все, обновление спеллов, игроков, нпц, петов, обработка пакетов, снятие аур, разные таймеры и т.д.
Можно просто сделать задержку всем спеллам с наложением ауры, дамагом, хилом и т.д., 200 мс например, это быстро и не потребует каких-то больших изменений в коде, т.к. нужный функционал уже есть.
Но нужно ли это делать? Близзы сами от этого избавились. Сейчас у нас более менее адекватно все работает, там где нужна задержка небольшая (контроли например или отдельные спеллы, где это требуется) она есть. А если сделать для всех спеллов, то это может повлиять на работоспособность некоторых из них. Ну если все же хотите посмотреть, как это будет работать примерно, то могу сделать фикс для тестов на птре. Но нужно ли это делать? Близзы сами от этого избавились. Если подумать, то близы каждый патч от чего-то избавляются.
Можно просто сделать задержку всем спеллам с наложением ауры, дамагом, хилом и т.д., 200 мс например.

Насколько это идентично батчингу?

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

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

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

Я конечно могу сделать репорт и попросить кастомной задержки для овцы, но дело не в овце наверняка.

Баффы:

Когда вы кастуете по себе, бафф применяется мгновенно, однако, когда вы применяете бафф на других людей, этот эффект будет применен к ним только в следующем окне пакета.

Этот лог начинается с автоматической атаки Skit по Scarlet Guardsman. Вскоре после этого Vannock решает использовать Battle Shout, и, как видно, бафф применяется к нему немедленно. Следующая пакетная обработка(spell batching) происходит в 15:25:35.515, где мы видим, что происходит несколько действий: происходит свинг авто-атаки Skit, в результате которого Scarlet Guardsman умирает от урона, а Battle Shout, нажатый Vannock ранее, наконец применяется к другому члену группы.

Мгновенные заклинания:

Мгновенные заклинания обрабатываются так же, как мгновенные melee-атаки, что имеет смысл, поскольку melee-атаки, по факту, являются заклинаниями с физической школой, где сервер старается изо всех сил, чтобы они выглядели как обычные рукопашные атаки. Последовательность событий, происходящих при использовании мгновенных заклинаний, такого как «Огненный взрыв» или «Чародейский взрыв», почти идентична описанной выше для «Harmstring», только вместо таблицы атаки в ближнем бою используется таблица применения заклинаний, а при расчете урона используется бонус к spell_damage и target_resist.

Читайте также: