Разработчики BeastLink подробно рассказывают о технологиях, стоящих за массовым разрушением кайдзю из миллионов динамических элементов.
Команда, стоящая за BeastLink, рассказывает о своей фирменной технологии SuperDestruction, включая процедурную генерацию города, синхронизированную многопользовательскую физику и модификации UE5, которые обеспечивают крупномасштабное разрушение кайдзю.

Разрушение уже давно является одной из самых технически сложных функций в играх, но лишь немногие проекты пытаются реализовать его в том масштабе, который обещает BeastLink от Grove Street Games. Разработанный вокруг гигантских сражений кайдзю внутри полностью разрушаемых многопользовательских сред, проект представляет собственный технологический стек под названием SuperDestruction, способный моделировать сотни тысяч разрушаемых объектов и почти 14 миллионов отдельных частей на одной карте.
Вместо того чтобы полагаться на запрограммированные обрушения или тщательно прописанные последовательности, система предназначена для динамического генерирования разрушений в реальном времени. Здания процедурно собираются по мере приближения к ним игроков, каждый раз обрушаются по-разному и синхронизируются в многопользовательских матчах с помощью специальных сетевых и физических решений, созданных наряду с обширными модификациями Unreal Engine 5.
В этом интервью Томас Уильямсон, генеральный директор Grove Street Games, объясняет, как SuperDestruction эволюционировала от ранних экспериментов с использованием Niagara и пользовательских рабочих процессов HLSL Compute в крупномасштабный сетевой конвейер разрушений, способный работать даже на консолях текущего поколения.
Можете представить BeastLink и объяснить основную идею проекта? Какой опыт вы хотите передать с помощью этого оригинального IP-адреса кайдзю?
Томас Уильямсон, генеральный директор Grove Street Games: В основе BeastLink лежит желание нашей студии создать лучшую игру про кайдзю. Все известные игры про кайдзю до сих пор были сосредоточены исключительно на сражениях, или сами кайдзю были гигантскими декорациями игрового процесса.
В BeastLink вы начинаете с того, что идёте пешком по гигантской разрушаемой песочнице, подчиняясь силе могущественных кайдзю, которые также бродят по карте (будь то управляемые игроками или боты), пока не получите возможность стать одним из них. Как только вы установили связь с одним из этих огромных существ, вы становитесь идеальным инструментом для преодоления препятствий в сценарии игры или решаете терроризировать команду противника.
Важным элементом здесь является система SuperDestruction. На высоком уровне, что это такое и какие цели проектирования вы ставили перед ней на ранних этапах разработки?
Томас Уильямсон: Это наша собственная технология, которая позволяет нам воплотить разрушительную силу кайдзю, которую мы обычно видим только на большом экране. Нашими основными целями было разработать систему, которая позволила бы нам создавать динамический контент для строительства города, который мог бы разбиться на огромное количество физических частей, и всё это работало бы по сети. Нам нужно было, чтобы это работало на консолях текущего поколения. На раннем этапе экспериментов с доступными системами стало ясно, что никто даже не рассматривал такой масштаб с существующими API физики. Так что несколько лет назад мы оказались на пути к созданию чего-то совершенно нового.

Когда рушится небоскрёб или большая конструкция разваливается, что определяет, как происходит это разрушение? Полностью ли оно основано на физике, частично ли оно создано вручную или это сочетание того и другого?
Томас Уильямсон: Всё в SuperDestruction полностью динамично. В BeastLink нет предварительно созданного разрушения. Каждый раз, когда вы видите обрушение здания, это первый раз, когда оно обрушилось таким образом. Каждое здание фактически собирается на лету, когда вы приближаетесь к нему, так что ни одно из них не является действительно статическим контентом. Честно говоря, мы только начали исследовать возможности этой системы. Мы очень рады перспективам, поскольку технология продолжает развиваться.
Многие многопользовательские игры рассматривают разрушение либо как тщательно запрограммированное, либо как в основном клиентское. Что заставило вас захотеть создать полностью сетевую систему разрушения с нуля?
Томас Уильямсон: Оглядываясь назад, это, наверное, было высокомерием, ха-ха-ха. Это была огромная работа, которую мы, не колеблясь, скажем, недооценили, когда начинали. Однако потребности были ясны. Мы хотели, чтобы гигантские кайдзю разрушали город в большой многопользовательской игре. И с нашей очень маленькой командой по созданию контента мы должны были сделать его чем-то динамичным и простым в реализации. Был только один способ сделать это: много работы и экспериментов.

