Оптимизация игры в Unity от 100 до 2000 fps. Объединение объектов и свет /Как создать игру [Урок 87]

Поділитися
Вставка
  • Опубліковано 22 лис 2024

КОМЕНТАРІ •

  • @d1kiywolf
    @d1kiywolf 2 роки тому +8

    Огромнейшее спасибо! Делаю игрушку под андроид, со 130 батчей (и 300 фпс в эдиторе) получилось всего 20 (и под 500 фпс), как раз то, что надо!

  • @unidentifiedaccount9177
    @unidentifiedaccount9177 4 роки тому +10

    Юнити не увлекаюсь, но спасибо за видос, а ютубу за рекомендации

  • @KiZhuGames
    @KiZhuGames Рік тому

    Тема классная, есть еще вариант запекания анимаций в шейдер, тоже сейвит много

  • @skulfio5179
    @skulfio5179 3 роки тому +9

    Идея для видео: "Топ лучших ассетов для оптимизации игры из asset store"

  • @eTrutim
    @eTrutim 2 роки тому +5

    2:40 Можно юзануть ProBuilder, там выжелаешь объекты которые тебе нужно обьеденить в один, и нажать на Merge Object, ну а так видос полезный, спасибо.

    • @viknsagit
      @viknsagit 2 роки тому +1

      Только он коряво работает

  • @Andrei_Kozlov
    @Andrei_Kozlov 11 місяців тому

    Привет, бесконечная благодарность за то что делишься знаниями! Можешь еще записать туториал по настройке и оптимизации URP для мобильных 3D игр, цены бы не было а то толкового ничего нету. От создания до настройки 3 профилей: Low, Mid, High.

    • @igrodelsky
      @igrodelsky  11 місяців тому

      Здравствуй. Меня пока вполне устраивает встроенный рендеринг, так что в ближайшее время на URP или HDRP переходить не собираюсь. А соответственно и уроков по ним не будет.

  • @azncore5444
    @azncore5444 7 місяців тому

    Привет! Не знаю писал ли кто, но я хочу просто внести немного ясности для тех кто немного не в теме. Этот способ замечательный! Но например в фпс игре с большой локацией, к большому сожалению, такой метод не прокатит. Есть способ оптимизации - Occlusion Culling, рендерит то что в пределах видимости камеры игрока. Он тоже добавляет прирост к фпс, значительный. Но скомбинировать эти два метода не выйдет 😢. Не будет работать такой метод с вариантом для тех у кого фпс проект - потому что Occlusion Culling будет считать цельный меш - за 1 объект, и он будет рендериться весь, даже когда пиксель этого объекта попадет в зону видимости камеры игрока. Между этими двумя методами, occlusion как по мне, дает больший прирост фпс. Хотя я могу быть не прав! Если это так, то буду признателен за разъяснения. Пока писал, подумал, что на самом деле, можно и скомбинировать эти два метода. Например просто комбинируя определенные меши в один. Например, не всю карту в один меш, а в определенной комнате, все объекты что находятся в ней. Так карта будет работать за счет Occlusion Culling, а множество «пропов» статичных, будут как 1 объект. Хотя тут тоже, есть свои плюсы и минусы

    • @igrodelsky
      @igrodelsky  7 місяців тому

      Здравствуй. Способов оптимизации много. Одного универсального решения нет. Это всегда поиск компромиссов и индивидуальный подход. Что в одном случае даст прирост, то в другом может дать просадку. Нужно всё пробовать в каждом конкретном случае и находить наиболее оптимальные решения.

    • @azncore5444
      @azncore5444 7 місяців тому

      @@igrodelsky полностью согласен. Даже между occlusion и вашим решением в видео, уверен, есть золотая середина. Хорошее видео, спасибо.

  • @gamedevmobile
    @gamedevmobile 2 роки тому +1

    Кстати, появился Mesh Baker Free (Бесплатно). Кому надо качайте..

  • @Qqqhhgg
    @Qqqhhgg 3 роки тому +2

    Спасиб ! Как всегда польза! Как там успехи по VR Части? не разочаровался? я тоже планирую брать.

    • @igrodelsky
      @igrodelsky  3 роки тому +2

      Ковыряю виар потихоньку, пока отвлекают чужие проекты сильно. Но скоро планирую основательно приложиться.

  • @Vitia_Smesitel
    @Vitia_Smesitel 3 роки тому

    отдуши брат

  • @rdragon587
    @rdragon587 3 роки тому

    Thanks)

  • @Rueslan
    @Rueslan 9 місяців тому

    MeshCombiner совместим с occlusion culling?

    • @igrodelsky
      @igrodelsky  9 місяців тому

      Если понимать что к чему и правильно объединять и настраивать, то совместим. Во всём нужно знать меру.

    • @Rueslan
      @Rueslan 9 місяців тому

      @@igrodelsky в том то и дело что я не до конца понимаю работу рендеринга, к примеру сделаю я комбайном 1 большую модель, оклюжн сможет ее разбить на кластеры или он работает только с отдельными моделями?

    • @Evoker_
      @Evoker_ 2 місяці тому

      ​@@Rueslanнаверно ты понял но для тех кто прочитает этот вопрос дам ответ - оклюжн будет считать объединённые меши как один объект с кучей вершин и поэтому если объединить бездумно то это может даже ухудшить производительность, поскольку он в любом случае будет рендерить его полностью если виден хотя бы пиксель объекта, но можно объединять объекты группами которые почти всегда находятся вместе(например модель дома, на ней всегда будут видны окна если они есть), тогда это даст свой буст ФПС

  • @Nerilawer
    @Nerilawer 6 місяців тому

    как оставить колайдеры которые
    были? галочки тыкал как итог нчиего

  • @malitver
    @malitver 9 місяців тому

    здравствуйте Владимир такой вопрос, если я скачиваю платные ассеты с других источинках бесплатно то когда игра выложится на Стим как например то будут ли какие-то вопросы по поводу авторских прав или могут запросить чек на покупку данных ассетов?

    • @igrodelsky
      @igrodelsky  9 місяців тому

      Здравия. Воровать грешно.

    • @malitver
      @malitver 9 місяців тому

      @@igrodelsky я и не ворую, сам ассет уже нигде нету а на самом сайте где продавался был удален и есть только на посторонних

    • @igrodelsky
      @igrodelsky  9 місяців тому

      @@malitver Напиши название ассетов, которые негде купить.

    • @malitver
      @malitver 9 місяців тому

      @@igrodelsky TimeLight Cyricum

    • @igrodelsky
      @igrodelsky  9 місяців тому

      @@malitver Такого ассета не существует.

  • @Андрей-в7и6ь
    @Андрей-в7и6ь 3 роки тому +2

    2000 fps, круто! У меня пустая сцена идёт в 250-300 fps. Правда я на ноуте. А как у тебя такое значение получается? просто железо мощное?

    • @igrodelsky
      @igrodelsky  3 роки тому

      Мощность железа относительна, как и всё в этом мире. Конечно, чем мощнее комп, тем больше будет фпс в одной и той же сцене.

    • @Андрей-в7и6ь
      @Андрей-в7и6ь 3 роки тому +1

      @@igrodelsky спасибо за видосы, интересно, особенно новичку, как я)

  • @tasty9555
    @tasty9555 3 роки тому +1

    Но ведь тогда нельзя будет использовать occulusion culling

    • @igrodelsky
      @igrodelsky  3 роки тому

      Всё можно совмещать в том или ином виде. Для каждой сцены есть свои способы оптимизации.

  • @teroo1461
    @teroo1461 Рік тому

    А как это отключить ?

  • @OkMiracle
    @OkMiracle 11 місяців тому

    На 2D походу не работает. Нажимаю, ничего не происходит( Не подскажете?

    • @igrodelsky
      @igrodelsky  11 місяців тому

      С 2д не работаю.

    • @Evoker_
      @Evoker_ 2 місяці тому

      Ты уже наверно и игру закончил, но все равно дам ответ, в 2D другая система отрисовки работает, в 3D в юнити или других движках используются меши, про них и идет речь в видео, а в 2D мешей нету, есть только факт объекта и текстура(плюс скрипт если есть), поэтому ничего и не происходит, в случае с 2D лучше всего вместо объединения нескольких объектов, которые всегда отрисовываются одновременно просто объединить вручную текстуры и сделать единый объект, так же можно сделать атлас для оставшихся

  • @ХамиБуран
    @ХамиБуран Рік тому

    А получается если я хочу сделать твердые объекты,я просто ставлю на общий объединенный объект меш колайдер и все?

    • @igrodelsky
      @igrodelsky  Рік тому

      Не пробовал ставить на скомбайненные объекты общий меш-коллайдер. Если ставится и коллизия нормально работает, то так и делай. Только у меш-коллайдеров есть свои ограничения на кол-во полигонов. Посмотри в оф.справке сколько там написано.

  • @dyze8847
    @dyze8847 3 роки тому +1

    Подойдёт ли данный способ оптимизации для генерируемой сцены?

    • @igrodelsky
      @igrodelsky  3 роки тому +1

      Смотря что там и как генерируется.

    • @beshkekart3909
      @beshkekart3909 2 роки тому

      сгенерил, включил запёк, объединил. побежал дальше. Скорее всего в период обработки всего этого будет фриз, и вызывать надо будет это каждый раз через скрипт, а не стандартными методами юнити. Если кто знает способ получше, напишите

  • @rybinded
    @rybinded Рік тому

    Подскажите, а как объединить, например, деревья если я добавлял их на террейн кистью (инструментом террейна), а не вручною по одному? Это возможно? Просто если добавлять деревья кистью, то их не видно в иерархии сцены и нельзя сделать родительский объект чтоб накинуть на него скрипт. Буду очень благодарен за ответ.

    • @igrodelsky
      @igrodelsky  Рік тому

      Во встроенной системе ландшафта уже есть своя оптимизация травы и деревьев, которые в этой системе расставлены.

    • @rybinded
      @rybinded Рік тому

      @@igrodelsky Это да, но... Моделирую ситуацию. У вас на локации лес. Если вы делаете его из одного дерева (ставите рандомный размер и вращение), то проблем не будет. Такой лес будет потреблять всего лишь один вызов отрисовки (draw call). Но, если у вас лес из нескольких деревьев, то Юнити будет рендерить их слоями. То есть сначала самые последние деревья первого типа, потом деревья второго типа что стоят перед ними, потом опять деревья первого типа что стоят еще ближе к игроку и т.д. То есть, один вызов отрисовки леса (если дерево одно) может превратится в 50 если деревьев хотя би 2 и они намешаны по всему лесу.

    • @igrodelsky
      @igrodelsky  Рік тому +1

      @@rybinded Сделай один вариант через встроенный ландшафт, а другой аналогичный через ручную расстановку с объединением и сравни фпс. Не нужно забывать о том, что деревья, которые не попадают в камеру, не рендерятся. А если все деревья будут объединены в один меш, то по сути все полигоны всех деревьев будут рендериться сразу, даже если видно только 1 полигон из них. Это уже не говоря про оклюжн кулинг. Имеет же значение не только кол-во отрисовок, но и то, сколько одна отрисовка занимает времени.

  • @СофияЖеребцова-н5о

    а обьединение меша с помощью этого инструмента сбрасывает текущее запекание? Надо ли перепекать

    • @igrodelsky
      @igrodelsky  3 роки тому

      Да, это уже будет отдельный меш со своей развёрткой. И нужно не забыть поставить галку на генерацию развёртки для UV

    • @СофияЖеребцова-н5о
      @СофияЖеребцова-н5о 3 роки тому

      @@igrodelsky cпасибо за оперативный ответ и за ваши видео :)

  • @shapudan8469
    @shapudan8469 2 роки тому

    то есть просто легче сделать карту на блендере и её полностью всю перенести в юнити?

    • @igrodelsky
      @igrodelsky  2 роки тому +1

      Это зависит от локации и от личных предпочтений. Всё в этом вопросе индивидуально.

  • @MrUmnix
    @MrUmnix Рік тому

    Такой вопрос. Создаю пустую сцену URP. Запускаю на Android TV - получаю 4-5 fps. Если не URP, то положенные 30 FPS. Где что подкрутить? Вроде настройки по минимуму поставил.

    • @igrodelsky
      @igrodelsky  Рік тому

      Ни URP, ни HDRP не использую, так что не подскажу.

    • @rybinded
      @rybinded Рік тому

      Такая же проблема... Нашли ответ?

    • @igrodelsky
      @igrodelsky  Рік тому

      @@rybinded Ответ простой - использую стандартную систему рендеринга, а не это сырое говно.

    • @rybinded
      @rybinded Рік тому

      @@igrodelsky Я тоже не использую ни URP ни HDRP. Но иногда вижу видосы где авторы говорят что они дают бешеный прирост в ФПС. А у меня игра для мобильного... Поэтому время от времени смотрю в эту сторону, ставлю URP, вижу что на телефоне стало все еще хуже и забиваю на это дело еще на пару месяцев)))

    • @MrUmnix
      @MrUmnix Рік тому

      @@rybinded Привет! Не помню уже. Попробуйте Color Space в Gamma переключить.

  • @rareiridium77
    @rareiridium77 2 роки тому

    ещё можно использовать LOD'ы

    • @igrodelsky
      @igrodelsky  2 роки тому

      Да много чего ещё можно использовать, но урок о двух конкретных способах.

    • @rareiridium77
      @rareiridium77 2 роки тому

      @@igrodelsky мне ваш способ понравился.

  • @loxywe
    @loxywe Рік тому

    можно ли использовать combine meshes в реалтайме?

    • @loxywe
      @loxywe Рік тому

      во время игри?

    • @igrodelsky
      @igrodelsky  Рік тому

      Не пробовал. Ну проверить же не сложно самому.

  • @oper1525
    @oper1525 Рік тому

    Привет, делаю игрульку под андроид про тачки, решил комбайнить объекты в редакте префаба всё видно. Сохраняю, запускаю игру и машина прозрачная. Что делать?

    • @igrodelsky
      @igrodelsky  Рік тому

      Здравствуй. Ничего не понял.

    • @oper1525
      @oper1525 Рік тому

      @@igrodelsky у меня при комбинировании меш становится прозрачным

    • @oper1525
      @oper1525 Рік тому

      Как комбайнить так чтобы меш был виден?

    • @igrodelsky
      @igrodelsky  Рік тому

      @@oper1525 Посмотри внимательно урок. Видимо, что-то делаешь не так. Меш не виден после объединения может, разве что, быть из-за шейдера. Смотря чем объединять ещё.

  • @ViATVmy
    @ViATVmy 3 роки тому

    Владимир СВЕТ Игродельский привет ! я создаю игру на Android вот у меня такой вопрос для мобил FPS 30 это норм или надо 60 ?? или просто оставит как есть если так то FPS будет выбрана по авто у кого-то 30 у кого-то 60-90 FPS

    • @igrodelsky
      @igrodelsky  3 роки тому

      Здравия. Для мобил нужно ставил лок в 30 фпс, чтобы игра зря не садила батарею.

    • @richardgreen9787
      @richardgreen9787 3 роки тому

      Здравствуйте, а как это сделать?

    • @FloatingGames
      @FloatingGames Рік тому

      Смотря какая игра, в мою с 30 играть невозможно, 60 средне, а 120 идеально

  • @mactepmac
    @mactepmac 3 місяці тому

    У меня почему то все наоборот. Хотя Batches падает ФПС тоже падает после объединения мешей. Проверил на Unity 2022.3.30 и на Unity 6. HDRP. Может кто-то сталкивался с такой проблемой?

    • @igrodelsky
      @igrodelsky  3 місяці тому

      Может у объединённого меша слишком много полигонов получается. Попробуй разделить на 10-20 групп и объединять в один меш не сразу все объекты в сцене, а по группам.

    • @mactepmac
      @mactepmac 3 місяці тому

      @@igrodelsky спасибо. сейчас попробую

  • @Mr.Epsilion
    @Mr.Epsilion 3 роки тому

    Occlusion Culling будет ругаться?

    • @igrodelsky
      @igrodelsky  3 роки тому

      С чего он должен ругаться? Occlusion Culling может дополнить эту систему. Если объединить в один меш всю посуду на кухне, например, то Occlusion Culling будет выключать этот меш с посудой, если он не виден в данный момент.

  • @monoquoise7406
    @monoquoise7406 3 роки тому

    А как применить запеченный свет к НЕ объединённым объектам всё для того же Occlusion Culling ?
    То есть как их разъединить обратно после данной процедуры и применить запеченную Лайтмапу ?

    • @igrodelsky
      @igrodelsky  3 роки тому +1

      Ты определись о чём речь вообще О_о Если объекты НЕ объединены, то их и разъединять не нужно. А если уже объединил, то зачем разделять потом ? Ну и для объединённого объекта своя карта освещения, а для необъединённых своя. Occlusion Culling также можно использовать с комбайнером, если объединять не все объекты на сцене в один, а разделить их на 10-20 групп, например.

  • @KiZhuGames
    @KiZhuGames Рік тому

    Подскажите, кто знает. Я запек меш фонарей в большом городе, у меня наоборот снизился фпс в два раза по сравнению с тем что было, а другие меши наоборот увеличивали производительность. Меш вышел на 1 миллион вершин. Подозреваю что это дело сильно давит на ОЗУ и надо быть аккуратнее, но если есть внятный ответ подскажите плез

    • @igrodelsky
      @igrodelsky  Рік тому

      Ну так конечно, объединённые меши не должны быть с таким большим кол-во полигонов. Всё нужно делать с умом.

    • @KiZhuGames
      @KiZhuGames Рік тому

      @@igrodelsky в общем такой метод полезен если надо просто издалека чёт - то показать, общий план и ТД.

  • @yingwai8668
    @yingwai8668 Рік тому

    Где настроить показ лимита fps? У меня выше 75 не поднимается даже на простейшей сцене, думаю где-то установлен лимит, но как его убрать?

    • @igrodelsky
      @igrodelsky  Рік тому

      Ты в виаре, что-ли, смотришь ?

    • @yingwai8668
      @yingwai8668 Рік тому

      @@igrodelsky Честно говоря понятия не имею, просто нажимаю Game - Stats, очень странно если это авто вр

    • @igrodelsky
      @igrodelsky  Рік тому +1

      @@yingwai8668 Я про шлемы виртуальной реальности. В том же Окулюс Квест 1 частота обновления экрана 75 герц, поэтому и фпс показывает не больше 75.

    • @yingwai8668
      @yingwai8668 Рік тому

      @@igrodelsky я понял, но нет, я не использую шлем.

  • @iceshott8506
    @iceshott8506 2 роки тому

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

    • @igrodelsky
      @igrodelsky  2 роки тому

      Есть много аспектов оптимизации, начиная от кода и заканчивая звуком. Доступные методы зависят от проекта.

  • @hidusa
    @hidusa Рік тому

    что делать если в модели 10к кубов она цельная и из блендера?

    • @igrodelsky
      @igrodelsky  Рік тому

      10к кубов ? О_о Может 10к полигонов ?

    • @hidusa
      @hidusa Рік тому

      @@igrodelsky 10к кубов разных форм(шапалы рельсы и болты) в одном кубе больше 15 точек я разделил на 5 частей фпс стал из 20 на 40 без запекания и тд

    • @igrodelsky
      @igrodelsky  Рік тому

      @@hidusa Чёт дичь какая-то ... Кто изменяет модели в кубах ? Почему в кубе больше 15 точек, если должно быть 8 ? Нихрена не понятно.

    • @hidusa
      @hidusa Рік тому

      @@igrodelsky типо я создал куб сделал из нее модель чтобы сделать надо было создать больше точек и вот часть модели 10 на 0.3 на 0.1 дальше еще модель 2.5 на 0.4 на 0.4
      И самая маленькая это болтик из куба сделал шестигранник и дальше продублировал их нажал Ctrl + w согнул эти модели в нужною мне стороной и так 1 км

    • @hidusa
      @hidusa Рік тому

      @@igrodelsky ну кстати стало 30 фпс без запекания

  • @ghost1k985
    @ghost1k985 Рік тому

    Я когда объеденяю объекты у меня число батчей с 80 до 250 поднялось и фпс с 50 до 15 упал. Кто нибудь знает почему так?

    • @igrodelsky
      @igrodelsky  Рік тому

      Может слишком большое кол-во полигонов на объединяемых объектах.

    • @ghost1k985
      @ghost1k985 Рік тому

      @@igrodelsky У меня присутствует забор и там много коллайдеров. А что делать в таких ситуациях?

    • @igrodelsky
      @igrodelsky  Рік тому

      @@ghost1k985 Я не про коллайдеры, а про полигоны. Оптимизация - это дело индивидуальное. В каждом проекте и в каждой сцене нужно подходить к этому вопросу, учитывая все нюансы. Нет готового решения для оптимизации любой игры. Где-то лоды нужны, а где-то нет, где-то лучше использовать объединение мешей, а где-то оклюжн кулинг, ну и т.д. Всё это нужно изучать и тогда уже делать выводы о том, где что и когда использовать.

    • @ghost1k985
      @ghost1k985 Рік тому

      @@igrodelsky Я не хочу именно использовать объединение, я перепробовал кучу методов. Запекание почему-то не могу сделать, оклюжн каллинг никакой пользы не приносит, упрощение коллайдеров тоже не помогло.

    • @igrodelsky
      @igrodelsky  Рік тому

      @@ghost1k985 Если что-то не помогло, то это может не потому, что не подходит, а потому, что сделал что-то не так. На оптимизацию влияют не только графические и физические факторы, но и код. Можно одной кривой строчкой убить всю производительность. Тестируй на простых сценах, ищи причины методом исключения.

  • @diflux
    @diflux 3 роки тому +2

    все материалы испортил этот скрипт, а главное отмену нельзя сделать, теперь фиолетовые глюки )))

    • @igrodelsky
      @igrodelsky  3 роки тому +3

      Этот ассет материалы не изменяет. Розовый цвет означает, что материал не указан в МешРендере. Ну а так то вообще всегда нужно делать резервные копии сцен и проектов, чтобы в случае чего восстановить всё без проблем.

  • @hardik_original
    @hardik_original 2 роки тому

    бл у меня просто все обьекты удалились

    • @igrodelsky
      @igrodelsky  2 роки тому

      Резервные копии ? Не, не слышал ...

  • @ДаниилМишин-й1у
    @ДаниилМишин-й1у 3 роки тому +1

    У меня 10к обьектов фпс 30,после тоже 30

    • @igrodelsky
      @igrodelsky  3 роки тому +1

      Что-то сделал не так значит.

    • @ДаниилМишин-й1у
      @ДаниилМишин-й1у 3 роки тому

      @@igrodelsky у меня 40к,и нихера

    • @igrodelsky
      @igrodelsky  3 роки тому +1

      @@ДаниилМишин-й1у Ты хоть 1000К объектов добавь, но если всё не сделано как надо, то результата не будет. Пересмотри внимательно ролик.

  • @-LGK
    @-LGK 3 роки тому

    Привет, по не понятной причине у меня свет не запекается. Повторял за вами

    • @igrodelsky
      @igrodelsky  3 роки тому

      Здравия. На канале есть пара уроков по запеканию света. Рекомендую ознакомиться.

  • @mpmooi3147
    @mpmooi3147 Рік тому

    стало еще хуже

    • @igrodelsky
      @igrodelsky  Рік тому

      Выпей таблетку

    • @mpmooi3147
      @mpmooi3147 Рік тому

      @@igrodelsky я здоров

    • @igrodelsky
      @igrodelsky  Рік тому

      @@mpmooi3147 А кому тогда хуже стало ?

    • @mpmooi3147
      @mpmooi3147 Рік тому

      @@igrodelsky вобщем,.было 120фпс,я сделал все как по туторам,и так же 120 фпс

    • @igrodelsky
      @igrodelsky  Рік тому +1

      @@mpmooi3147 Ну так а где ХУЖЕ то ? МешКомбайнер - это не панацея. Любой инструмент оптимизации нужно с умом использовать. Может объединяешь модели, у которых по по 100к полигонов или ещё какие-то ошибки допускаешь. Что и как оптимизировать - это всегда индивидуальный подход. Каждый проект и каждая сцена должна иметь свой набор средств по оптимизации. То, что в одном месте поможет, в другом может сделать только хуже. Так что нужно вникать в суть, и делать выводы в каждой конкретной ситуации.