УМЕНЬШИ ВЕС СВОЕЙ ИГРЫ! Оптимизация веса игры 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#ЯковлевИлья#оптимизация#весигры

Комментарии • 72

  • @-it394
    @-it394  2 месяца назад +1

    ⚡⚡⚡ Полезные ссылки ⚡⚡⚡
    🔎 t.me/yakovlev_advanced_bot - бот с информацией о вебинаре и подарками для обучения
    🔎 yakovlevgamedev.ru - курс по архитектуре игр в Unity
    🔎 t.me/yakovlev_gamedev - ссылка на мой telegram канал

    • @skryidoov3951
      @skryidoov3951 2 месяца назад

      А как поставить больше 1 лайка, а то вторую часть уже охота)

    • @-it394
      @-it394  2 месяца назад

      @@skryidoov3951 С двух аккаунтов:)

    • @skryidoov3951
      @skryidoov3951 2 месяца назад

      @@-it394 О точно!

    • @playmarket8605
      @playmarket8605 2 месяца назад

      ​@@-it394Приветствую есть вопрос. Регистрация на яндекс маркете как физ лицо для продажи инди продуктов, сейчас как обстоит дело с этим? Требуют фото с паспортом как в средние века или все цивильнее стало?

  • @Speed-Run-Facts
    @Speed-Run-Facts 2 месяца назад +8

    Нужно БОЛЬШЕ, БОЛЬШЕ ТАКОГО КОНТЕНТА, СЛИШКОМ МАЛО! ИЛЬЯ ГОНИ НОВУЮ ПАРТИЮ ВИДОСИКОВ. Ребят знаю многим обычно лень, но пишите комментарии и ставьте лайки, помогите продвигать канал.

  • @Lokich
    @Lokich 2 месяца назад +20

    Крайне полезный ролик. Попал в точку)
    Ожидаю вторую часть

    • @user-tq3cw2mm1u
      @user-tq3cw2mm1u 2 месяца назад

      Ты даже не посмотрел

    • @alfamodik4917
      @alfamodik4917 2 месяца назад

      Как же вовремя вышел этот видос)

  • @Some_kind_of_something
    @Some_kind_of_something 2 месяца назад +6

    Очень полезный ролик, редко встретишь настолько годные гайды, да ещё и с такой хорошей подачей

  • @Lucio11a
    @Lucio11a 2 месяца назад +7

    Правило 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. При этом она и весить будет значительно меньше, да и атласы из этих картинок так же будут попадать под это правило))
    Особенно если не хочется заморачиваться с сжатием и пр.

    • @user-qu5jw6ds1i
      @user-qu5jw6ds1i 2 месяца назад

      На самом деле все аббревиатуры указаны. Если ширина и высота текстуры делится на 4 (DXT1/BC1), то это совсем другой формат компрессии, нежели POT (ETC1 или ETC2, не помню). Картинка все еще NPOT, даже если скомпрессировалась в другом формате. Но замечание хорошее, иногда доводить до POT текстуры выходит дороже чем довести текстуру до делимости на 4 :)

  • @user-mv4qh2jt7d
    @user-mv4qh2jt7d Месяц назад +1

    Спасибо! Точно сказал про "сражаемся за каждый байт"

  • @rickloyd8208
    @rickloyd8208 2 месяца назад +1

    Спасибо за интересный совет с возможность создавать круглые спрайты прямо в Юнити! (лайк + подписка)

  • @KollegaTV13
    @KollegaTV13 2 месяца назад +3

    🤗 Годнота😁

  • @titanovsky
    @titanovsky 2 месяца назад +2

    Было интересно, спасибо)

  • @MRSHERMAN-id4fx
    @MRSHERMAN-id4fx 2 месяца назад +6

    Имбааа, крайне годно, глоток качественного контента. Нужно больше.
    Ждемс ледующую частИ.

  • @user-fw4zu1kd2z
    @user-fw4zu1kd2z 2 месяца назад +2

    Имба хочу продолжение ))

  • @vvvfff400
    @vvvfff400 2 месяца назад +1

    Видос пушка!

  • @praisethesun2612
    @praisethesun2612 10 дней назад

    Больше видео по оптимизации, это довольно редкий контент!

  • @Tulopex
    @Tulopex 2 месяца назад +2

    Спасибо!

  • @rox.3346
    @rox.3346 2 месяца назад +3

    Советую купить Build Report Tool с ассет стора, визуализирует и позволяет удобно сразу находить самые большие файлы в и вне билда.

  • @TreeHundredBucks
    @TreeHundredBucks 2 месяца назад

    Наконец то 😊🎉

  • @nobice1
    @nobice1 2 месяца назад +1

    Про сжатие текстур до байтов огромнейшее спасибо просто. Про правило сжатия ни разу не слышал, но при этом постоянно делаю спрайты кратные 2
    Не тех работников юнитеки всё нанимают)

  • @Vorono4ka
    @Vorono4ka 2 месяца назад

    Интересное видео! Мне понравился совет с атласом и POT, не знал, что так работает. Интересно, как это достигается с программной точки зрения.
    Если уже был на курсе, то получится выиграть доступ ещё раз?) Уж очень хочется повторить 😅

  • @AlexSantrum
    @AlexSantrum 2 месяца назад

    кайф!

  • @danya2326
    @danya2326 2 месяца назад +5

    Очень годно! Было бы интересно узнать про Addressables, как в их используете в проектах, бест практиклс) Так же про что нибудь более низкоуровневое было бы интересно послушать, аля замена компилятора)

  • @laxlai_-_6406
    @laxlai_-_6406 2 месяца назад

    Спасибо

  • @rubyapps4120
    @rubyapps4120 Месяц назад

    Будут ролики про ECS? Было бы интересно посмотреть

  • @LexaSt86
    @LexaSt86 2 месяца назад +1

    Отличный гайд, как его мне не хватало пару месяцев назад. Не знаю, может у меня такой глюк, но бывает, что при создании повторного билда не создаётся новый файл с результатами билда. И приходится выходить из Юньки.

  • @user-ur5gj1xe8n
    @user-ur5gj1xe8n 2 месяца назад

    Покланяюсь и подписываюсь

  • @theRealArtyomkar
    @theRealArtyomkar 2 месяца назад +5

    Не нужно бежать переделывать все звуки в ogg так как юнити переделывает аудио в wav, чтобы применить компрессию. Если у вас есть длинные аудио, то лучше сначала подумать и выбрать между весом билда и скоростью загрузки игры\оптимизаций

    • @hopperlopip
      @hopperlopip 2 месяца назад

      Разве? На уровне билда он вообще все звуки в FSB упаковывает.

    • @theRealArtyomkar
      @theRealArtyomkar 2 месяца назад +2

      @@hopperlopip Я перепроверил инфу, действительно, немного неправильно помнил, но в целом смысл тот же - импортировать в wav, вот текст из статьи:
      При импорте файлов в Unity они всегда должны быть в несжатом формате, например в WAVE (.wav) или AIFF (.aiff). Многие сжатые форматы являются форматами с потерями, то есть при их кодировании информация теряется. Если импортировать в Unity сжатый файл, например MP3 или Vorbis, то Unity сначала декодирует его в несжатый формат, а затем повторно закодирует в выбранный вами формат, даже если этот тот же формат, с которого вы начинали. Это может добавлять новые артефакты сжатия, что в общем случае нежелательно.

  • @nekto8585
    @nekto8585 2 месяца назад

    Очень Крутой канал надеюсь ты не остановишься!
    Ребят не ленитесь пишите комментарии!

  • @user-cz7ts2zs2d
    @user-cz7ts2zs2d 22 дня назад

    7:23 Достаточно просто не указывать спрайт в компоненте image, и не нужен спрайт 1х1 пиксель.

  • @yusupab3377
    @yusupab3377 2 месяца назад

    Ураааа🎉🎉🎉🎉

  • @TheFenix717
    @TheFenix717 Месяц назад

    Привет! Подскажи пожалуйста, уровень твоих знаний - это сеньер?

  • @urgodhead
    @urgodhead 2 месяца назад

    Правило POT обязательно только для некоторых вариантов компрессий. Есть хорошие, проверенные варианты сжатия, которые принимают NPOT текстуры (например ETC2 для андроид и очень крутой ASTC для iOS). Либо не использовать сжатие вообще, но и вес соответствующим будет. Если не ошибаюсь, то POT текстуры быстрее обрабатываются GPU

  • @user-bl4te2kg8v
    @user-bl4te2kg8v 22 дня назад

    Спасибо за труд. Такой вопрос: в Build Report есть такое чудо Other Assets. Занимает 20%. Что это такое и можно ли это сократить. Заранее спасибо за ответ

  • @user-ov6jc2dx5y
    @user-ov6jc2dx5y 2 месяца назад +3

    Очень полезно, спасибо большое!) А вот что насчет fps на андроидах?
    Вот мой пример: Сделал счетчик fps для своей игрушки, посмотрев на stackoverflow. Включаю билд на андроиде, а он показывает не больше 30 кадров, иногда даже тоже показывает, хотя проект маленький и ничего не должно нагружать. А когда смотрю частоту кадров в самой юньке на пк, то там все отлично показывает. Я так понимаю надо как-то настраивать отдельно для андроида, чтобы частота кадров была больше. Такое чувство, что что-то ограничивает и не даёт больше 29-30 кадров. Или 30 это максимум, что можно сделать для андроида?
    Хотелось бы, чтобы все было хотя бы в 60 кадрах.
    Спасибо за такие познавательные ролики!)

    • @-it394
      @-it394  2 месяца назад +2

      Спасибо:)
      По поводу телефона:
      Фпс лочится на 30 по умолчанию.
      Попробуй прописать на старте что - то вроде этого:
      QualitySettings.vSyncCount = 0;
      Application.targetFrameRate = 60;
      Тут отключается вертикалка и фпс на 60 целевой выставляется

    • @user-ov6jc2dx5y
      @user-ov6jc2dx5y 2 месяца назад

      @@-it394 Прописывал и ничего не менялось. Все так же 30 кадров было.
      Спасибо за ответ!

    • @-it394
      @-it394  2 месяца назад +2

      @@user-ov6jc2dx5y Попробуй чистый проект собрать и этими строчками прописанными и протестить на телефоне

    • @playmarket8605
      @playmarket8605 2 месяца назад +1

      Для андроида 60 фпс предел и то такая возможность не во всех телефонах вроде работает. А по умолчанию 30.

    • @Bald_Panther
      @Bald_Panther 2 месяца назад

      @@user-ov6jc2dx5y это в первую очередь зависит от телефона. Бюджетный телефон с частотой экрана 30, не может выдавать 60 кадров! На хороших телефонах с 120, можно разлачивать через Application.targetFrameRate, все будет ок

  • @bob3ik
    @bob3ik 2 месяца назад +1

    Очень рад новости о мероприятие 6-го апреля! Но возможности прийти не будет в связи с большой разницей во времени... Подскажите, останется ли это мероприятие в записи?

    • @-it394
      @-it394  2 месяца назад +1

      Думаю в течении нескольких дней запись останется:)

    • @bob3ik
      @bob3ik 2 месяца назад

      @@-it394, рад слышать)

  • @Lucio11a
    @Lucio11a 2 месяца назад

    Кстати на счет шейдеров:
    Юнити меня бесит в этом плане :D Если проект под URP, 80% гайдов и пр. материала по шейдерам можно выкидывать, в зависимости от версии движка.
    Пытался, помню, сделать эффект мокрого стекла для панельки UI. Чтобы когда игрок открывал настройки звука, в приложении, игра красиво "оттенялсь" и блюрилась ЗА настройками.
    Убил неделю и для конкретного проекта ничего сделать не смог. Пытался и шейдерами сделать, и постэффектами - нифига. Мучил ChatGPT и его аналоги :D глухо...
    т.е. открываю новый проект, чистый, на др. версии движка - получается. А в готовом проекте - нет. А менять настройки, профили и пр. я в нем не могу, т.к. проект чужой. Да и, если честно, на знаю, что именно надо менять, чтоб все заработало... :"(

  • @mikhailgorokhov3255
    @mikhailgorokhov3255 2 месяца назад

    Может кто поможет. Вот в атласы загнал спрайты. Атлас сам меньше весит, но в нем же ссылки на эти спрайты все равно есть. Почему будет меньше весить тогда?

  • @FIGHTERSANOYK
    @FIGHTERSANOYK 2 месяца назад

    Правило POT необязательно, как я понимаю. Так размер текстурки должен делиться на 4 и необязательно быть POT

  • @kelafac6261
    @kelafac6261 2 месяца назад

    У меня вопрос есть по instantiate, разница между instantiate(gameobject) и instantiate(resources.Load), на сколько знаю это очень разное под капотом

    • @-it394
      @-it394  2 месяца назад +1

      Ну сам метод создания один и тот же, но в первом случае ты префаб сразу по ссылке берешь, а во втором ты префаб подгружаешь из ресурсов

    • @user-pc4ky5yl1f
      @user-pc4ky5yl1f 2 месяца назад

      Первое просто создает еще один экземпляр указанного объекта, а второе тоже самое, только он этот объект загружает из папки ассетов Resources

    • @kelafac6261
      @kelafac6261 2 месяца назад

      @@-it394 Это всё понятно, это база, но мне интересно как это работает на более низком уровне, дело в том что на работе мой коллега рассказывал что создание экземпляра когда у тебя он хранится в инспекторе - это одно и там используется вычислительная память.
      А когда ты подгружаешь его через Resources - это уже загрузка с жесткого диска.
      Не знаю так ли это но профайлер показывает более благоприятные показания при загрузке через Resources.

    • @kelafac6261
      @kelafac6261 2 месяца назад

      Ведь есть же разница когда ты указываешь камере RenderTexture и когда ты её подгружаешь из ресурсов, там прям хорошая разница в оптимизации@@-it394

  • @playmarket8605
    @playmarket8605 2 месяца назад +1

    Интересно хватит ли 1,5Гб на системном диске для установки Unity 2022.3 на SSD... Интересно какая там версия C#

    • @quane209
      @quane209 2 месяца назад

      1,5 гб не хватит, это уж точно.

    • @playmarket8605
      @playmarket8605 2 месяца назад

      @@quane209 2020.0.f1 установил, но версия 202x.3 позволяет перенести глобальный кэш юнити с системного диска на любой другой. А занимает этот кэш, не мало места (несколько гигов).

  • @--.--
    @--.-- 2 месяца назад

    У тебя в эдитор логе куча больших текстур от URP Post Processing (grain), в итоге ничего про это не сказал

  • @krivodeling7925
    @krivodeling7925 2 месяца назад

    +

  • @Knuckles2761
    @Knuckles2761 2 месяца назад

    Контент нормальный, но надо отучиться мельтешить мышкой.
    И в куске про NPOT у слитков компрессия была разная.

  • @Sultan69996
    @Sultan69996 2 месяца назад +1

    Б з р (5 символов)
    (Благодарю за ролик 18 символов)
    18÷5= 3.6 оптимизация
    😂😂😂😂😂😂😂😂

    • @-it394
      @-it394  2 месяца назад

      Аахахахах:)

  • @Nikita-os6om
    @Nikita-os6om 2 месяца назад

    4:32 это же не первоапрельская шутка?

    • @-it394
      @-it394  2 месяца назад

      Нет:)

  • @dmitryzolkin7904
    @dmitryzolkin7904 2 месяца назад +1

    Кмнт дл прдвжн

    • @quane209
      @quane209 2 месяца назад

      Цена за коммисию

  • @Sultan69996
    @Sultan69996 2 месяца назад

    250÷50= 50 МБ
    Бзр (3 символа)
    18÷3= 6 эффективности
    У тебя эффективность = 5 а у меня 6. 😂😂😂😂😂. Я написал новый комментарий и оптемизировал его. Я победил 🤣🤣🤣🤣🤣. 🎖️🎖️🎖️🎖️🎖️ )))))

  • @MaksimBk
    @MaksimBk 2 месяца назад

    Сверхполезное видео. Вторую точно надо делать.