Вы сказали, что BeastLink поддерживает синхронизированное в реальном времени разрушение для всех игроков. С технической точки зрения, какие самые большие проблемы возникли при обеспечении надёжного отображения одинаковых результатов разрушения для каждого игрока?
Томас Уильямсон: К счастью, это изначально заложено в дизайне. Все разрушения должны проходить через простой мыслительный процесс при работе в сети: насколько важно это разрушение с точки зрения точного соответствия для отдельного игрока?
Если кайдзю проводит хвостом по зданию в тысяче футов, мы можем доверить компьютеру игрока смоделировать значительную его часть. Особенно с учётом контекста: такое разрушение очень скоро обрушит всё здание. Игроку не нужен абсолютно точный результат, достаточно очень близкого.
Теперь, если игрок бросает гранату и пробивает в здании дыру, чтобы попасть внутрь, результаты этого разрушения должны быть очень точными. В каждое игровое событие встроены эвристики, которые определяют приоритет каждого физического события с точки зрения точности, воспринимаемой игроком. Наконец, у нас есть очень быстрые методы коррекции для каждого клиента, чтобы «сверяться» с сервером и убедиться, что они согласны с результатами разрушения, с быстрыми и прозрачными исправлениями для игрока.

Одной из выдающихся деталей является масштаб: 250 000 разрушаемых экземпляров и почти 14 миллионов отдельных элементов на одной карте. Как вы подходите к созданию, организации и оптимизации разрушений на таком уровне сложности?
Томас Уильямсон: Учитывая размер нашей команды: МНОГО процедурной генерации! Каждая карта составляет около 1 квадратной мили (2,5 км^2). Наши здания, за некоторыми исключениями, построены из комплектов, которые автоматически заполняют экстерьеры и интерьеры. Затем художники могут зайти и всё настроить. Они могут указать расположение окон и отделки, заменить витрины на первом этаже, прикрепить к предметам реквизит для разрушения в качестве украшения.
Наши деревья и кусты автоматически поворачиваются, немного масштабируются и имеют случайные цветовые узоры. Мы попытались сделать всё возможное, чтобы упростить огромный объём работы по наполнению этих плотных карт.
Конечно, есть много индивидуальной работы, такой как мосты, достопримечательности и т. д., для создания которых потребовалось много ручных усилий, чтобы превратить их в разрушаемые ассеты.

Можете рассказать, как работает SuperDestruction внутри Unreal Engine 5? Какие части системы полагаются на встроенную функциональность UE5, а где вам нужно было создавать собственные решения?
Томас Уильямсон: Самые первые его версии были близки к чистому Unreal. Мы использовали Niagara по сути как вычислительный шейдер с множеством пользовательских узлов HLSL. Это управляло визуализированной таблицей поиска, которую мы использовали для фиксированных преобразований отдельных элементов в функции материала. Сами разрушаемые ассеты созданы с помощью инструмента их разрушения, затем экспортированы в особый вид ассета Static Mesh, который мы создали. Сетевой обмен данными представлял собой серию удалённых вызовов процедур между клиентом и сервером.
По мере развития технологии мы внесли существенные изменения и теперь действительно используем лишь некоторые части Unreal как удобный инструмент для взаимодействия систем. У нас есть собственный рендеринг результатов вычислений непосредственно в граф сцены GPU. Мы добавили множество функций в Nanite для поддержки множества крошечных динамических субинстансов без создания дополнительных затрат памяти. Наша сетевая физика состоит из детерминированных клиентских/серверных вычислений с пользовательскими структурами данных для передачи результатов туда и обратно.

