Адаптация к быстрому темпу живой многопользовательской VR-игры с PIGIAMA KASAMA

Основанная в 2022 году, PIGIAMA KASAMA — это компания по производству игр, которая создает игры для своих собственных ИП, таких как Касама: Пробуждение, и предлагает услуги по разработке игр для других брендов.
Их новейшая игра, PICKABOOM, — это игра следующего поколения в жанре социального VR, построенная вокруг исследования, хаотичных взаимодействий и совместной игры в реальном времени. Игроки спускаются в непредсказуемые системы пещер, выживают в абсурдных природных катастрофах и создают свои собственные моменты комедии, напряжения и триумфа.
Мы поговорили с соучредителями Маттео Фанчино и Паридом Стеллой, чтобы обсудить, как они подошли к проблемам нестабильности сети, сбоям в переподключении, падению производительности и быстрому времени на создание контента — все это во время создания их первой живой многопользовательской VR-игры.
Какова была основная цель с PICKABOOM?
Парид Стелла: Наша основная цель заключалась в создании высокоэнергетической социальной VR-игры, которая ощущается как живая, непредсказуемая и бесконечно переигрываемая — мир, где игроки объединяются, выживают вместе и естественным образом создают моменты, которыми люди хотят делиться.
Как живая игра, PICKABOOM имеет быстро меняющиеся требования: мы выпускаем обновления каждую неделю, постоянно исправляем проблемы, выявленные сообществом, и добавляем новый контент, сохраняя при этом стабильную производительность. Это потребовало от нас разработки систем, которые масштабируются, синхронизируют физику между несколькими игроками и остаются производительными на автономных гарнитурах.
Мы хотели, чтобы это ощущалось как хаотичное совместное выживание, смешанное с культурой создателей, где окружающая среда, катастрофы и физические взаимодействия постоянно удивляют игроков и побуждают их к сотрудничеству.

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

Какие шаги предприняла команда, чтобы преодолеть это?
МФ: Мы разбили проблему на этапы – создание потока живого контента и внедрение непрерывного профилирования. Для потока живого контента мы модульно организовали инструменты и врагов, позволили быстро добавлять новый контент, обеспечили, чтобы обновления не ломали предыдущие сборки, и при необходимости скорректировали еженедельный график.
Для непрерывного профилирования мы проводили регулярные проверки производительности, тестировали многопользовательскую нагрузку с реальными игроками из сообщества и приоритизировали оптимизацию для VR, касающуюся использования памяти, сборки мусора и всплесков GPU. Этот подход позволил нам выпускать стабильные еженедельные обновления, не замедляя разработку.

Какие новые функции и обновления в Unity 6 помогли преодолеть технические проблемы, с которыми столкнулась команда?
PS: При масштабировании игры мы оптимизировали время итерации и улучшили производительность с помощью следующих функций и обновлений:
Более быстрое время сборки: Живая игра требует частых сборок. Учитывая многопользовательский характер – до 10 игроков одновременно – было критически важно тестировать как с внутренними, так и с внешними командами. Более быстрое время сборки сэкономило значительное количество времени разработки.
Улучшения производительности Universal Render Pipeline (URP): Разработка для VR всегда является сложной задачей из-за ограничений оборудования. Улучшения в URP упростили разработку, так как прирост производительности был ощутимым. Мы настроили освещение, тени и материалы для ясности и читаемости в хаотичных условиях.
Обновления Shader Graph: Мы широко использовали Shader Graph для повышения скорости создания активов, процедурных эффектов, настройки персонажей и оптимизации.
Мы разработали пользовательские шейдеры карт, чтобы процедурно окрашивать сложные материалы с минимальными затратами на производительность. Шейдеры могут генерировать несколько визуальных биомов. Они создают драматически разные образы, используя очень мало ресурсов и сохраняя низкое воздействие на GPU и память.
Shader Graph также сыграл важную роль в создании нашей системы материалов для аватаров. С помощью пользовательского конвейера один материал может быть использован всеми персонажами без зависимости от текстур, при этом позволяя игрокам настраивать почти каждый элемент своего аватара – вплоть до таких деталей, как цвет ногтей. Этот подход обеспечивает максимальную производительность, даже когда одновременно отображается большое количество персонажей и аксессуаров.

