Case studies

Как команда из шести человек перенесла LEGO® Builder's Journey на Apple Vision Pro всего за три месяца

Mar 13, 2024
Путешествие строителя LEGO® от студии Light Brick
Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.

Начиная с Apple Arcade, LEGO Builder's Journey от Light Brick Studio, захватывающая мультиплатформенная игра-головоломка, постоянно набирает обороты. Вот что узнала команда, когда приняла новую эру пространственных вычислений и перенесла название на Apple Vision Pro.

ЗАДАЧА:
Устранение проблем с рендерингом и оптимизацией для переноса на Apple Vision Pro за три месяца
СОТРУДНИКИ ПРОЕКТА:
20, а команда из 6 человек работает с портом Apple Vision Pro
ПЛАТФОРМЫ:
Apple Arcade, PC, Xbox One, Xbox X|S, PlayStation®4, PlayStation®5, Nintendo Switch™, Apple Vision Pro
РАСПОЛОЖЕНИЕ:
Копенгаген, Дания

Как студия, которая только начинает работать со смешанной реальностью, может создать ее для погружения в Apple Vision Pro, сохраняя при этом верность игровому процессу на других платформах?

Поскольку кирпичики LEGO® - это реальные физические продукты, Light Brick Studio осознавала сложность создания опыта, в котором игроки взаимодействуют с игровыми элементами в комнате. При выпуске игры для Apple Vision Pro время также было ограничено. Если другие порты платформ с 2D-интерфейсами команда выполняла в течение месяца или двух, то для этого нового направления пространственных вычислений трехмесячный срок был слишком мал.

Навигация по новому измерению

"Как только вы узнаете границы платформы для игры и ее геймплейный дизайн, вы сможете создать практически любой вид опыта, который захотите", - объясняет Миккель Фредборг, технический руководитель Light Brick Studios.

Для команды перенос игры на visionOS был "в основном технической задачей - обеспечить ее плавную работу и затем использовать все преимущества". Это означало проведение множества технических переделок, включая полную переработку пользовательского интерфейса (UI), чтобы разместить некогда плоские элементы UI в комнате. Команде также пришлось обновить инструменты и методы рендеринга, чтобы обеспечить визуальное качество и реалистичность конечного продукта. Параллельная балансировка систем Unity и RealityKit создала дополнительные препятствия для оптимизации производительности.

"Мы делали много разных портов, и этот был самым сложным, потому что Apple Vision Pro сильно отличается от других платформ", - говорит Карстен Лунд, управляющий директор Light Brick Studio. "Мы рассчитывали увидеть, как далеко мы сможем зайти в этом опыте, и все получилось очень хорошо".

Результаты

  • Создал 80 уровней игры и 60 353 кирпича LEGO для Apple Vision Pro менее чем за 100 дней
  • Благодаря поддержке команды Unity PolySpatial удалось избежать нескольких недель задержки разработки.
  • Все игровые области остались нетронутыми, были произведены лишь специфические оптимизации производительности, но без изменений общего хода игры
  • Реализован плавный переход с открытым стилем смешанной реальности, который становится все более захватывающим по мере продвижения игрока

Nintendo Switch — зарегистрированная торговая марка Nintendo.

Изображение элементов игрового процесса LEGO Builder's Journey в действии
Путешествие строителя LEGO от студии Light Brick

Переработка пользовательского интерфейса и дизайна игрового процесса

LEGO Builder's Journey имеет минимальный пользовательский интерфейс, содержащий не более 20 кнопок для таких действий, как загрузка сохраненных игр и перезапуск уровня, поэтому переделать его было не так сложно, как это было бы сделано для многих игр. Они переделали UI в Unity, взяв GameObjects и прикрепив к ним коллайдеры, чтобы обеспечить правильную работу ввода, подражая при этом языку дизайна visionOS.

Команда также должна была учитывать гибкость движений тела. За исключением пользовательского интерфейса, все в игре построено из кирпичиков LEGO в инструменте под названием LEGO Digital Designer. Команда всегда пыталась смоделировать 3D-пространство в 2D-поверхности, но в Apple Vision Pro им пришлось учитывать тот факт, что игрок может перемещаться куда угодно. Для того чтобы создать полноценный 360-градусный эффект, команда переработала существующие модели, предназначенные для просмотра только под определенными углами, чтобы не было никаких дыр в геометрии модели. Чтобы уменьшить количество вызовов рисования, несколько сеток также были объединены в один GameObjects.

