Слияние миров в захватывающем Multiplayer Histera | Unity

Узнайте, как повышение производительности DOTS помогает StickyLock перемещать игроков в пространстве и времени в этом новом варианте многопользовательского FPS.
Как небольшой команде разработчиков удалось воплотить инновационную игровую механику в стремительном шутере от первого лица? Команда StickyLock знала, что для победы на переполненном рынке FPS им понадобится новый подход. То, что начиналось как порталы между разными временными периодами, превратилось в глитч - игровой механизм, переносящий игроков в другую эпоху, дополненную новой картой. Но для реализации этого смелого замысла требовались потрясающая производительность, надежная инфраструктура Multiplayer, инновационные графические компоненты и сильный партнер, который помог бы собрать все это воедино.
This content is hosted by a third party provider that does not allow video views without acceptance of Targeting Cookies. Please set your cookie preferences for Targeting Cookies to yes if you wish to view videos from these providers.
Взрывная игра в жанре FPS в новых измерениях
Технический художник и программист, ставший продюсером, Джамель Зиати знал, что у него на руках амбициозный проект, когда он и команда StickyLock начали работать над тем, что стало Histera. Этот высокооктановый шутер от первого лица 8x8 переносит игроков по пересекающимся картам и временным линиям в режиме реального времени - без ущерба для производительности.
Будучи опытным разработчиком Unity, Джамель знал, что им нужна масштабируемая обработка и бэкэнд-функции, способные на лету менять компоненты карт и персонажей. Для этого команда воспользовалась стеком технологий, ориентированных на данные (DOTS), и системой компонентов сущностей (ECS) Unity для повышения производительности, а также задействовала Unity Gaming Services (UGS) для работы с бэкэнд-инфраструктурой многопользовательской игры.
Результаты:
- Эффективный и производительный бэкэнд-фреймворк, способный обрабатывать сотни тысяч сущностей и компонентов (только на одном уровне их более 230 тысяч).
- Сотни и тысячи часов работы разработчиков были сэкономлены благодаря использованию UGS

Перенос игроков в параллельные эпохи с помощью Глюка
Фирменная особенность Histera- геймплейная механика Glitch, когда участок внутри уровня переходит в совершенно другую эпоху со своим игровым полем, поведением и набором оружия. Это внезапное изменение настроек вызвало большой ажиотаж в игре, но также создало проблемы для команды StickyLock.
This content is hosted by a third party provider that does not allow video views without acceptance of Targeting Cookies. Please set your cookie preferences for Targeting Cookies to yes if you wish to view videos from these providers.
Действие "Глюка" разворачивается в три отдельные фазы. Первый этап, предвкушение, служит как визуальным сигналом для игроков о приближении глитча, так и закулисной подготовкой к управлению переходами активов. Далее наступает фаза деконструкции, когда визуальные эффекты текущей эпохи начинают освобождать место для следующего набора графики. Во время смены эпохи коллизии прежней эпохи исчезают, а местность новой эпохи начинает приобретать очертания.
Как только игра переходит в новую эру, она дает игрокам возможность взглянуть на новые визуальные эффекты и зоны столкновений, используя уникальную текстурную карту для разграничения навигационных областей и зон неминуемых столкновений, которая направляет игроков в сторону от опасных мест. Если игроки оказываются в таких зонах, игра поощряет движение, нанося урон, который возрастает до смертельного, если игроки остаются там после перехода. Кульминацией становится драматический эффект ударной волны, который закрепляет визуальные эффекты и столкновения новой эры, завершая последовательность Glitch.
Создание Glitch потребовало передовых систем для переходов, движения игрока и управления столкновениями. Гибкость Unity позволила команде разработать специальные инструменты и скрипты, которые автоматизировали эти действия, обеспечивая плавность игрового процесса даже при смещении всей карты во время игры. "Это уникальное поле боя, - объясняет Джамель, - и мы очень старались сделать все правильно".

Оптимизация рабочих процессов с помощью субсцен
Глюк был огромным вызовом, как с точки зрения технической реализации, так и потому, что для работы он должен был вписаться в уровень, не нарушая визуальной целостности или течения геймплея. Команда достигла этого баланса с помощью компонента Unity SubScene.
Подсцена - это GameObject MonoBehaviour, который ссылается на другую сцену. Он преобразуется в представление сущности, известное как EntityScene. Подсцены могут находиться в разных состояниях: открытом, закрытом или незагруженном, и это состояние влияет на загрузку памяти и видимости. Открытые подсцены позволяют изменять и преобразовывать GameObjects в режиме реального времени, в то время как закрытые подсцены загружают представления сущностей в память. Такая настройка помогает управлять сложными сценами и оптимизировать производительность за счет эффективной обработки данных о сущностях.
"Это, казалось бы, незначительная деталь, которая имеет большое значение", - делится Джамель. "Это позволяет нам обрабатывать несколько участков карты в рамках одной сцены. Такой подход не только упрощает рабочий процесс для наших художников, позволяя им сосредоточиться на отдельных подсценах без дублирования, но и минимизирует конфликты. Он дает четкое представление о том, какие подсцены активны в каждый момент времени".

