Руководство по оптимизации памяти в Unity 6
https://habr.com/ru/companies/otus/articles/959150/
В статье речь идёт об управлении памятью в Unity: рассматриваются типы памяти (нативная, управляемая, память GPU и др.), проблема фрагментации памяти, а также способы оптимизации — использование Memory Profiler для анализа снимков памяти, сжатие текстур, отключение ненужных функций при импорте мешей и анимаций, управление вариантами шейдеров; кроме того, затрагиваются утечки памяти и методы их обнаружения с помощью Memory Profiler.
Классное руководство. Допустим на моем опыте самая частая проблема, и топочему в проектах сцены грузятся тысячелетие, это незнание того, как Unity кладет ресурсы в память. Допустим вы решили сделать небольшой веб проект. У вас есть какие-то спрайты, меши, не так важно. В общем ассеты. Скажем на примере системы стилей. Частый кейс в геймдеве с точки зрения монетизации когда-то был (да может и есть) вип аккаунты. И часто скины персонажей или целого интерфейса отличаются для таких пользователей. Вы сделали ScriptableObject и сохранили в нем ссылки на ассеты, а ссылку на скриптабл обжект положили в мейн сцену. В память пойдут сразу оба скина. Поэтому для грамотного управления ресурсами удобнее ленивая инициализация ресурсов по запросу. Так проще управлять лайфтаймом, не ловить Out Of Memory эксепшн и так далее. Но из-за того что часто люди не понимают цикл загрузки ресурсов в память я вычищал такие ссылки в проектах.
Тут ещё важно понимать продуктовые метрики. Для меня в рекламе вообще критически важна оптимизация времени загрузки, но так же это очень важно в играх. Потому что это влияет на конверсию и удержание аудитории. В первую очередь на стоимость привлечения. Представим вы сделали крутую рекламу своей игры, но 20% аудитории отваливается из-за того что игра грузится слишком долго (в современном мире очень легко потерять фокус внимания пользователя). По сути что это означает? Конверсия в инсталл снизилась на 20%, то есть стоимость привлечения пользователя увеличилась на 20%. А ведь в играх как в любом продукте по сути помимо капитальных расходов на разработку ключевой формулой явлется ALTV - CPA (среднее число денег которые приносит пользователь за время игры в игру - стоимость привлечения пользователя). Соответственно чтобы увеличивать прибыль вы хотите наращивать ALTV и снижать CPA. И если из-за мелкого косяка у вас идет рост расхода вы можете терять много денег, да и в целом бизнес модель может не биться.
А в рекламе воронка ещё сложнее. Игровая реклама бывает в сущности двух видов. Системы лояльности - нацеленные на ретеншн и удержание пользователя. И импульсные промо акции, где игровую механику можно воспринимать как инфоповод для увеличения интереса аудитории к бредну. И в обеих метрика времени загрузки играет огромную роль. Поэтому понимание таких нюансов и описанного в статье, вроде того чтобы отключать лишние вертексные параметры в моделях является важной частью разработки. Особенно в B2C продуктах. Базовая оптимизация и стабильность сборки влияет на удержание, а скажем оптимизация веса билда и скорости его загрузки на привлечение. Поэтому такие руководства полезно изучать и держать под рукой.
#новости
Post #1751
1.21K
- 🔥 15