Профилирование и оптимизация производительности — сложная задача, которая больше похожа на искусство, чем на науку. Множество движущихся частей, которые должны быть идеально синхронизированы в игре, в сочетании со сложностью конкретной сцены могут затруднить понимание и выявление проблем. В ChromeOS многие инструменты разработаны с учетом чипсетов ARM. Ниже приведены несколько советов, которые помогут ускорить этот процесс.
При оптимизации производительности игры на ChromeOS следует помнить, что основные проблемы с производительностью характерны для всех устройств, и улучшения повлияют на производительность и время автономной работы для всех пользователей. ChromeOS, как правило, ориентирована на большие дисплеи и настольные устройства ввода, поэтому некоторые проблемы могут проявляться быстрее. Например, неэффективный алгоритм загрузки текстур может «хорошо работать» на высокопроизводительных мобильных устройствах, но не справляться с нагрузкой на Chromebook с 4K-дисплеем. Улучшение алгоритма улучшит игру на всех устройствах.
Если вы новичок в профилировании, хороший общий подход заключается в следующем:
- Определите, ограничены ли показатели производительности следующими факторами:
- Процессор
- GPU
- Другое: Ввод/Дисковый ввод/Сеть
- Постарайтесь выявить основную причину.
- Постарайтесь оптимизировать
- Повторить
В большинстве случаев игры будут демонстрировать либо «ограниченность процессором», либо «ограниченность видеокартой». Используя приведенные ниже советы и инструменты профилирования, попытайтесь определить, на что система тратит больше всего времени в каждом кадре. Например, если вычисление и загрузка вершин занимает много времени до начала рендеринга на видеокарте, ваша игра может быть ограничена процессором. В свою очередь, если вы используете большое количество детализированных фильтров на основе видеокарты, ваша игра, скорее всего, ограничена видеокартой. Помните, что многие мобильные телефоны и устройства ChromeOS не имеют дискретных видеокарт. В настольной игре, предполагающей высокую скорость работы фильтров на видеокарте, интегрированные видеокарты могут слишком долго рендерить каждую сцену.
Для получения более подробной информации о методах профилирования ознакомьтесь с руководством ARM по теме «Процесс оптимизации» .
Инструменты
Хотя, безусловно, можно самостоятельно определить «узкие места», наличие правильных инструментов упростит анализ производительности вашей игры и даст вам уверенность в том, что вы концентрируетесь на правильных вещах. Существует множество инструментов, но вот некоторые из программ, которые мы используем чаще всего.
Профайлер Android Studio
Самый простой способ начать профилирование любого Android-приложения — использовать встроенный профилировщик Android Studio . Вместо кнопки «Запустить» в Android Studio просто выберите «Профилирование», чтобы запустить приложение и получить информацию об использовании ЦП, памяти и сети в режиме реального времени. Простые трассировки ЦП могут стать быстрым способом выявить проблемные участки кода для анализа.
Этот инструмент не даёт реального представления об использовании графического процессора и о том, что происходит между синхронизацией кадров, поэтому, хотя он и полезен, его, вероятно, будет недостаточно для обеспечения максимальной производительности вашей игры.
Snapdragon Profiler
Поскольку поведение игр будет одинаковым на разных устройствах, один из хороших способов получить подробную информацию о производительности — использовать Snapdragon Profiler на телефоне с процессором Qualcomm ARM. Хотя это и не позволяет напрямую профилировать устройство ChromeOS, это даст вам информацию о том, на что игра тратит большую часть времени в каждом кадре, и позволит понять, какие именно вызовы GPU используются.
Например, если вы видите, что большая часть времени тратится на анизотропные фильтры графического процессора и это доминирует в работе, выполняемой в каждом кадре, вы, вероятно, сможете добиться значительного повышения производительности, изменив этот параметр.
Если вы видите, что время отклика графического процессора короткое и стабильное, но время отклика центрального процессора преобладает, из-за чего возникают проблемы с синхронизацией кадров, проверьте алгоритмы загрузки текстур/подготовки кадров.
Для получения более подробной информации см. официальную документацию по использованию .
ARM Mobile Studio
Еще один полезный профилировщик для ARM-устройств — ARM Mobile Studio . Некоторые разработчики могут предпочитать его Snapdragon Profiler, но его можно использовать аналогичным образом. См. официальную документацию по использованию .
Инспектор графического процессора Android
Android GPU Inspector — это новый инструмент, разработанный Google специально для повышения производительности игр с использованием OpenGL и Vulkan. В настоящее время он находится в стадии предварительного тестирования для разработчиков, и его настройка может потребовать некоторых усилий. Сейчас он работает лишь на ограниченном количестве устройств. В будущем он обещает стать одним из основных инструментов для профилирования графики. См. официальную документацию .
Обзор трассировки ARC
Существует также более универсальный инструмент — ARC Overview Tracing — который работает аналогично упомянутому выше инструменту ARC Graphics Tracing. Этот трассировщик предоставляет высокоуровневые метрики о производительности приложения и ChromeOS. Показания будут отображать частоту кадров приложения и самого Chrome, а также загрузку ЦП, загрузку графического процессора, энергопотребление и многое другое. Вы можете запускать инструмент несколько раз и видеть графики для каждого запуска, наложенные друг на друга с цветовой маркировкой для их различения. Каждая модель трассировки будет сохранена в папке «Загрузки» и может быть повторно импортирована для будущих сравнений. Для общих проверок работоспособности приложений ARC Overview Tracing — хорошее начало.
Для доступа к этому инструменту перейдите по адресу chrome://arc-overview-tracing в браузере ChromeOS.
Следующие шаги
Возможно, вы обнаружили какие-то узкие места, но не знаете, что с ними делать. Или вы их обнаружили и устранили, но не знаете, что делать дальше. Ниже мы собрали для вас список общих советов и ресурсов, специфичных для Android и его движка.
Общие советы
На портале для разработчиков Android можно найти множество полезных советов по повышению производительности вашего приложения. Там рассматриваются вопросы времени загрузки, использования многопоточности, обработки задержки ввода и многое другое.
Не забывайте проводить профилирование на ранних этапах и делать это часто, особенно если вы ориентируетесь на менее мощные машины или работаете с высокопроизводительной архитектурой. Отслеживание статистики производительности вашего приложения поможет вам определить, какие изменения привели к резкому снижению частоты кадров, а какие способствуют поддержанию плавной работы, к которой вы стремитесь.
Движок Unity
В дополнение к общей документации по Android , Unity предоставляет документацию, специфичную для Chrome OS, которая поможет вам создать высокопроизводительное приложение для ChromeOS, используя их движок. Ознакомьтесь с их документацией по ChromeOS, посвященной началу работы , вводу данных , отладке и сборке , включая создание сборок для архитектуры x86. Для получения информации о производительности см. раздел «Понимание оптимизации» и их курс по производительности и оптимизации .
Рекомендуем ознакомиться с руководством ARM по профилированию и оптимизации игр Unity , а также с рекомендациями по их использованию. Это поможет вам выполнить профилирование примера игры в Unity с помощью инструмента Streamline, входящего в состав ARM Mobile Studio .
Движок Unreal Engine
Компания Unreal Engine разработала собственные рекомендации по производительности , а также документацию с советами и рекомендациями , которые научат вас наилучшим образом использовать многие из параметров и настроек движка. Здесь вы найдете такие вещи, как советы по настройке уровня детализации, как максимально эффективно использовать освещение, пошаговые руководства по настройкам качества материалов и шейдеров, а также другие рекомендации.
Для получения дополнительной информации об оптимизации графики компания ARM подготовила руководство по оптимизации мобильных игр. Общие советы по оптимизации, а также специфические особенности графики Unreal Engine можно найти здесь.