Игры в фокусе: Профилирование и оптимизация производительности

Это третий блог в нашей серии "Игровой фокусв котором освещаются ключевые инициативы по разработке продуктов на предстоящий год и далее. Здесь мы расскажем о состоянии, планах выпуска и будущем видении профилирования и производительности в Unity.
Меня зовут Марика. Я работаю в индустрии видеоигр почти десять лет и в настоящее время являюсь старшим техническим менеджером по инструментам профилирования и оптимизации производительности в Unity.
Когда мы думаем о производительности в Unity, то выделяем три основные области, в которых, по нашему мнению, мы можем помочь:
- Проницательность: Вы сможете изучить производительность своей игры, выявить узкие места и определить области, которые выиграют от применения стратегий оптимизации.
- Опыт: Обеспечение плавного создания проектов за счет повышения производительности редактора и среды выполнения Unity
- Инновации: Направляет вас в новые техники и парадигмы программирования, в которых производительность учитывается с самого начала
Сегодняшняя статья посвящена первым двум направлениям, в ней рассказывается о последних обновлениях нашего набора инструментов для профилирования и о том, как отзывы клиентов формируют нашу дорожную карту на 2023 год и далее. В конце статьи мы расскажем о лучших практиках оптимизации проектов.
Третью область - техники и рабочие процессы программирования, ориентированные на производительность, с упором на проекты на базе DOTS - мы рассмотрим в одном из следующих постов.
Нам нравится думать о функциях профилирования в Unity как об инструментах детектива, которые помогут вам разгадать тайны того, почему производительность вашего приложения медленная или глючная, или почему код выделяет избыточную память. Они помогут вам понять, что происходит под капотом игрового движка Unity.
Наша цель - повысить производительность инструментов и времени выполнения Unity за счет профилирования и оптимизации, помогая вам обеспечить плавную работу для игроков на широком спектре платформ и устройств.
Memory Profiler предназначен для облегчения отслеживания использования и состава памяти. Я рад сообщить, что Memory Profiler 1.0.0 теперь является проверенным пакетом для бета-версии Unity 2022.2 и выше (инструкции по загрузке можно найти здесь). Спасибо всем, кто поделился своими бесценными отзывами о том, как создать лучший рабочий процесс для этой важной функции.
Многие из вас сталкиваются с необходимостью работать с ограничениями памяти каждой из целевых платформ. Memory Profiler помогает решить эту проблему, предоставляя вам четкий обзор влияния активов и объектов на память в одном представлении. Она также показывает подробную контекстную информацию о том, к каким объектам и системам относится данное воспоминание.
Вы можете углубиться в захват с помощью представлений разбиения и сравнить снимки памяти, чтобы выявить потенциальные утечки и ненужные выделения, которые негативно влияют на использование памяти.


