Как работает дальность применения заклинаний (перевод)

От переводчика
Данная статья – перевод статьи, опубликованной на Reddit. Её автор, Bu3nyy, является одним из активных участников Dota 2 сообщества на Reddit, получив особую благодарность от разработчиков за то, что в рамках «Весенней чистки» (акции по поиску багов игры на dev.dota2.com) он опубликовал более 400 отчётов. Кроме того, он является активным редактором англоязычной Dota 2 Wiki.

Я видел много жалоб типа «дальность заклинаний работает неправильно», даже слышал подобное от стримеров. Я думаю, настало время уточнить/разъяснить, как именно Dota 2 работает с дальностью применения заклинаний (в конце будет блок «слишком длинно; не читал»).

Текст ниже написан как объяснение к другому посту, который я недавно увидел, и все примеры с LC, Луной и Дуэлью будут связаны с этим постом. Мне захотелось сделать отдельный пост, что бы все люди заметили его, так как, помимо направленных на юнитов заклинаний, будут упомянуты направленные на землю и ненаправленные, из-за существования некоторых отличий.

GIF из того поста, очень большая!

Webm для тех, чей комп не смог gif.

Во-первых. Зелёная индикаторная окружность.

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

Одна из причин (но не единственная), почему окружность не точна, заключается в том, что он приподнят над землёй. А так как камера в Доте наклонена, окружность оказывается ещё и сдвинутой. Вот, например, наглядная демонстрация неточности индикатора дальности. Легко заметить различие между зелёной окружностью и реальной областью применения Berserker's Call на земле:



Впрочем, приподнятость над землёй - не основная причина. Основная будет в следующем разделе.

Заметка: Конечно, индикатор не бесполезен, он примерно показывает, как далеко можно применить заклинание. Но именно примерно. Однако точная максимальная дальность никогда не совпадает с этой окружностью.


Во-вторых. Как работает дальность применения заклинания.

Что бы понять, что применение заклинаний произошло корректно, надо понять как работают дальности. Возьмём Дуэль в качестве примера, так как она нам подходит. Дальность применения Дуэли – 150. Но расстояние рассчитывается не от центра одного юнита до центра другого. Оно рассчитывается от «края» юнита до «края» юнита, где «край» – граница коллизии модели (оранжевые круги):


В нашем случае, Легион и Луна обе имеют размер коллизии 24. Поэтому реальная дальность применения дуэли: 150 + 24 + 24 = 198, что почти на 25% больше указанного значения.



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

Заметка: Радиус окружности зелёного индикатора равен дальности, указанной в описании заклинания, при этом размеры коллизий игнорируются. Из-за этого и возникает основная ошибка: в простейшем случае, погрешность составит 48 единиц дальности.


В-третьих. Дальность буфера движения.

Дальность буфера движения – это то, что позволяет герою использовать заклинания или атаковать двигающуюся цель. Без этого, во время преследования герои просто не смогли бы атаковать или использовать заклинания на убегающие цели. Если цель хотя бы на мгновение оказалась в области применения заклинания из предыдущего пункта, но вышла из неё во время анимации, дальность буфера движения позволит заклинанию сработать (при некоторых условиях).
Дальность буфера движения – 250. Если после попадания цели в радиус применения расстояние от заклинателя до цели увеличится на 251 или больше (например, цель убежит), то заклинание будет отменено. При этом если за время применения заклинания цель ни разу не покинула зону, ограниченную окружностью радиусом равным дальности применения заклинания с учётом размеров коллизии + 250, то заклинание прочтётся.

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

Видео, демонстрирующее работу буфера движения:



Последний фактор: Позиция и угол камеры.

Очевидно, что камера в Доте направленна не вертикально вниз, а под углом. Кроме того, камера никогда не сфокусирована на целевом юните. Поэтому вещи, показанные прямо над HUD (нижней частью интерфейса игры), находятся ближе к камере, чем тем, что показаны под внутриигровыми часами. Из-за того, что предмет «ближе» к камере, он кажется больше. Это же касается и дальности применения заклинания.
Это очевидно и имеет значение.

Если мы вернёмся к GIF из начала поста, мы увидим, что Луна показана прямо над HUD, в нижней половине экрана, а Легионка показана ближе к центру.



Как видно на видео, если Луна и Джаггернаут находятся вверху экрана, то их технические тексты (которые имеют неизменный размер на экране) накладываются друг на друга, тогда как в нижней части экрана этого не происходит.


Заключение.

Если учесть все перечисленные выше пункты, то станет ясно, что та Дуэль была скастована на Луну не с такого уж и большого расстояния, как кажется.

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


Всё выше сказанное относится к направленным на юнитов заклинаниям и атакам, но, в целом, применимо для направленным на землю и ненаправленных заклинаний.

Направленные на землю заклинания берут в расчёт размер коллизии заклинателя, поэтому итоговая дальность между заклинателем и целевой точкой/центром целевой области равна базовой дальности применения + размер коллизии заклинателя. Так что просто прибавляйте (почти всегда) 24 к дальностям, указанным в описании заклинания.

Заклинания на область работают иначе. Они игнорируют размер коллизий юнита, на которого они центрированы (если они были сцентрированы на юните), но всё ещё учитывают размер коллизии поражаемых юнитов.
Возьмём в пример Hoofstomp Кентавра. Он сцентрирован на заклинателе, Кентавре, его радиус 315. В случае с Луной (размер коллизии 24), она должна быть на расстоянии не более 339 (= 315 + 24), что бы попасть под стан. Нага Сирена же (размер коллизии 8) должна быть на расстоянии не более 323 (= 315 + 8). Размер коллизии самого Кентавра, при этом, ни на что не влияет.
Так же работают нецентрированные заклинания на область, такие как Light Strike Array Лины.


Слишком длинно; не читал
1. Зелёная окружность неточна. Чем меньше дальность применения заклинания, тем больше неточность кольца. Не используйте его как «доказательство» неправильности применения заклинания.

2. Суммарная дальность применения направленного на цель заклинания = дальность применения заклинания + размер коллизии модели заклинателя + размер коллизии модели цели (это справедливо и для атак как ближнего, так и дальнего боя).

3. Суммарная дальность применения направленного на землю заклинания = дальность применения заклинания + размер коллизии модели.

4. Суммарная дальность заклинания на область = дальность применения заклинания + размер коллизии цели (даже если заклинание было центрировано на юните, размер коллизии центрального юнита игнорируется).

5. Дальность буфера движения: если вы используете заклинание на цель, и цель не ушла на расстояние больше, чем (Суммарная дальность применения направленного на цель заклинания (из п.2) + 250) единиц, пока вы применяете заклинание, то оно применится. Если цель вышла за область, заклинание отменится. Касается только атак и направленных на юнита заклинаний.

6. Наклон и положение внутриигровой камеры искажают размеры, так что дальности заклинаний кажется больше/меньше, чем есть на самом деле.
kozhilya
20 Фев 2016 в 13:51
2128
25
1 5 5 27 26 1

Комментарии

Правила
На данный момент в комментариях у нас действуют следующие правила: https://dota2.ru/forum/threads/pravila-portala.1694/ (срок бана выдаётся на усмотрение модератора).
Комментарии отсутствуют
Для того, чтобы оставить комментарий, Вам необходимо зарегистрироваться или войти под своим аккаунтом.

Академия

Новости

Железо

Форум

Мемы

just_voen
33

Матчи

Стримы

Видео

Есть предложение по улучшению сайта?