Масштабирование Subway Surfers City для повышения производительности и скорости

Mar 24, 2026
Subway Surfers City | SYBO

SYBO разработала свой последний релиз, Subway Surfers City как следующая глава в Subway Surfers universe. В то время как оригинальная игра путешествует по всему миру, эта часть привязывает игроков к Subway City, представляя различные районы и больше разнообразия игрового процесса.

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

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

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

ЗАДАЧА:

Создание высококачественного продолжения Subway Surfers, которое работает без перебоев и обеспечивает стабильную производительность на широком спектре устройств

ПЛАТФОРМА:

iOS и Android

РАЙОН:

Копенгаген, Дания

СЕРИАЛ:

35

Subway Surfers City: Исследование по Unity

Команда создала Subway Surfers City как масштабируемую живую игру, чтобы поддерживать постоянный контент, новую механику и более высокое качество в течение многих лет без необходимости серьезных переработок. «Она должна была масштабироваться технически в том же темпе, в котором дизайн и контент масштабировались творчески», — говорит Аташ Касим, ведущий дизайнер игр в SYBO.

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

В то же время более высокая точность создавала проблемы с производительностью: детализированные окружения, высокополигональные активы и более насыщенные анимации могут создавать нагрузку на устройства среднего и низкого уровня. «Мы встроили строгие бюджеты сложности сеток и шейдеров, реализовали иерархические пути рендеринга с разными уровнями качества и масштабированием разрешения, а также постоянно проводили профилирование на репрезентативных устройствах», — объясняет Габриэль Ласкано, технический директор SYBO. «Мы также вложили значительные средства в поиск правильного момента для предварительного прогрева шейдеров, балансируя между быстрыми временами загрузки и провалами в компиляции шейдеров во время выполнения».

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

Subway Surfers City

Результаты

  • Постоянно 60 кадров в секунду
  • Увеличение поддержки устройств в 5,9 раз после этапа оптимизации производительности
  • Сокращение горизонта от 260 000 до небольшого количества вершин и сокращение вызовов отрисовки с 27 до всего нескольких
  • Устранение задержки в 10 мс при ожидании завершения работы GPU для каждого кадра на устройствах начального уровня
  • Сокращение накладных расходов на анимацию и рендеринг примерно на 50–60%, что позволило вернуть около 2 мс времени центрального процессора основного потока на устройствах Android начального уровня

Проектирование уровней для быстрой итерации

Дизайн уровней в Subway Surfers City создан для скорости и гибкости. Чтобы обеспечить разнообразие и отзывчивость, которые определяют франшизу, команда использовала процедурную систему на основе фрагментов, позволяющую дизайнерам создавать, изменять и комбинировать автономные сегменты независимо друг от друга в редакторе Unity.

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

Используя редактор, дизайнеры моделируют движение препятствий, просматривают взаимодействие и тестируют динамические элементы в реальном времени. «Они могут точно понять, как будет ощущаться фрагмент, не проходя всю игру», — объясняет Ласкано.

Subway Surfers City | SYBO

Subway Surfers City | SYBO

Инструменты размещения Snappable и визуализация коллайдеров Unity дополнительно упростили итерации, обеспечивая точные и быстрые настройки. Для пошаговых режимов, таких как City Tour, дизайнеры запускали конкретные фрагменты или этапы непосредственно в редакторе, минуя полные циклы компиляции проекта.

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

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

Subway Surfers City | SYBO

Subway Surfers City | SYBO

Управление памятью с помощью Addressables

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

«Фрагменты загружаются и выгружаются через систему Addressables с жестким контролем срока службы, что позволяет масштабировать объем памяти в соответствии с активным игровым процессом, а не с общим размером контента», — объясняет Ласкано. «В сочетании с пулингом это минимизирует пиковые значения выделения памяти и поддерживает стабильность оперативной памяти во время выполнения даже при масштабировании контента».

Система Addressables позволяет команде отделить контент от базовой сборки и рассматривать фрагменты уровней как независимые загружаемые единицы. «Это было крайне важно для обеспечения соответствия требованиям магазинов за счет уменьшения размера начальной загрузки и контроля за размещением памяти во время выполнения», — говорит Ласкано.

Subway Surfers City | SYBO

Subway Surfers City | SYBO

Масштабирование производительности на всех сегментах устройств

Рендеринг в Unity с использованием Addressables и SRP, а также профилирование памяти и LOD. Subway Surfers City масштабируется на устройствах низкого, среднего и высокого класса, сохраняя детализированную графику и стабильную частоту кадров. Команда придерживалась строгой методологии оптимизации, начиная с устранения узких мест. Каждый раз, когда удалялось ограничение, профилирование выявляло следующий ограничивающий фактор. «Этот итеративный процесс позволил нам методично расширять диапазон поддерживаемых устройств, а не полагаться на общую, несфокусированную оптимизацию», — говорит Ласкано.

Команда использовала универсальный рендеринг-пайплайн (URP) с компоновщиком скриптируемого рендеринг-пайплайна (SRP), чтобы снизить нагрузку на рендеринг процессора за счет кэширования буферов констант материалов на GPU и повторного использования их в объектах, использующих один и тот же вариант шейдера, что минимизирует настройку состояния для каждого вызова рендеринга на потоке рендеринга.

«Мы реализовали несколько вариантов шейдеров для каждого уровня качества и управляли ими с помощью глобальных ключевых слов и настроек URП. Устройства начального уровня используют упрощенное освещение и упрощенные пути фрагментов, в то время как более продвинутые устройства сохраняют полную точность, и все это без изменения содержимого активов», — говорит Ласкано.

Subway Surfers City | SYBO