Совершенствование существующего набора инструментов для профилирования
В версии 2022.1 мы добавили менеджер синхронизации кадров, который позволяет захватывать и получать данные синхронизации кадров для нескольких кадров. Если производительность снижается, используйте эту функцию для оценки кадров и анализа того, почему ваше приложение не достигает целевых показателей. Подробнее об этом в нашей документации.
Если вы хотите отслеживать низкоуровневые метрики GPU в Unity Profiler, вы можете использовать новый Пакет System Metrics Maliкоторый мы выпустили в версии 2022.1 благодаря сотрудничеству с Arm. Этот пакет позволяет получить доступ к низкоуровневым системным или аппаратным метрикам на мобильных устройствах. Если вам интересно узнать больше о том, как обеспечить плавную работу вашего контента на мобильных устройствах, оснащенных процессорами Arm и графическими процессорами Mali, этот блог 2021 поможет вам.
Оптимизация производительности
Описанные выше инструменты профилирования - это отличное начало, которое поможет вам определить области, где производительность может быть улучшена. В моей команде, однако, "оптимизация производительности" относится не только к производительности игр на целевых устройствах, но и к тому, как работает ваша команда - к вашей продуктивности. Мы стремимся к тому, чтобы ускорить время итераций, уменьшить количество прерываний и повысить эффективность работы редактора.
В Unity 2021 LTS импорт активов происходит в три-четыре раза быстрее, а открытие импортированных проектов - на 8,7 % быстрее по сравнению с Unity 2020 LTS.
Мне не терпится поделиться некоторыми улучшениями, которые появятся и в релизе 2022 года:
- Улучшен реимпорт материалов для Universal Render Pipeline и High Definition Render Pipeline
- Улучшения рабочего процесса редактора, в том числе:
- Ускоренное сохранение больших сцен
- Сокращение времени простоя при выборе сцены
- Улучшена производительность в представлении сцены при наличии большого количества групп LOD
- Оптимизированный пакет для создания анимационной оснастки
- Улучшенная прокрутка иерархии
- Улучшенный процесс сохранения для больших префабов
- Улучшено время итерации при работе внутри редактора за счет оптимизации при перезагрузке домена
- Улучшения игрового режима, в том числе:
- Улучшена производительность статического пакетирования
- Оптимизирован процесс поиска каталогов ресурсов в Addressables
- Предварительное прогревание систем частиц
И снова ваши отзывы сыграли важную роль во многих из этих улучшений. Пожалуйста, продолжайте делиться своими отзывами о нашей будущей дорожной карте здесь, или свяжитесь с командой на форумах. Нас особенно интересуют вопросы, связанные с производительностью, которые мы фиксируем здесь.
На протяжении более десяти лет мы не перестаем следить за тем, чтобы вы могли достичь наилучшей производительности с помощью наших инструментов профилирования, и мы продолжаем совершенствовать этот набор инструментов. Это развитие приняло множество форм, включая все те функции, о которых мы уже упоминали.
Еще одна область, в которой мы работали над обеспечением значительного повышения производительности, - это стек технологий, ориентированных на данные, или DOTS. Две ключевые особенности, ставшие неотъемлемой частью успешной реализации DOTS, - это компилятор Burst и система заданий C#. Они были использованы в нашем собственном внутреннем движке для достижения отличных результатов, и сегодня они доступны для всех. В ближайшее время мы представим третью важную функцию - Entities, которая позволит увеличить производительность проектов в таких областях, как сетевые технологии, физика и многое другое. Это настолько важный аспект нашей приверженности разработке игр, что мы посвятим DOTS отдельную статью Games Focus в этой серии, которая выйдет в ближайшее время.
А пока давайте посмотрим на несколько улучшений, запланированных на ближайшие релизы.
Мы работаем над сокращением времени, затрачиваемого на запуск редактора, чтобы улучшить время запуска и помочь вам оставаться в потоке. Сегодня при подключении целевого устройства к редактору могут возникать сбои в работе, такие как отключение или невозможность восстановления. Мы работаем над тем, чтобы сделать соединения редактора с мобильными платформами более надежными и производительными в выпуске 2023.1.
Кроме того, мы хотим сделать так, чтобы вы могли более эффективно выявлять узкие места с помощью Profiler и знать, что делать дальше, если вы их заметили. Наша цель - быстро направить вас в те области оптимизации, которые дадут наибольший прирост производительности.
Мы также собираемся добавить информацию о памяти в зависимости от устройства, для которого вы создаете продукт, чтобы вы могли получить прирост производительности в зависимости от платформы. Эта работа находится на ранней стадии, и мы активно ждем ваших отзывов об этой новой функции, которые вы можете оставить на нашей странице с дорожной картой.
Опыт работы с набором инструментов профилирования Unity - один из самых полезных навыков, которые вы можете добавить в свой набор инструментов для разработки игр. Именно поэтому мы работаем над созданием более подробного контента о лучших практиках, чтобы помочь вам получить максимальную отдачу от наших инструментов.
Несколько моих коллег недавно составили наше самое подробное на сегодняшний день руководство по профилированию в Unity в сотрудничестве с инженерами-экспертами из команды Unity Integrated Success и экспертами.
Я также предлагаю вам загрузить эти дополнительные электронные книги, которые предлагают обширные передовые методы оптимизации для конкретных платформ:
- Оптимизируйте производительность мобильных игр
- Оптимизируйте производительность игр для консолей и ПК
Еще одна удобная ссылка - эта блок-схема, в которой представлен рекомендуемый подход к выявлению узких мест в вашем проекте.

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

Моя команда прилагает все усилия, чтобы предложить вам решения, необходимые для самых амбициозных проектов, и мы всегда стремимся понять, как мы можем помочь вам лучше.
Следите за обновлениями на странице нашей публичной дорожной карты. Это также лучшее место для того, чтобы поделиться отзывами непосредственно с командой разработчиков.
Следите за нашим следующим обновлением Games Focus, в котором мы расскажем о том, что делает Unity для того, чтобы вы могли использовать в своих играх больше платформ и форм-факторов. И, как всегда, делитесь с нами своими отзывами на форумах.