Как вы справляетесь с проблемами репликации и пропускной способности, когда в многопользовательском матче одновременно происходит так много разрушений, коллапса и изменений окружающей среды?
Томас Уильямсон: Я скажу конкретно, что сам мусор и то, как он сталкивается с вами, не имеет большого отношения к физическим результатам игрового процесса. Нам пришлось расставить приоритеты в разрушении с точки зрения того, насколько игроку будет действительно важно или заметно. Не то чтобы каждая деталь «симулировала правильно» на вас; дело в том, что есть что-то, что заставляет эти детали приближаться к вам. Это то, что в конечном итоге волнует игрока. Цитируя Рона Уайта: «Дело не в том, что ветер дует, дело в том, что ветер дует».
Что означает «полная свобода действий в окружающей среде» в практическом игровом плане? Насколько на самом деле у игроков есть свобода изменять поле боя?
Томас Уильямсон: Поскольку всё процедурно и всё разрушаемо, игрок может расчленить город, как считает нужным, вплоть до отдельных стёкол. Оружие, транспортные средства, кайдзю и другие существа могут вызывать разрушения. Разрушения полностью динамичны, поэтому окружающая среда полностью динамична. Это было обещано многими играми в прошлом. Очень волнительно быть здесь и воплощать это в реальность.

Технология разрушения часто может выглядеть впечатляюще в демонстрации, но становится трудно балансируемой в реальной многопользовательской среде.
Томас Уильямсон: Это так верно! Наши игровые сессии развиваются интересным образом с таким количеством разрушений и асимметричным игровым процессом. Пока ставки растут, а действие становится более напряжённым, окружающая среда становится всё более и более выровненной. Это убирает коридоры и защиту для игроков, раскрывая их. В итоге мы балансируем разрушение с наградами и выпадениями повсюду, так что у игроков, которые рискуют, есть шанс стать всё более могущественными.
Мы создали более десятка игровых режимов и досконально протестировали каждый, чтобы найти лучший баланс между песочницей, свободой, конкуренцией и возникающим игровым процессом. Большинство из них отправились в корзину, ха-ха. У нас есть таблица Excel с сотней идей для игровых режимов. Столько возможностей, что у нас голова идёт кругом. Играя в неё, мы понимаем, что создали нечто, чего люди раньше не испытывали, но это вызывает законный страх ошибиться, если мы попытаемся контролировать всё в направлении игры.
Мы рассчитываем на то, что игроки в бета-версии и раннем доступе примут участие и дадут нам отличные отзывы. Так что я очень, очень рад, что эта игра окажется в руках большего количества неравнодушных людей, что сделает будущее BeastLink совместным усилием сообщества.

Какими были самые большие проблемы с производительностью, с которыми столкнулась команда при создании SuperDestruction, и как вы их решали?
Томас Уильямсон: Первая проблема заключалась в том, чтобы выяснить, как построить нашу геометрию так, чтобы она могла разрушаться под управлением художников, но при этом физически вести себя соответствующим образом. В итоге мы создали специальный конвейер для работы с сеткой, используя инструмент Fracture в Unreal и специальный процессор для сетки, чтобы внедрить только необходимые данные для разделения этих частей в эффективном формате, который мог бы считываться как физическим движком, так и рендерером на GPU.
Следующая большая проблема заключалась в том, как эффективно перенести все движущиеся части из их вычисленной физической позиции в рендеренную сцену, а затем сделать это эффективным способом, чтобы глобальное освещение и затенение были точными. Мы придумали несколько интересных трюков, основанных на состоянии физики. Глобальное освещение в Unreal строится за несколько кадров, поэтому быстро движущаяся физическая деталь вообще не имеет значения для GI, поэтому важна скорость. Недействительность тени аналогична. Мы группируем наши физические детали в интеллектуальные блоки, размер которых зависит от фактического движения в кластерах, и просто делаем недействительными эти области теней.

