УМЕНЬШИ ВЕС СВОЕЙ ИГРЫ! Оптимизация веса игры Unity. Как уменьшить вес игры на Unity. Ч.1
Vložit
- čas přidán 28. 06. 2024
- 📝Всем шарп! Сегодня я расскажу о лучших практиках оптимизации веса игры в Unity. Я отобрал самые крутые советы, которые дают наибольший буст для веса итогового билда игры и при этом их довольно просто соблюдать. Разберем как сами практики, так и нюансы, о которых вы могли не знать. Вопрос оптимизации веса игры - крайне важная вещь, ведь от веса итогового билда напрямую зависит то, будет ли пользователь играть в ваш проект или нет, т.к. чем дольше он грузит игру, тем меньше шанс, что он дождется окончания и запустит ее) На самом деле у меня накопилось оооочень много советов, поэтому я разделил видос на две части, так что подписывайтесь, чтобы не пропустить следующую!) В этой займемся оптимизацией текстур и звуков в игре - будет очень полезно!
⚡️⚡️⚡️ Полезные ссылки ⚡️⚡️⚡️
🔎 t.me/yakovlev_advanced_bot - бот с информацией о вебинаре и подарками для обучения
🔎 yakovlevgamedev.ru - курс по архитектуре игр в Unity
🔎 t.me/yakovlev_gamedev - ссылка на мой telegram канал
🕒Тайм-коды:
➜ 00:00 - Вступление
➜ 00:32 - Как понять что оптимизировать?
➜ 01:38 - Оптимизация текстур. Правильное сжатие
➜ 02:39 - Лайфхаки при оптимизации текстур
➜ 04:08 - Особое мероприятие для всех подписчиков
➜ 05:19 - Дополнительные настройки сжатия
➜ 05:57 - Создавай UI правильно
➜ 08:21 - Что делать с градиентами?
➜ 09:37 - Одна текстура для всех моделей:)
➜ 10:29 - Оптимизация звуков - лучшие практики
➜ 12:19 - Заключение:)
🔥🔥🔥 На этом канале вы найдете множество уроков по Unity и C#, а так же различных видео на тему разработки игр, так что не стесняйтесь, заглядывайте на канал и вы обязательно найдете что-то по душе!🔥🔥🔥
#Unity#ЯковлевИлья#оптимизация#весигры
⚡⚡⚡ Полезные ссылки ⚡⚡⚡
🔎 t.me/yakovlev_advanced_bot - бот с информацией о вебинаре и подарками для обучения
🔎 yakovlevgamedev.ru - курс по архитектуре игр в Unity
🔎 t.me/yakovlev_gamedev - ссылка на мой telegram канал
А как поставить больше 1 лайка, а то вторую часть уже охота)
@@skryidoov3951 С двух аккаунтов:)
@@-it394 О точно!
@@-it394Приветствую есть вопрос. Регистрация на яндекс маркете как физ лицо для продажи инди продуктов, сейчас как обстоит дело с этим? Требуют фото с паспортом как в средние века или все цивильнее стало?
Нужно БОЛЬШЕ, БОЛЬШЕ ТАКОГО КОНТЕНТА, СЛИШКОМ МАЛО! ИЛЬЯ ГОНИ НОВУЮ ПАРТИЮ ВИДОСИКОВ. Ребят знаю многим обычно лень, но пишите комментарии и ставьте лайки, помогите продвигать канал.
Крайне полезный ролик. Попал в точку)
Ожидаю вторую часть
Ты даже не посмотрел
Как же вовремя вышел этот видос)
Очень полезный ролик, редко встретишь настолько годные гайды, да ещё и с такой хорошей подачей
Правило POT для оптимизации довольно условно. В плане того, что не обязательно размер картинки должен быть степенью двойки.
Можете сами проверить:
-картинка подходящая под "POT" размером 128х128 будет весить 16кб (чисто примерно).
-картинка нарушающее правило размером 126х126 NPOT = 64кб. т.е. хоть картинка и меньше размером, но весит оно в 4 раза больше. Что ужасно!
Однако:
-картинка 132х132 - так же будет иметь аббревиатуру NPOT, но ее размер будет 17кб. И в Unity оно будет восприниматься движком именно как Pot (в плане оптимизации), а не как npot, даже не смотря на надпись. :D
Почему? :))
Потому, что юнити не важно, будет ли картинка степенью двойки. Юнити важно, чтобы стороны картинки делились нацело на 4.
Просто в эдиторе разрабы юнити схалтурили :)) Им лень добавлять новые аббревиатуры... менять устоявшиеся определения. Даже если они не совсем актуальны.
К чему это я?.. Просто иногда тебе можно сделать 1 картинку 768х768, чем пихать ее в атлас или растягивать на 1024х1024 ради надписи pot. При этом она и весить будет значительно меньше, да и атласы из этих картинок так же будут попадать под это правило))
Особенно если не хочется заморачиваться с сжатием и пр.
На самом деле все аббревиатуры указаны. Если ширина и высота текстуры делится на 4 (DXT1/BC1), то это совсем другой формат компрессии, нежели POT (ETC1 или ETC2, не помню). Картинка все еще NPOT, даже если скомпрессировалась в другом формате. Но замечание хорошее, иногда доводить до POT текстуры выходит дороже чем довести текстуру до делимости на 4 :)
Спасибо! Точно сказал про "сражаемся за каждый байт"
🤗 Годнота😁
Имбааа, крайне годно, глоток качественного контента. Нужно больше.
Ждемс ледующую частИ.
Видос пушка!
Спасибо за интересный совет с возможность создавать круглые спрайты прямо в Юнити! (лайк + подписка)
Было интересно, спасибо)
Имба хочу продолжение ))
Наконец то 😊🎉
Советую купить Build Report Tool с ассет стора, визуализирует и позволяет удобно сразу находить самые большие файлы в и вне билда.
Больше видео по оптимизации, это довольно редкий контент!
Интересное видео! Мне понравился совет с атласом и POT, не знал, что так работает. Интересно, как это достигается с программной точки зрения.
Если уже был на курсе, то получится выиграть доступ ещё раз?) Уж очень хочется повторить 😅
Про сжатие текстур до байтов огромнейшее спасибо просто. Про правило сжатия ни разу не слышал, но при этом постоянно делаю спрайты кратные 2
Не тех работников юнитеки всё нанимают)
Спасибо!
Очень годно! Было бы интересно узнать про Addressables, как в их используете в проектах, бест практиклс) Так же про что нибудь более низкоуровневое было бы интересно послушать, аля замена компилятора)
Не нужно бежать переделывать все звуки в ogg так как юнити переделывает аудио в wav, чтобы применить компрессию. Если у вас есть длинные аудио, то лучше сначала подумать и выбрать между весом билда и скоростью загрузки игры\оптимизаций
Разве? На уровне билда он вообще все звуки в FSB упаковывает.
@@hopperlopip Я перепроверил инфу, действительно, немного неправильно помнил, но в целом смысл тот же - импортировать в wav, вот текст из статьи:
При импорте файлов в Unity они всегда должны быть в несжатом формате, например в WAVE (.wav) или AIFF (.aiff). Многие сжатые форматы являются форматами с потерями, то есть при их кодировании информация теряется. Если импортировать в Unity сжатый файл, например MP3 или Vorbis, то Unity сначала декодирует его в несжатый формат, а затем повторно закодирует в выбранный вами формат, даже если этот тот же формат, с которого вы начинали. Это может добавлять новые артефакты сжатия, что в общем случае нежелательно.
Отличный гайд, как его мне не хватало пару месяцев назад. Не знаю, может у меня такой глюк, но бывает, что при создании повторного билда не создаётся новый файл с результатами билда. И приходится выходить из Юньки.
Будут ролики про ECS? Было бы интересно посмотреть
кайф!
Покланяюсь и подписываюсь
Очень Крутой канал надеюсь ты не остановишься!
Ребят не ленитесь пишите комментарии!
Очень полезно, спасибо большое!) А вот что насчет fps на андроидах?
Вот мой пример: Сделал счетчик fps для своей игрушки, посмотрев на stackoverflow. Включаю билд на андроиде, а он показывает не больше 30 кадров, иногда даже тоже показывает, хотя проект маленький и ничего не должно нагружать. А когда смотрю частоту кадров в самой юньке на пк, то там все отлично показывает. Я так понимаю надо как-то настраивать отдельно для андроида, чтобы частота кадров была больше. Такое чувство, что что-то ограничивает и не даёт больше 29-30 кадров. Или 30 это максимум, что можно сделать для андроида?
Хотелось бы, чтобы все было хотя бы в 60 кадрах.
Спасибо за такие познавательные ролики!)
Спасибо:)
По поводу телефона:
Фпс лочится на 30 по умолчанию.
Попробуй прописать на старте что - то вроде этого:
QualitySettings.vSyncCount = 0;
Application.targetFrameRate = 60;
Тут отключается вертикалка и фпс на 60 целевой выставляется
@@-it394 Прописывал и ничего не менялось. Все так же 30 кадров было.
Спасибо за ответ!
@@user-ov6jc2dx5y Попробуй чистый проект собрать и этими строчками прописанными и протестить на телефоне
Для андроида 60 фпс предел и то такая возможность не во всех телефонах вроде работает. А по умолчанию 30.
@@user-ov6jc2dx5y это в первую очередь зависит от телефона. Бюджетный телефон с частотой экрана 30, не может выдавать 60 кадров! На хороших телефонах с 120, можно разлачивать через Application.targetFrameRate, все будет ок
Спасибо
7:23 Достаточно просто не указывать спрайт в компоненте image, и не нужен спрайт 1х1 пиксель.
Ураааа🎉🎉🎉🎉
Спасибо за труд. Такой вопрос: в Build Report есть такое чудо Other Assets. Занимает 20%. Что это такое и можно ли это сократить. Заранее спасибо за ответ
Очень рад новости о мероприятие 6-го апреля! Но возможности прийти не будет в связи с большой разницей во времени... Подскажите, останется ли это мероприятие в записи?
Думаю в течении нескольких дней запись останется:)
@@-it394, рад слышать)
Привет! Подскажи пожалуйста, уровень твоих знаний - это сеньер?
Правило POT обязательно только для некоторых вариантов компрессий. Есть хорошие, проверенные варианты сжатия, которые принимают NPOT текстуры (например ETC2 для андроид и очень крутой ASTC для iOS). Либо не использовать сжатие вообще, но и вес соответствующим будет. Если не ошибаюсь, то POT текстуры быстрее обрабатываются GPU
Кстати на счет шейдеров:
Юнити меня бесит в этом плане :D Если проект под URP, 80% гайдов и пр. материала по шейдерам можно выкидывать, в зависимости от версии движка.
Пытался, помню, сделать эффект мокрого стекла для панельки UI. Чтобы когда игрок открывал настройки звука, в приложении, игра красиво "оттенялсь" и блюрилась ЗА настройками.
Убил неделю и для конкретного проекта ничего сделать не смог. Пытался и шейдерами сделать, и постэффектами - нифига. Мучил ChatGPT и его аналоги :D глухо...
т.е. открываю новый проект, чистый, на др. версии движка - получается. А в готовом проекте - нет. А менять настройки, профили и пр. я в нем не могу, т.к. проект чужой. Да и, если честно, на знаю, что именно надо менять, чтоб все заработало... :"(
Правило POT необязательно, как я понимаю. Так размер текстурки должен делиться на 4 и необязательно быть POT
Может кто поможет. Вот в атласы загнал спрайты. Атлас сам меньше весит, но в нем же ссылки на эти спрайты все равно есть. Почему будет меньше весить тогда?
У тебя в эдитор логе куча больших текстур от URP Post Processing (grain), в итоге ничего про это не сказал
Интересно хватит ли 1,5Гб на системном диске для установки Unity 2022.3 на SSD... Интересно какая там версия C#
1,5 гб не хватит, это уж точно.
@@quane209 2020.0.f1 установил, но версия 202x.3 позволяет перенести глобальный кэш юнити с системного диска на любой другой. А занимает этот кэш, не мало места (несколько гигов).
У меня вопрос есть по instantiate, разница между instantiate(gameobject) и instantiate(resources.Load), на сколько знаю это очень разное под капотом
Ну сам метод создания один и тот же, но в первом случае ты префаб сразу по ссылке берешь, а во втором ты префаб подгружаешь из ресурсов
Первое просто создает еще один экземпляр указанного объекта, а второе тоже самое, только он этот объект загружает из папки ассетов Resources
@@-it394 Это всё понятно, это база, но мне интересно как это работает на более низком уровне, дело в том что на работе мой коллега рассказывал что создание экземпляра когда у тебя он хранится в инспекторе - это одно и там используется вычислительная память.
А когда ты подгружаешь его через Resources - это уже загрузка с жесткого диска.
Не знаю так ли это но профайлер показывает более благоприятные показания при загрузке через Resources.
Ведь есть же разница когда ты указываешь камере RenderTexture и когда ты её подгружаешь из ресурсов, там прям хорошая разница в оптимизации@@-it394
Контент нормальный, но надо отучиться мельтешить мышкой.
И в куске про NPOT у слитков компрессия была разная.
+
Б з р (5 символов)
(Благодарю за ролик 18 символов)
18÷5= 3.6 оптимизация
😂😂😂😂😂😂😂😂
Аахахахах:)
4:32 это же не первоапрельская шутка?
Нет:)
250÷50= 50 МБ
Бзр (3 символа)
18÷3= 6 эффективности
У тебя эффективность = 5 а у меня 6. 😂😂😂😂😂. Я написал новый комментарий и оптемизировал его. Я победил 🤣🤣🤣🤣🤣. 🎖️🎖️🎖️🎖️🎖️ )))))
Кмнт дл прдвжн
Цена за коммисию
Сверхполезное видео. Вторую точно надо делать.