20.2.2020

БЛОГ РАЗРАБОТЧИКОВ: Г5С1 — ВЗРЫВЫ И ОБЛОМКИ

Что происходит, когда в Rainbow Six Осада случается взрыв? Какие параметры влияют на расчет урона? Как все устроено?

Взрывы играют важную роль в Rainbow Six Осада. Они добавлены не просто ради красоты: с их помощью можно прорвать оборону, создать проход, получить разведданные и в некоторых случаях — даже победить. В этой статье блога разработчиков мы поговорим о том, как происходят взрывы и что требовалось улучшить.

«Анатомия» взрыва

Модель разрушения в Rainbow Six Осада уникальна, и каждый взрыв не похож на следующий.

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

Радиус поражения и форма взрыва

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

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

[R6S] Explosions: R6 AOE Animated

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

Рейкастинг для определения, кто или что получит урон

Располагая списком единиц в радиусе поражения, физический движок начинает процедуру рейкастинга («бросания лучей») — проецирует лучи из эпицентра к точкам запроса объектов.

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

Исходя из определенных параметров, лучи отправляются к объектам и создают набор данных для последующего расчета урона. Например, они могут попасть в ближайшие к эпицентру точки запроса на модели оперативника и одновременно — к аналогичным точкам модели стены (но немного по другим правилам).

[R6S] Explosions: R6 Raycast Animated

*В результате становится понятно, окажется ли объект «жертвой» взрыва.*

До начала расчета урона должна быть учтена еще одна переменная: объекты окружения могут изменить форму взрыва и потенциально защитить единицу от воздействия.

Вас спасли метаданные

После того как лучи добрались до конечной точки, исход события будет зависеть от полученных данных. В «Осаде» есть единицы, способные заблокировать урон от взрыва. __В каждом объекте содержатся метаданные, которые определяют, чем он является и как взаимодействует с окружением. Некоторые модели — например, преграды, бронепанели Castle, стационарные щиты — защищают от взрывной волны.

Если на пути луча к точкам запроса встречается объект с такими метаданными, персонажу ничего не грозит. Если помехи не возникло или метаданные единицы оказались другими, он получит урон. Аналогичный принцип действует для других устройств с эффектом по области — скажем, ЭМИ-гранаты Thatcher.

[R6S] Explosions: R6 Results Animated

*Объекты в области Realblast, которые блокируют и не блокируют урон в зависимости от метаданных.*

Наконец, когда собраны все данные, происходят расчет и нанесение урона.

Определение получаемого урона

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

Разрушение vs урон

Взрывы в «Осаде» воспроизводятся с помощью движка Realblast — системы процедурной генерации разрушений, являющейся основой уникального и динамичного игрового процесса, за который игру и любят. С беседой о Realblast, состоявшейся при участии Жюльена Лёрё на GDC, можно ознакомиться здесь.

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

[R6S] Explosions: R6 DamageVsDestruction Animated

*Радиус разрушения (Realblast) vs радиус нанесения урона.*

Сейчас в «Осаде» после рейкастинга и возврата запросов мы определяем радиус эффектов разрушения и урона. Если луч попадает в блокирующий объект, последний ограничивается Realblast.

Однако текущий вариант неидеален, так как в некоторых случаях теряется реалистичность исхода взрыва. Например, при срабатывании C4 на открытой территории последствия могут быть серьезнее, чем в закрытом пространстве, где радиус урона ограничен стенами.

Обломки в Г5С1

В 1-м сезоне 5-го года в игру будут внедрены ненавязчивые, но в то же время важные изменения, в результате которых взрывы станут более реалистичными, а итог — более очевидным. Для этого в Rainbow Six Осада мы вводим переменную «обломки»._ Теперь разрушаемые объекты перестанут ограничивать радиус взрыва, что исправит проблему, описанную выше.

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

[R6S] Explosions: Shrapnel Animated

*Урон от обломков*

TL;DR — ИТОГ

Модель разрушения в Rainbow Six Осада — уникальный элемент игрового процесса, приумножающий его реалистичность. Добавление урона от обломков позволит улучшить эффекты взрывов, принцип нанесения урона и визуальную сторону, помогающую разобраться в результате.

С подробностями по этой теме можно ознакомиться в эксклюзивном выпуске подкаста «Logic Bomb»