Unity 3D: идеи по оптимизации | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Алгоритмы и структуры данных Team Lead Архитектура и шаблоны проектирования Разработчик IoT C# Developer. Professional PostgreSQL Разработчик на Spring Framework
-5%
Flutter Mobile Developer NoSQL iOS Developer. Basic
-10%
C++ Developer. Basic C++ Developer. Professional Android Developer. Professional Microservice Architecture Unity Game Developer. Professional Базы данных Node.js Developer React.js Developer Специализация Java-разработчик
-25%
Web-разработчик на Python Framework Laravel Cloud Solution Architecture Vue.js разработчик Интенсив «Оптимизация в Java» Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив "Tarantool" PHP Developer. Basic
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK Administrator Linux. Professional Дизайн сетей ЦОД Разработчик IoT PostgreSQL Экспресс-курс "Версионирование и командная работа с помощью Git"
-30%
Microservice Architecture Highload Architect Специализация Administrator Linux
-25%
Network engineer Cloud Solution Architecture Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив «СУБД в высоконагруженных системах» Супер-интенсив "Tarantool" Network engineer. Basic
Корпоративные курсы
Безопасность веб-приложений IT-Recruiter Дизайн сетей ЦОД Компьютерное зрение Разработчик IoT Вебинар CERTIPORT Machine Learning. Professional
-6%
NoSQL Пентест. Практика тестирования на проникновение Java QA Engineer. Базовый курс Руководитель поддержки пользователей в IT
-8%
SRE практики и инструменты Cloud Solution Architecture Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Infrastructure as a code Супер-практикум по использованию и настройке GIT Промышленный ML на больших данных Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes» BPMN: Моделирование бизнес-процессов Основы Windows Server
Специализации Курсы в разработке Подготовительные курсы Подписка
+7 499 938-92-02

Unity 3D: идеи по оптимизации

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

Performance Profiler

Первое, о чем надо подумать, когда есть желание повысить производительность, — Unity Profiler. Такая функциональность доступна в Unity Pro и предоставляет разработчику возможность анализировать проблемные места.

maxresdefault-1801-efeb04.jpg

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

Для применения профайлера на мобильных устройствах, надо сделать билд в Developer mode. В документации Unity утверждается, что для получения возможности подключения к плееру, плеер надо запустить посредством опции Development Build, находящейся в диалоговом окне Build Settings.

Еще можно отметить флажок для автосоединения редактора и плеера. Профайлер покажет вам график использования CPU в процессе игры. Достаточно просто подключить мобильный девайс к машине для разработки и приступить к прохождению игры. Профайлер покажет вам все проблемы в режиме real-time. Он разобьет активности на Physics, GarbageCollector, Rendering, Scripts, VSync и прочие. Как известно, в мобильных играх проблемы с рендерингом бывают нередко. Порой, скачки производительности появляются и в скриптах при загрузке сцены, однако в этом нет ничего предосудительного. Некоторые скачки, как правило, связаны с физикой.

gpuprofiler_2_1-1801-91952a.jpg

Физика и ИИ

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

В следующий раз поговорим об оптимизации графики. Источник

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться