Что происходит, когда в Rainbow Six Осада случается взрыв? Какие параметры влияют на расчет урона? Как все устроено?
Взрывы играют важную роль в Rainbow Six Осада. Они добавлены не просто ради красоты: с их помощью можно прорвать оборону, создать проход, получить разведданные и в некоторых случаях — даже победить. В этой статье блога разработчиков мы поговорим о том, как происходят взрывы и что требовалось улучшить.
«Анатомия» взрыва
Модель разрушения в Rainbow Six Осада уникальна, и каждый взрыв не похож на следующий.
Когда он происходит, урон и ущерб окружению рассчитываются за доли секунды. Игроки видят и слышат его, а их персонажи, оказавшиеся в радиусе поражения, теряют очки здоровья. Реализация этого события проходит в несколько этапов.
Радиус поражения и форма взрыва
На каждый тип взрыва влияет свой набор данных, определяющих его форму и радиус поражения. Форма зависит от типа устройства: шар — для осколочной гранаты, эллипсоид — для мины, и т.д.
Когда происходит взрыв, игра фиксирует его форму и отправляет запрос физическому движку. Затем, учитывая этот фактор и точку срабатывания устройства, составляется список находящихся в радиусе поражения единиц (оперативников и объектов), которые попадут под воздействие.
Рейкастинг для определения, кто или что получит урон
Располагая списком единиц в радиусе поражения, физический движок начинает процедуру рейкастинга («бросания лучей») — проецирует лучи из эпицентра к точкам запроса объектов.
У каждой единицы есть множество индивидуальных точек запроса, позволяющих определить, был ли получен урон. В отличие от моделей костей скелета персонажа или какой-то отдельно выбранной точки, они помогают не только точнее определить, должен ли оперативник попасть под воздействие взрыва, но и оптимизировать производительность и снизить показатель задержки.
Исходя из определенных параметров, лучи отправляются к объектам и создают набор данных для последующего расчета урона. Например, они могут попасть в ближайшие к эпицентру точки запроса на модели оперативника и одновременно — к аналогичным точкам модели стены (но немного по другим правилам).
До начала расчета урона должна быть учтена еще одна переменная: объекты окружения могут изменить форму взрыва и потенциально защитить единицу от воздействия.
Вас спасли метаданные
После того как лучи добрались до конечной точки, исход события будет зависеть от полученных данных.
В «Осаде» есть единицы, способные заблокировать урон от взрыва. __В каждом объекте содержатся метаданные, которые определяют, чем он является и как взаимодействует с окружением. Некоторые модели — например, преграды, бронепанели Castle, стационарные щиты — защищают от взрывной волны.
Если на пути луча к точкам запроса встречается объект с такими метаданными, персонажу ничего не грозит. Если помехи не возникло или метаданные единицы оказались другими, он получит урон. Аналогичный принцип действует для других устройств с эффектом по области — скажем, ЭМИ-гранаты Thatcher.
Наконец, когда собраны все данные, происходят расчет и нанесение урона.
Определение получаемого урона
При расчете результата обязательно учитывается, насколько далеко единица находится от эпицентра. Для каждого взрыва есть своя кривая урона: чем ближе к изначальной точке, тем выше показатель. По завершении рейкастинга итоговый урон определяется с учетом расстояния от эпицентра до объекта.
Разрушение vs урон
Взрывы в «Осаде» воспроизводятся с помощью движка Realblast — системы процедурной генерации разрушений, являющейся основой уникального и динамичного игрового процесса, за который игру и любят. С беседой о Realblast, состоявшейся при участии Жюльена Лёрё на GDC, можно ознакомиться здесь.
__Обычно результатом взрыва могут стать два события: персонажи игроков получат урон, а объекты окружения окажутся разрушенными или уничтоженными. __На конечный итог влияет тип взрыва.
Сейчас в «Осаде» после рейкастинга и возврата запросов мы определяем радиус эффектов разрушения и урона. Если луч попадает в блокирующий объект, последний ограничивается Realblast.
Однако текущий вариант неидеален, так как в некоторых случаях теряется реалистичность исхода взрыва. Например, при срабатывании C4 на открытой территории последствия могут быть серьезнее, чем в закрытом пространстве, где радиус урона ограничен стенами.
Обломки в Г5С1
В 1-м сезоне 5-го года в игру будут внедрены ненавязчивые, но в то же время важные изменения, в результате которых взрывы станут более реалистичными, а итог — более очевидным. Для этого в Rainbow Six Осада мы вводим переменную «обломки»._ Теперь разрушаемые объекты перестанут ограничивать радиус взрыва, что исправит проблему, описанную выше.
__Благодаря этой переменной урон, наносимый персонажу, будет снижаться в зависимости от того, какое количество разрушаемых объектов лучи встретят на своем пути в процессе рейкастинга. Итог станет понятнее благодаря визуальной информации, получаемой игроком: по отверстиям, оставленным обломками, он сможет определить, где произошел взрыв.
TL;DR — ИТОГ
Модель разрушения в Rainbow Six Осада — уникальный элемент игрового процесса, приумножающий его реалистичность. Добавление урона от обломков позволит улучшить эффекты взрывов, принцип нанесения урона и визуальную сторону, помогающую разобраться в результате.
С подробностями по этой теме можно ознакомиться в эксклюзивном выпуске подкаста «Logic Bomb»