Фредборг говорит: "Мы смогли учесть, что игрок может ходить по всему периметру, а затем провести полную оптимизацию модели на 360 градусов. Мы избавились от всей геометрии, которая была внутри кирпичей, когда импортировали их в игру, поэтому мы удалили все детали интерьера, так как вы никогда их не увидите. Мы смогли воспользоваться имеющимися у нас автоматизированными инструментами и настроить их на работу с полноценной симуляцией".

Снимок команды Light Brick Studio, сделанный в редакторе, настраивает пользовательский интерфейс и события для компонента PolySpatial VolumeCamera
Снимок команды Light Brick Studio, сделанный в редакторе, настраивает пользовательский интерфейс и события для компонента PolySpatial VolumeCamera

Управление размещением в режиме Bounded

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

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

Помощь шейдерам MaterialX

В самых ранних версиях LEGO Builder's Journey команда использовала собственную версию облегченного конвейера рендеринга Unity (LWRP), а затем перешла на конвейер рендеринга высокого разрешения(HDRP) для портов Xbox и PlayStation. Для Apple Vision Pro пришлось сначала преобразовать все в Universal Render Pipeline(URP) и Shader Graph, а затем перенести в Apple RealityKit.

Для этого они перевели шейдеры, созданные в Shader Graph, в шейдеры MaterialX, которые можно загрузить в RealityKit. Но команда столкнулась с трудностями, обнаружив, что результаты не очень хорошо оптимизированы и требуют больше работы, чем предполагалось.

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

Игровые элементы различных уровней в LEGO Builder's Journey
Путешествие строителя LEGO от студии Light Brick

Поиск оптимального освещения

Из-за сжатых сроков создания игры им пришлось искать решения на ходу. "Нам пришлось искать решения, чтобы повысить реалистичность игры и при этом поддерживать Realtime Lights and Shadows", - говорит Фредборг. "Это было одним из самых значительных изменений".

Сначала они взяли освещение на основе изображения из Apple Vision Pro, чтобы правильно добавить его к материалам, которые они хотели включить, таким как пластик и различные вариации. Им пришлось решать такие сложные для устранения проблемы, как отпечатки пальцев и царапины на кирпичах.

Поскольку игра изначально разрабатывалась для ранних моделей iPhone, в ней очень простое освещение. Команда использовала объемную текстуру - 3D-текстуру с заложенной в нее окклюзией окружающего мира, - чтобы можно было брать образцы из любой точки сцены. Они брали образцы точек и анализировали, насколько сильна окклюзия окружающей среды. Поскольку 3D-текстуры не поддерживаются в Apple Vision Pro, пришлось конвертировать текстуры объемов в 2D-текстуры и вручную делать из них выборку. Сейчас этот процесс автоматизирован в PolySpatial, но на момент начала работы команды Light Brick Studio он был недоступен.

В редакторе команда студии Light Brick устанавливает одну из ночных сцен.
В редакторе команда студии Light Brick устанавливает одну из ночных сцен.

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

"То, что мы делали, на самом деле было невозможно, но мы нашли обходной путь, уменьшив гладкость кирпича и увеличив различные значения, прежде чем отправить его на освещение RealityKit", - объясняет Фредборг. "Разработчикам будет проще, ведь теперь в PolySpatial и RealityKit можно перезаписывать освещение на основе изображений".

Игровые элементы различных уровней в LEGO Builder's Journey
Путешествие строителя LEGO от студии Light Brick

Создание мягкой тени

Команде Light Brick Studio также пришлось искать решение для теней. Хотя в Apple Vision Pro можно добавлять тени к некоторым элементам, это не является стандартной функцией. Для этого команда рендерила тень в Unity как карту высоты или глубины, отправляла ее в RealityKit и переснимала там. Они отрисовали сцену в виде карты теней на бэкенде Metal в Unity, а затем передали ее на сторону рендеринга RealityKit.

"То, что вы можете продвинуть через рендеринг, ограничено, если вам все еще нужно получить 90 кадров в секунду. Мы сделали очень маленькую карту теней, 64 x 64 пикселя, а затем объединили уровни mipmap в RGBA-каналы одной текстуры, которую затем можно сэмплировать одним сэмплом в RealityKit, чтобы получить нечто, похожее на мягкую тень", - объясняет Фредборг. Когда кирпич находится очень близко к поверхности, тени получаются довольно резкими, но когда он поднимается вверх, тени становятся более мягкими". Мы сделали это с помощью одного образца текстуры".