Изменило ли создание такой системы подход к дизайну уровней или оформлению окружения в BeastLink?
Томас Уильямсон: Да, и, думаю, наши художники до сих пор очень злятся на меня, когда я сказал им, что система просто несовместима с предварительно размещёнными декалями. У нас есть несколько идей, как решить эту проблему в будущем, но это пример серьёзного ограничения, которое их беспокоит.
Ещё одно серьёзное ограничение — это огромный объём данных. Для нас более эффективно хранить данные о том, как строить и настраивать здание на карте в режиме реального времени, чем просто хранить все данные обо всех этих тысячах и тысячах деталей в файле. Это сильно отличается от традиционного рабочего процесса в Unreal и вызывает несколько собственных проблем.
Какие виды поведения игроков или возникающие моменты SuperDestruction сделал возможными, что было бы невозможно при более традиционном конвейере разрушения?
Томас Уильямсон: Их так много. В конце концов, это игра о кайдзю. Есть особое чувство, когда ты человек, прячешься от гигантского ящера, который разрушает небоскрёб, пытаясь добраться до тебя. У тебя есть ресурсы, чтобы связать Зверя с спящим кайдзю прямо за ним, может быть, ты мог бы пробежать через здание и между его ногами, пока он занят...

Есть ли в BeastLink конкретные примеры, когда разрушение напрямую меняет стратегию, перемещение, линии обзора или ход боя значимым образом?
Томас Уильямсон: На самом деле, он предназначен для изменения ВСЕХ этих вещей с трёх разных точек зрения!
Как человек, у вас есть доступ к ракетным установкам, гранатомётам, винтовкам и т. д. Вы можете стрелять через окна и двери, чтобы попасть внутрь зданий. Ну, если вы стреляете через окно из ракетницы, ракета пробьёт стекло и уничтожит всё, что за ним, но вы поняли. Такого рода взаимодействия дают вам возможность прятаться, располагаться лагерем или неожиданно врываться в зоны.
На транспортном средстве, будь то седан, танк или самолёт с неподвижным крылом, вам придётся преодолевать всевозможные препятствия, использовать участки в качестве импровизированных пандусов или ловко летать вокруг рушащихся зданий. Вам придётся считаться с обломками разрушений, которые существенно влияют на перемещение по окружению. Вам придётся тщательно выбирать транспортные средства в зависимости от местности, которую вы ожидаете. Быстрый спортивный автомобиль имеет смысл для уклонения от падающих зданий, но медленный внедорожник лучше подходит для передвижения по земле.
Если вы кайдзю, внезапно разрушаемые здания на карте превращаются в особую «топологию». Вы получаете опыт и «синхронизацию разума», разрушая здания, стоящие между вами и вашей целью, но это занимает время. Возможно, вы более восприимчивы к огню с земли в тесных пространствах, пока расчищаете территорию. Но на открытой местности вы можете передвигаться гораздо быстрее. Вы будете более восприимчивы к открытому огню, особенно со стороны летательных аппаратов, но другие люди и транспортные средства смогут их захватить и/или съесть. Многое зависит от ситуации, и каждый раз всё по-разному.

Для разработчиков, читающих 80 Level, какие самые важные уроки извлекла ваша команда при создании крупномасштабных сетевых разрушений в UE5?
Томас Вильямсон: Не уверен, что порекомендовал бы это, если честно! Это был пугающий процесс разработки, потому что мы одновременно создавали игру и технологию, и мы не знали, сможет ли сегодняшнее оборудование с этим справиться. Наш игровой процесс долгое время был неинтересным из-за низкой частоты кадров и проблем с сервером и сетью, и было довольно сложно понять, как всё это будет работать вместе. Но потом это получилось. Потребовались сотни отдельных отличных идей, чтобы эта система сложилась.
Я бы сказал, что самый большой урок, который мы усвоили, был более философским: если у вас есть большая мечта с большими идеями, окружите себя удивительными людьми и приступайте к работе. Я знаю, что всегда буду оглядываться на этот цикл разработки и думать о людях, с которыми я это делал, и о том, почему, а не обязательно о проблемах, с которыми мы столкнулись.

Томас Вильямсон, генеральный директор Grove Street Games, разработчик BeastLink
Интервью провёл Дэвид Джагно
Автор: Thomas Williamson