Борьба с отставанием и оптимизация для увеличения количества тиков
"Обеспечение глобального Multiplayer - это, безусловно, самая большая проблема, с которой UGS помогает нам справиться, - говорит Джамель. "Он снимает с вас все заботы, связанные с созданием и управлением автопарками, а также обеспечивает надлежащее качество обслуживания в разных регионах мира".
Команда StickyLock приложила все усилия, чтобы сбалансировать возможности игроков с разным уровнем пинга. Игроки с высоким пингом выигрывают от компенсации задержки, потому что игра позволяет более справедливо регистрировать попадания, учитывая их задержку. Однако это может негативно сказаться на игроках с низким пингом, поскольку они могут получить удар за укрытием из-за "перемотки" сервера. Данные о размещении и производительности, полученные с помощью панели Multiplay Hosting, а также готовые функции прогнозирования, отката и компенсации задержек в пакете Netcode for Entities стали залогом более плавной и справедливой многопользовательской игры для всех игроков.
Джамель подчеркивает, что была проведена большая работа по настройке серверов, чтобы они могли работать с более высокой скоростью без увеличения затрат. Опыт команды Unity позволил им выявить возможности оптимизации, а серверы можно было настроить так, чтобы команда могла быстро вносить изменения в работу. Наконец, основанный на правилах MatchMaker в Unity позволил команде StickyLock сбалансировать дизайн игры с учетом времени ожидания и задержки.
"Получение информации об использовании оперативной памяти и процессора сервера, поддержание высокого качества обслуживания в разных регионах, а также управление функциями сервера и гибкость правил проведения матчей - все это очень важно для нас", - говорит Джамель. "Мы постоянно ищем способы повысить производительность, чтобы избежать неблагоприятных компромиссов между улучшением игрового процесса и управлением затратами".

Поднимаем потолок производительности с помощью DOTS
Геймплей, пересекающийся во времени, ставит перед нами задачи, выходящие далеко за рамки плавных переходов: создание перекрывающихся параллельных миров в многопользовательской среде означает достижение невероятно высокой производительности. Для достижения этой цели команда StickyLock обратилась к стеку технологий Unity, ориентированных на данные (DOTS), состоящему из пакета Entities Component System (ECS), Physics, C# Job System и компилятора Burst.
Внедрение DOTS и ECS в начале 2020 года было сопряжено с некоторыми рисками - они были ранними последователями технологии, и команде пришлось бы вкладывать средства в повышение квалификации и адаптацию к новым рабочим процессам на лету, но после погружения в образцы Джамель и команда решили, что выгоды перевешивают риски, поэтому они приняли участие в проекте.
“Burst и более высокий потолок производительности ECS очень важны для нас, - говорит Джамель, - особенно если речь идет об управлении пятью различными эпохами. Это приводит к увеличению количества сломанных партий, поскольку мы не можем повторно использовать сетки или материалы в разных стилях. С ECS мы получаем необходимую производительность для поддержания высокого качества изображения, несмотря на эти ограничения".
Система заданий C# позволяет эффективно выполнять параллельную обработку задач, а Burst компилирует код C# в высокооптимизированный нативный машинный код, минуя накладные расходы традиционной среды выполнения .NET. Этот нативный код специально адаптирован под целевую платформу, что обеспечивает более высокую производительность. Размышляя о преимуществах, которые DOTS открыла для его команды, Джамель говорит: "Если бы мы потратили большую часть бюджета на системы, мы бы не смогли визуализировать пять разных эпох с тем качеством, которое имеем сейчас".

Покупка времени с UGS
Помимо возможности подключения, Джамелю нужно было выиграть время для повышения квалификации своей команды, найдя другие способы сократить время разработки. Он обратился к UGS, чтобы разработчики сосредоточились на геймплее, и этот шаг, по его оценке, "позволит сэкономить от сотни до тысячи часов работы".
Команда использовала хостинг Multiplay, MatchMaker, Authentication и Cloud Content Delivery (CCD). Преимущества использования нескольких сторонних сервисов были очевидны для StickyLock с самого начала. "Сервис от первого лица было бы проще интегрировать и поддерживать, - говорит Джамель, - а сервисы UGS являются кроссплатформенными, чтобы в дальнейшем мы могли портировать их на консоли".
Multiplay Hosting предназначен для быстрого масштабирования в случае успеха в одночасье. "В наши дни все чаще случается так, что игра становится популярной в одночасье. Наличие службы, имеющей опыт запуска многих успешных изданий, дает нам ощущение легкости, - говорит Джамель. Кроме того, кросс-платформенные возможности Authentication позволяют Histera расширить свои возможности, когда придет время, а CCD Management облегчает команде управление контентом и выпуском релизов, чтобы обеспечить необходимый контент и функции, которые будут привлекать игроков по мере развития игры.
Благодаря надежной и масштабируемой бэкэнд-инфраструктуре Multiplayer, а также аутентификации и связи с игроками, готовыми к работе с несколькими платформами, Джамель уверенно идет к запуску, зная, что команды Multiplay и UGS его прикроют.