Case studies

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

Jul 3, 2024|11 мин.
Histera by Stickylock - Key Art
Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.

Узнайте, как повышение производительности DOTS помогает StickyLock перемещать игроков в пространстве и времени в этом новом варианте многопользовательского FPS.

Задача:
Поднимите потолок производительности в быстро развивающемся FPS, динамически меняя игровой контент с помощью Glitch
Персонал проекта:
40
Платформы:
ПК
Расположение:
Северная Голландия, Нидерланды

Как небольшой команде разработчиков удалось воплотить инновационную игровую механику в стремительном шутере от первого лица? Команда StickyLock знала, что для победы на переполненном рынке FPS им понадобится новый подход. То, что начиналось как порталы между разными временными периодами, превратилось в глитч - игровой механизм, переносящий игроков в другую эпоху, дополненную новой картой. Но для реализации этого смелого замысла требовались потрясающая производительность, надежная инфраструктура Multiplayer, инновационные графические компоненты и сильный партнер, который помог бы собрать все это воедино.

Взрывная игра в жанре FPS в новых измерениях

Технический художник и программист, ставший продюсером, Джамель Зиати знал, что у него на руках амбициозный проект, когда он и команда StickyLock начали работать над тем, что стало Histera. Этот высокооктановый шутер от первого лица 8x8 переносит игроков по пересекающимся картам и временным линиям в режиме реального времени - без ущерба для производительности.

Будучи опытным разработчиком Unity, Джамель знал, что им нужна масштабируемая обработка и бэкэнд-функции, способные на лету менять компоненты карт и персонажей. Для этого команда воспользовалась стеком технологий, ориентированных на данные (DOTS), и системой компонентов сущностей (ECS) Unity для повышения производительности, а также задействовала Unity Gaming Services (UGS) для работы с бэкэнд-инфраструктурой многопользовательской игры.


Результаты:

- Эффективный и производительный бэкэнд-фреймворк, способный обрабатывать сотни тысяч сущностей и компонентов (только на одном уровне их более 230 тысяч).

- Сотни и тысячи часов работы разработчиков были сэкономлены благодаря использованию UGS

Вид с высоты птичьего полета на карту в процессе замены с помощью глюка.

Перенос игроков в параллельные эпохи с помощью Глюка

Фирменная особенность Histera- геймплейная механика Glitch, когда участок внутри уровня переходит в совершенно другую эпоху со своим игровым полем, поведением и набором оружия. Это внезапное изменение настроек вызвало большой ажиотаж в игре, но также создало проблемы для команды StickyLock.

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

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

Создание Glitch потребовало передовых систем для переходов, движения игрока и управления столкновениями. Гибкость Unity позволила команде разработать специальные инструменты и скрипты, которые автоматизировали эти действия, обеспечивая плавность игрового процесса даже при смещении всей карты во время игры. "Это уникальное поле боя, - объясняет Джамель, - и мы очень старались сделать все правильно".

Глюк разворачивается в условиях пещеры.

Оптимизация рабочих процессов с помощью субсцен

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

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

"Это, казалось бы, незначительная деталь, которая имеет большое значение", - делится Джамель. "Это позволяет нам обрабатывать несколько участков карты в рамках одной сцены. Такой подход не только упрощает рабочий процесс для наших художников, позволяя им сосредоточиться на отдельных подсценах без дублирования, но и минимизирует конфликты. Он дает четкое представление о том, какие подсцены активны в каждый момент времени".

Пейзаж игры Histera в середине глитча.

Борьба с отставанием и оптимизация для увеличения количества тиков

"Обеспечение глобального Multiplayer - это, безусловно, самая большая проблема, с которой UGS помогает нам справиться, - говорит Джамель. "Он снимает с вас все заботы, связанные с созданием и управлением автопарками, а также обеспечивает надлежащее качество обслуживания в разных регионах мира".

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

Джамель подчеркивает, что была проведена большая работа по настройке серверов, чтобы они могли работать с более высокой скоростью без увеличения затрат. Опыт команды Unity позволил им выявить возможности оптимизации, а серверы можно было настроить так, чтобы команда могла быстро вносить изменения в работу. Наконец, основанный на правилах MatchMaker в Unity позволил команде StickyLock сбалансировать дизайн игры с учетом времени ожидания и задержки.

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

Геймплей Histera с перспективой от первого лица и красными глитч-элементами, окружающими игрока.

Поднимаем потолок производительности с помощью 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 его прикроют.