Subway Surfers City | SYBO

Художники создавали шейдеры с помощью редактора Amplify Shader Editor, что давало им творческий контроль без необходимости в поддержке со стороны инженеров. Команда проверила производительность на различных устройствах, переписала сложные шейдеры и оптимизировала ключевые активы, включая городской горизонт.

«Мы заменили высокополигональный 3D-анимированный горизонт, состоящий примерно из 260 000 вершин и 27 вызовов отрисовки, на плоскую сетку и текстуры с эффектом панорамирования», — говорит Ласкано. «Это изменение значительно сократило обработку вершин и фрагментацию микротреугольников до небольшого количества вершин в нескольких вызовах отрисовки, что позволило восстановить несколько миллисекунд времени GPU на устройствах Android начального уровня».

Сокращение перерисовки микротреугольников на мобильных GPU

Ранний профилировщик GPU на устройствах с GPU Mali показал, что приложение отправляло гораздо больше геометрии, чем это было необходимо для видимых пикселей. Видно было только около 33% предоставленных простых объектов, в то время как GPU отбраковала примерно 25% через отбор проб (идеально менее 5%). Кроме того, частичное покрытие от микротреугольников постоянно достигало 50–80% (идеально менее 10%).

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

«Мы отреагировали на это агрессивным сокращением количества полигонов, удалением обратных граней на статической геометрии, упрощением сеток горизонта и введением строгих ограничений на количество сеток в каждом фрагменте. Это значительно снизило нагрузку на фрагменты и стабилизировало время работы GPU на устройствах Android начального уровня», — говорит Ласкано. «Цветовая маркировка вершин, ограничение количества полигонов и удаление обратных граней со статической геометрии дополнительно снизили нагрузку на GPU, не повлияв на визуальное качество игры».

Subway Surfers City | SYBO

Subway Surfers City | SYBO

Расширение списка поддерживаемых устройств за счет профилирования

На ранних этапах разработки только 16% поддерживаемых устройств могли работать Subway Surfers City из-за графической сложности. При профилировании команда столкнулась с изменяющимися узкими местами, включая стоимость фрагментов GPU и сложность шейдеров, а также перегрузку при отправке данных на CPU и удержание памяти.

Для расширения поддержки устройств команда активно использовала Project Auditor и Memory Profiler, а также собственные инструменты профилирования. Project Auditor помог им выявить неэффективности на уровне конфигурации и активов, такие как избыточные варианты шейдеров и избыточные или некорректные настройки, в то время как узкие места в режиме выполнения анализировались с помощью Unity Profiler и инструментов профилирования на уровне устройства, таких как RenderDoc и Snapdragon Profiler.

Memory Profiler выявил проблемные области в использовании памяти активов, точно указывая текстуры, сетки или объекты, которые вызывали пики или ненужное удержание.

Subway Surfers City | SYBO

Subway Surfers City | SYBO

«Профилирование было интегрировано в наш контрольный пункт выпуска. Каждая основная сборка проверялась на соответствие бюджетам CPU, GPU и памяти, чтобы предотвратить регрессию и обеспечить, чтобы улучшения на одном уровне устройств не приводили к нестабильности на другом», — объясняет Ласкано.

Систематически анализируя эти показатели, команда определила приоритеты оптимизации, установила ограничения на количество полигонов и объем памяти и обеспечила стабильную частоту кадров даже на устройствах начального уровня.

Команда также провела внутреннюю проверку Addressables, чтобы предотвратить дублирование и конфликты, в то время как модульная система чанков и пул объектов минимизировали скачки памяти во время игры.

Приоритет стабильности кадров перед пиковыми показателями производительности

Для рендеринга команда выбрала OpenGL вместо Vulkan, чтобы поддерживать стабильную частоту кадров на устройствах начального уровня на основе измерений производительности по всему тестовому матриксу.

«Хотя Vulkan показал хорошие результаты на высокопроизводительных устройствах, профилирование выявило задержки в рендеринговом потоке и нестабильную частоту кадров на маломощном Android-оборудовании», — говорит Ласкано. «OpenGL обеспечивал более стабильную частоту кадров на всех устройствах из нашей целевой матрицы, поэтому мы отдали приоритет включению устройств и стабильности кадров, а не теоретической пиковой производительности».

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

«Сотрудничество с командой Integrated Success Unity помогло подтвердить и ускорить решения, которые мы уже рассматривали и оценивали оптимизации по показателю возврата на инвестиции (ROI)», — говорит Ласкано. «Наибольший прирост был достигнут за счет систематического устранения реальных узких мест, будь то обновления границ объема CPU, перекрытие мелкосетчатой модели или стоимость фрагмента GPU, а не применения общих лучших практик».

Subway Surfers City | SYBO

Subway Surfers City | SYBO

Обмен опытом в области оптимизации производительности

Что касается оптимизации производительности, Ласкано подчеркивает, что к передовым технологиям, таким как системы уровней детализации (LOD) или Vulkan, следует относиться как к гипотезам и проверять их в контексте вашей игры.

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

«Среднее количество кадров в секунду может быть вводящим в заблуждение. То, что игроки замечают больше всего в такой игре, — это стабильность темпа кадров. «Устранение пиков и задержек в рендеринге оказало большее влияние на игровой опыт, чем увеличение пиковой частоты кадров», — говорит Ласкано. «Выбор правильной рендеринговой конвейера с правильной стратегией пакетной обработки для оптимизации темпа кадров может изменить ход игры».

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

Загрузите Unity Pro сегодня

Начните создавать игры, которые по качеству и успеху смогут конкурировать с играми крупных студий, используя мощные инструменты, поддержку, проверенных партнеров и активное сообщество.