Улучшения производительности Unity Physics: Unity Physicsобеспечивает все взаимодействия, включая броски, захваты, реакции врагов и катастрофы. Мы оптимизировали настройки Rigidbody, чтобы они оставались детерминированными для многопользовательского режима.
Улучшения системы Unity Audio: Система Unity Audio использовалась для позиционных сигналов, голосов игроков, врагов и взрывов, помогая игрокам координировать действия и общаться в реальном времени. Эти улучшения обеспечили четкие пространственные звуковые сигналы, даже в хаотичные моменты.
Стабильность Addressables: Мы использовали Addressables для поддержки живых обновлений персонажей, объектов и аксессуаров, обеспечивая максимальную гибкость и позволяя долгосрочную масштабируемость проекта.

Как команда реализовала эффекты, оптимизированные для GPU?
PS: Мы реализовали эффекты, оптимизированные для GPU, сначала используя инстансирование GPU для растительности и драгоценных камней. Это сыграло важную роль в снижении влияния VFX и частиц на производительность. Затем мы оптимизировали каждый шейдер, чтобы он оставался как можно более легковесным, содержащим только логику, строго необходимую для его цели.
Мы также оптимизировали геометрию, чтобы сохранить количество полигонов и вызовов отрисовки на минимальном уровне. Наша сложная система пещер чрезвычайно легковесна, что позволяет обеспечить плавную работу на автономном VR-оборудовании. Большие участки карты PICKABOOM могут быть прототипированы, протестированы и развернуты менее чем за два рабочих дня благодаря нашему специально разработанному редактору карт.
Наконец, мы снизили затраты на освещение.Визуальный стиль игры был разработан с целью минимизировать использование освещения в реальном времени почти полностью. Свет в реальном времени используется только в случае крайней необходимости, например, для конкретных моментов VFX или фонарика игрока. Наш собственный редактор карт включает адаптивную систему зондов освещения, специально разработанную для пещерных сред, что позволяет нам достигать стабильного, правдоподобного освещения при минимальных затратах производительности.
Мы протестировали каждую часть этого подхода на 60+ fps на Quest 3 и Quest 3S.

Каковы ваши цели по потокам контента?
МФ: Мы выпускаем новые обновления каждую неделю, включая новые предметы, новые мини-игры, улучшения стабильности и функции, запрашиваемые игроками. Мы планируем на две-три недели вперед, но сохраняем гибкость в зависимости от отзывов игроков и отчетов о сбоях. Мы можем быстро обрабатывать контент, используя модульный контент, подходы к быстрому прототипированию и Addressables.
С какими проблемами, связанными с производительностью, столкнулась команда?
PS: Мы столкнулись с пиками физики, взрывами Rigidbody, сетевыми задержками и проблемами с загрузкой GPU во время игрового процесса в условиях бедствия. Мы решили эти проблемы, упростив физический уровень, оптимизировав коллайдеры, используя инстансирование GPU и шейдеры с низкой стоимостью, улучшив частоту синхронизации и убрав ненужные обновления объектов.
Профайлер Unity и Дебаггер кадров были очень полезны. Мы также полагались на Deep Profiler для выявления проблем с сборкой мусора, а также на Android Logcat для диагностики во время выполнения.

Какими этапами вы гордитесь больше всего?
MF: Прежде всего, мы рады, что достигли стабильных 60+ fps на Quest 3 и Quest 3S. Мы также гордимся тем, что поддерживаем сотни сетевых физических объектов без потери производительности и сохраняем ноль "блокирующих" ошибок во время еженедельных обновлений. Наконец, здорово иметь систему камер, которая захватывает высококачественное видео без потерь кадров.
Какой совет вы бы дали разработчику, который хочет масштабировать свою VR-игру?
PS: Мой совет - быстро прототипировать и дорабатывать позже. Также важно сохранять простоту архитектуры многопользовательского режима перед масштабированием и постоянно проводить профилирование.
MF: Важно создавать контент модульными частями и приоритизировать стабильность кадров над визуальными эффектами. Я также рекомендую тестировать с реальными игроками каждую неделю и разрабатывать инструменты на ранних этапах.
Чтобы узнать больше о проектах, сделанных с помощью Unity, посетите страницу ресурсов.