Погружение в мир игры LEGO Builder's Journey в домашних условиях
Путешествие строителя LEGO от студии Light Brick

Для Realtime Lights из Unity использовался узел PolySpatial Lighting Node в Shader Graph, который после преобразования в RealityKit расширился до нескольких узлов Shader Graph.

"Для RealityKit единственный способ изменения шейдеров - это интерфейс, похожий на Shader Graph, - говорит Фредборг. В Unity команда обнаружила, что можно создать пользовательскую функцию в Shader Graph, и, если она соответствует определенным правилам, ее можно затем преобразовать в нодовый граф MaterialX. "Это очень помогло нам, - продолжает он, - иначе это был бы монстр из спагетти внутри монстра из спагетти в Shader Graphs".

Игровые элементы различных уровней в LEGO Builder's Journey
Путешествие строителя LEGO от студии Light Brick

Оптимизация при 90 fps

По мере того как команда продвигала визуальные эффекты в новое измерение, они столкнулись с некоторыми трудностями в обеспечении бесперебойной работы платформы. Разработка велась как двухкомпонентная система, передавая все из Unity в RealityKit, который имеет различные методы рендеринга. Это означало, что Unity занималась логикой игры, а RealityKit - визуальным рендерингом, и для плавной работы при 90 кадрах в секунду требовалась оптимизация. Одна из главных проблем заключалась в том, чтобы определить, на чьей стороне узкое место - Unity или RealityKit, и команде требовалось несколько попыток, чтобы найти решение.

"В начале пакет PolySpatial отражал все, что мы делали в Unity, в RealityKit, так что каждый GameObjects или трансформация были там, и в то время мы не могли отключить передачу или отражение определенных слоев. В нем отражено все: рендеринг пользовательского интерфейса, рендеринг холста и система частиц аниматора", - объясняет Фредборг. "Сейчас есть фильтр, позволяющий не отслеживать определенные слои, но в то время нам нужно было найти способ очистить все, что мы не собирались видеть на стороне RealityKit".

Уровень в LEGO Builder's Journey от студии Light Brick
Путешествие строителя LEGO от студии Light Brick

Команде необходимо было оптимизировать иерархии GameObjects. На других платформах кирпичи представляют собой три или более связанных GameObjects, но для visionOS они установили максимум два GameObjects на кирпич, чтобы ограничить переходы между Unity и RealityKit. Это отлично сработало и стало большой победой для команды.

Усовершенствование анимации стоп-кадров также стало одним из главных моментов. Игра содержит анимированные водопады, которые обменивались сетками на кирпичи. Они состояли из сотен различных GameObjects, которые работали довольно медленно. "В итоге мы решили решать эту проблему поэтапно, а не делать каждый кадр для каждого GameObjects", - говорит Фредборг. Мы ждали и делали это каждые несколько кадров между разными потоками водопада". Это очень помогло".

Поиск лучших решений и партнеров

На протяжении всего пути создания продукта для Apple Vision Pro команде Light Brick Studio приходилось быть проворными, быстро решать проблемы и проводить итерации, чтобы сделать все правильно.

"Я думаю, чтобы понять это, нужно надеть очки", - говорит Фредборг. "Мы рекомендуем делать несколько сборок и использовать устройство как можно чаще, чтобы сосредоточиться на осязании и движении. У вас есть симулятор, который можно запустить на Mac, чтобы понять, как все работает, но входные данные отличаются. Это гораздо более физическая платформа".

В итоге команда осталась очень довольна тем, какой получилась игра, в том числе благодаря работе с сильным партнером. "Команда PolySpatial была очень отзывчива как в Slack, так и на дискуссионных форумах, - продолжает он. "Когда у нас возникали проблемы, они быстро находили решения, что было очень полезно. Они очень поддерживали нас и хотели сделать лучшую версию PolySpatial".

Уровень в LEGO Builder's Journey от студии Light Brick
Путешествие строителя LEGO от студии Light Brick
"Пока Unity поддерживает платформу, мы можем заставить ее работать на ней".
MIKKEL FREDBORG / LIGHT BRICK STUDIOTechnical Lead

Сборка для Apple Vision Pro уже сегодня с Unity 2022 LTS

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

Изучите конкретный пример

Заполните эту форму, чтобы получить доступ к последним историям успеха клиентов.