УМЕНЬШИ ВЕС СВОЕЙ ИГРЫ! Оптимизация веса игры Unity. Как уменьшить вес игры на Unity. Ч.1
HTML-код
- Опубликовано: 19 июн 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 с ассет стора, визуализирует и позволяет удобно сразу находить самые большие файлы в и вне билда.
Наконец то 😊🎉
Про сжатие текстур до байтов огромнейшее спасибо просто. Про правило сжатия ни разу не слышал, но при этом постоянно делаю спрайты кратные 2
Не тех работников юнитеки всё нанимают)
Интересное видео! Мне понравился совет с атласом и POT, не знал, что так работает. Интересно, как это достигается с программной точки зрения.
Если уже был на курсе, то получится выиграть доступ ещё раз?) Уж очень хочется повторить 😅
кайф!
Очень годно! Было бы интересно узнать про Addressables, как в их используете в проектах, бест практиклс) Так же про что нибудь более низкоуровневое было бы интересно послушать, аля замена компилятора)
Спасибо
Будут ролики про ECS? Было бы интересно посмотреть
Отличный гайд, как его мне не хватало пару месяцев назад. Не знаю, может у меня такой глюк, но бывает, что при создании повторного билда не создаётся новый файл с результатами билда. И приходится выходить из Юньки.
Покланяюсь и подписываюсь
Не нужно бежать переделывать все звуки в ogg так как юнити переделывает аудио в wav, чтобы применить компрессию. Если у вас есть длинные аудио, то лучше сначала подумать и выбрать между весом билда и скоростью загрузки игры\оптимизаций
Разве? На уровне билда он вообще все звуки в FSB упаковывает.
@@hopperlopip Я перепроверил инфу, действительно, немного неправильно помнил, но в целом смысл тот же - импортировать в wav, вот текст из статьи:
При импорте файлов в Unity они всегда должны быть в несжатом формате, например в WAVE (.wav) или AIFF (.aiff). Многие сжатые форматы являются форматами с потерями, то есть при их кодировании информация теряется. Если импортировать в Unity сжатый файл, например MP3 или Vorbis, то Unity сначала декодирует его в несжатый формат, а затем повторно закодирует в выбранный вами формат, даже если этот тот же формат, с которого вы начинали. Это может добавлять новые артефакты сжатия, что в общем случае нежелательно.
Очень Крутой канал надеюсь ты не остановишься!
Ребят не ленитесь пишите комментарии!
7:23 Достаточно просто не указывать спрайт в компоненте image, и не нужен спрайт 1х1 пиксель.
Ураааа🎉🎉🎉🎉
Привет! Подскажи пожалуйста, уровень твоих знаний - это сеньер?
Правило POT обязательно только для некоторых вариантов компрессий. Есть хорошие, проверенные варианты сжатия, которые принимают NPOT текстуры (например ETC2 для андроид и очень крутой ASTC для iOS). Либо не использовать сжатие вообще, но и вес соответствующим будет. Если не ошибаюсь, то POT текстуры быстрее обрабатываются GPU
Спасибо за труд. Такой вопрос: в Build Report есть такое чудо Other Assets. Занимает 20%. Что это такое и можно ли это сократить. Заранее спасибо за ответ
Очень полезно, спасибо большое!) А вот что насчет 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, все будет ок
Очень рад новости о мероприятие 6-го апреля! Но возможности прийти не будет в связи с большой разницей во времени... Подскажите, останется ли это мероприятие в записи?
Думаю в течении нескольких дней запись останется:)
@@-it394, рад слышать)
Кстати на счет шейдеров:
Юнити меня бесит в этом плане :D Если проект под URP, 80% гайдов и пр. материала по шейдерам можно выкидывать, в зависимости от версии движка.
Пытался, помню, сделать эффект мокрого стекла для панельки UI. Чтобы когда игрок открывал настройки звука, в приложении, игра красиво "оттенялсь" и блюрилась ЗА настройками.
Убил неделю и для конкретного проекта ничего сделать не смог. Пытался и шейдерами сделать, и постэффектами - нифига. Мучил ChatGPT и его аналоги :D глухо...
т.е. открываю новый проект, чистый, на др. версии движка - получается. А в готовом проекте - нет. А менять настройки, профили и пр. я в нем не могу, т.к. проект чужой. Да и, если честно, на знаю, что именно надо менять, чтоб все заработало... :"(
Может кто поможет. Вот в атласы загнал спрайты. Атлас сам меньше весит, но в нем же ссылки на эти спрайты все равно есть. Почему будет меньше весить тогда?
Правило POT необязательно, как я понимаю. Так размер текстурки должен делиться на 4 и необязательно быть POT
У меня вопрос есть по instantiate, разница между instantiate(gameobject) и instantiate(resources.Load), на сколько знаю это очень разное под капотом
Ну сам метод создания один и тот же, но в первом случае ты префаб сразу по ссылке берешь, а во втором ты префаб подгружаешь из ресурсов
Первое просто создает еще один экземпляр указанного объекта, а второе тоже самое, только он этот объект загружает из папки ассетов Resources
@@-it394 Это всё понятно, это база, но мне интересно как это работает на более низком уровне, дело в том что на работе мой коллега рассказывал что создание экземпляра когда у тебя он хранится в инспекторе - это одно и там используется вычислительная память.
А когда ты подгружаешь его через Resources - это уже загрузка с жесткого диска.
Не знаю так ли это но профайлер показывает более благоприятные показания при загрузке через Resources.
Ведь есть же разница когда ты указываешь камере RenderTexture и когда ты её подгружаешь из ресурсов, там прям хорошая разница в оптимизации@@-it394
Интересно хватит ли 1,5Гб на системном диске для установки Unity 2022.3 на SSD... Интересно какая там версия C#
1,5 гб не хватит, это уж точно.
@@quane209 2020.0.f1 установил, но версия 202x.3 позволяет перенести глобальный кэш юнити с системного диска на любой другой. А занимает этот кэш, не мало места (несколько гигов).
У тебя в эдитор логе куча больших текстур от URP Post Processing (grain), в итоге ничего про это не сказал
+
Контент нормальный, но надо отучиться мельтешить мышкой.
И в куске про NPOT у слитков компрессия была разная.
Б з р (5 символов)
(Благодарю за ролик 18 символов)
18÷5= 3.6 оптимизация
😂😂😂😂😂😂😂😂
Аахахахах:)
4:32 это же не первоапрельская шутка?
Нет:)
Кмнт дл прдвжн
Цена за коммисию
250÷50= 50 МБ
Бзр (3 символа)
18÷3= 6 эффективности
У тебя эффективность = 5 а у меня 6. 😂😂😂😂😂. Я написал новый комментарий и оптемизировал его. Я победил 🤣🤣🤣🤣🤣. 🎖️🎖️🎖️🎖️🎖️ )))))
Сверхполезное видео. Вторую точно надо делать.