Прямая связь: урон, хитбоксы, броня

В «Прямой связи» мы делимся с вами информацией о статусе разработки и подробностями создания игры.  Статья — дополнительный формат этой рубрики.  В роликах «Прямой связи» разработчики отвечают на самые актуальные вопросы, которые каждый месяц вы сами выбираете при помощи голосования. В статьях мы будем раскрывать темы, которые вызывают у вас интерес постоянно, и вы часто задаёте по ним вопросы в обсуждениях на форуме и в социальных сетях.

В этом материале вы узнаете, что такое хитбоксы и зачем они нужны, влияет ли сеть на передачу данных об уроне, а также как в игре наносят повреждения мины и дробовики.

Что такое хитбоксы и зачем они нужны?

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

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

В шутерах вычислять последствия взаимодействий объектов нужно с гораздо большей точностью. Поэтому оперативник имеет сразу несколько хитбоксов. Каждый из них привязан к определённой подвижной части модели и имеет свой мультипликатор урона. 

Мультипликатор урона — это коэффициент, который применяется ко входящему урону и определяет его объём. Например, урон от ранений в голову он увеличивает, а от попаданий по ногам — уменьшает. 

В «Калибре» урон по ногам снижен на 20%. Попадания в голову, наоборот, наносят на 20% больше повреждений.  Если у цели есть шлем, то урон в голову увеличивается только на 10%. Бандана, шапка, кепка или панама — защитной функции не несут.  

Как происходит выстрел на программном уровне?

В зависимости от типа вооружения выстрел настраивается по одной из двух технологий: 

  • Hitscan — это мгновенный выстрел невидимым объектом.  Он не учитывает скорость и гравитацию и представляет собой информацию.  То есть, в момент выстрела в цель проецируется невидимый луч. При пересечении с хитбоксом цели он передаёт ему данные о стрелке, оружии, направлении и времени выстрела и т.д. Хитсканы применяются для настройки урона от пуль и дроби. 
  • Projectile — выстрел видимым объектом, который подвержен действию гравитации, имеет продолжительность жизни и скорость перемещения.  Проджектайлами являются пули снайперских винтовок, ракеты и гранаты. 

В «Калибре» на направление выстрела всегда влияют параметры оружия и внешние факторы: 

Разброс — задаёт расстояние от точки прицеливания, на котором снаряд летит в случайном направлении в фиксированных пределах. Разброс зависит от продолжительности стрельбы, а также уменьшается за счёт сведения при переходе в режим прицеливания. 

Раскачивание. При стрельбе во время бега, приседаний и других перемещений, прицел тоже двигается. То есть, точность попадания зависит от обстоятельств выстрела.

Прежде чем делать выводы о корректности фиксирования урона в игре, стоит опробовать оружие на полигоне или немного привыкнуть к нему в бою.    

Влияет ли качество сети на передачу данных об уроне?

Одна из главных технических задач разработчиков онлайн-игры — объединить на своих аренах игроков, находящихся на очень больших расстояниях друг от друга. Создавая «Калибр», мы понимали, что не можем повлиять на скорость передачи данных, но постарались сделать всё возможное, чтобы вы играли с комфортом. 

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

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

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

При выстреле из ружья урон наносит каждая дробина?

Да. Цель, раненная, например, из 500 Tactical Миколы, получит урон от каждой дробины, которая в неё попала. Этот принцип работает для всех ружей такого типа. Конечное количество «выбитых» очков здоровья будет зависеть от места попадания дроби. 

Как наносят урон мины?

Для мин используются две основные настройки: 

  • Детектор — реагирует на появление персонажа в конкретном месте радиуса поражения.  Он зависит от типа мины. Поэтому в «Калибре» используются  детекторы разных вариантов действия: сканирующие радиус от центра, конус в направлении или пересечение луча.
  • Эммитер — создаёт «пули», направленные из центра мины к телу персонажа. 

Урон мин зависит от дистанции. Как правило, при отдалении от эпицентра взрыва он снижается. То есть, чем ближе цель к самому боеприпасу, тем больше повреждений она получит. Если цель умудрилась попасть в зоны действия сразу двух мин, урон будет рассчитан последовательно — сначала от той, что была активирована первой, потом от следующей.

Если мина применяет негативный эффект, то урон, который получила раненая взрывом цель, значения не имеет. Оперативник (или бот), потерявший 1 очко здоровья, всё равно будет страдать от действия эффекта в полном объёме. 

Почему урон, указанный в описании оружия, не соответствует тому, что наносится в бою?

В описаниях оружия указан чистый урон, без учёта брони, которая есть у цели. То есть, если урон оружия составляет 17 ОЗ, то цель получит его в полном объёме, только если запас брони у неё уже исчерпан.  

Как и было описано выше, ранениям в голову всегда применяется модификатор, повышающий урон. Исключения из этого правила встречаются очень редко. Например, выстрелы из основного оружия Алмаза (боец поддержки «Вымпел») под действием способности «Заслон» дополнительный урон в голову не наносят. 

Прочность брони у оперативников разная, в процессе развития она может изменяться. Бронепробиваемость у оружия тоже отличается. Чем она выше, тем больше чистого здоровья теряет цель. 

Следует помнить, что способности Штерна, Алмаза, Барда, Ватсона, Пророка и Кита уменьшают урон по себе или союзникам.  

Как вычисляется уровень здоровья и брони после ранения?

Вычисляется уровень здоровья, которое останется у оперативника после ранения такой формуле:

HPпосле ранения = HPисходное - DMG*AP

  • Прочность брони — AR
  • Бронепробиваемость — AP
  • Показатель урона оружия — DMG
  • Объём здоровья — HP

Представим оперативника с исходным здоровьем (HP) 100 очков. В бою он был ранен из оружия N с показателем урона (DMG) 20 и бронепробиваемостью (AP) 50% (0,5). Получается:

HPпосле ранения = 100 - 20*0,5= 100 - 10 = 90 очков здоровья

Когда боец получает пулю, страдает не только здоровье. В это же время на показатель бронепробиваемости оружия, из которого сделан выстрел, уменьшается прочность брони.

ARпосле ранения = ARисходная - DMG*(1 - AP)

1 — максимальное значение бронепробиваемости.

Представим, что исходная прочность брони нашего оперативника равна 100 единицам. Рассчитаем повреждение брони, от описанного выше ранения:

ARпосле ранения = 100 – 20*(1 – 0,5) = 90

Таким образом, после ранения из оружия N c уроном 20 очков здоровья и бронепробиваемостью 50% (0,5), здоровье оперативника составит 90, а уровень брони — 90 единиц.

Когда уровень брони равен нулю, она прекращает поглощать урон.

Своими пожеланиями о теме следующей статьи делитесь в обсуждении на форуме. Мы обязательно учтём их при подготовке материала.