Object Pool, Пул объектов, Паттерны на практике, Unity, C#

แชร์
ฝัง
  • เผยแพร่เมื่อ 3 ก.ค. 2024
  • Ссылка на гитхаб игры:
    github.com/Haywaar/VerticalSc...
    для пула от юнити прыгайте на ветку UnityPool
    Ссылка на гитхаб классного EventBus где тоже есть пул
    github.com/PeturDarri/Generic...
    Автору на кофе и шаурму
    4276 5500 5792 8742 - карта Сбербанка
    Если будут вопросы
    мой тг @wargy
    моя почта kazancev.s215@gmail.com
    Тайминги:
    00:00 Введение
    00:31 Проблема: ограниченная вычислительная мощность
    01:58 Определение
    02:55 Пример из жизни
    03:23 Пример пула в геймдеве и в нашей игре
    04:21 Технические моменты пула
    06:17 Код пула в нашем скроллере
    07:49 Object Pool от Unity и как его использовать
    10:00 Направления модификаций пула объектов
    11:02 Когда использовать пул объектов
    12:45 Финал
  • เกม

ความคิดเห็น • 28

  • @slava_bro
    @slava_bro 3 หลายเดือนก่อน +2

    Качество видео поражает, коммент в поддержку

  • @latiyacanemi4473
    @latiyacanemi4473 ปีที่แล้ว +3

    В очередной раз отличный урок! Спасибо большое!

  • @jasim1798
    @jasim1798 ปีที่แล้ว +1

    отличное видео, спасибо

  • @user-yn6np8xi7k
    @user-yn6np8xi7k ปีที่แล้ว +2

    Как всегда всё на высоком уровне. Спасибо!
    P.S.: надеюсь доползешь до 2-го проекта, было бы очень интересно посмотреть.

    • @sergeykazantsev1655
      @sergeykazantsev1655  ปีที่แล้ว +1

      Спасибо, а я кажется догадался, кто тот Вячеслав кто мне донатит :D

    • @user-yn6np8xi7k
      @user-yn6np8xi7k ปีที่แล้ว +2

      @@sergeykazantsev1655 это мелочь, хороший урок бесценен )

  • @STIGRADOR
    @STIGRADOR ปีที่แล้ว +1

    Было б здорово пообщаться на тему Unit Testing

  • @user-qu9jm4zf3d
    @user-qu9jm4zf3d ปีที่แล้ว

    Спасибо за Pool!!!!

  • @user-kr8sy3ck4n
    @user-kr8sy3ck4n 8 หลายเดือนก่อน

    😀😀😀 а что так можно было что ли) Респект автору, сейчас можно найти кучу коричневой субстанции и лишь немного чего-то стоящего. Не забрасывай TH-cam.

  • @rikygoxd5472
    @rikygoxd5472 9 หลายเดือนก่อน

    Начал заниматься юнити месяц назад как хобби, основная работа веб. Это один из не многих каналов на эту тематику с таким высоким уровнем качества контента

  • @gendgee
    @gendgee 10 หลายเดือนก่อน +1

    ❤❤❤

  • @user-yn6np8xi7k
    @user-yn6np8xi7k ปีที่แล้ว +1

    Еще интересно было бы послушать про шаблоны GRASP в контексте разработки на Юнити.

    • @sergeykazantsev1655
      @sergeykazantsev1655  ปีที่แล้ว +1

      Хорошая идея, возьму на вооружение)

  • @forcesoftheevil9252
    @forcesoftheevil9252 ปีที่แล้ว

    Хороший кастомный пул и подарок после защиты курсовой))0)
    Сергей, насколько важно джуну знать реактивное программирование? Хотелось бы по этой теме видео посмотреть

    • @sergeykazantsev1655
      @sergeykazantsev1655  ปีที่แล้ว +1

      Поздравляю с защитой курсовой!) Вообще, джунов давно не набираем, команда устоялась, так что актуальную ситуацию не знаю.
      Мне кажется реактивное программирование стоит выше обычных требований к джуну, но так как рынок переполнен кандидатами, я бы сказал что будет здорово понимать концепцию реактивных свойств, дата биндинга, и "что-то слышать про uniRx". Вы вроде видели видео про MVVM там эта тема косвенно упоминается.

  • @maximkrikckunov422
    @maximkrikckunov422 ปีที่แล้ว +1

    Класс! Подробно и доходчиво, давай еще про оптимизацию! Сцена дает 90 FPS, но процессор грузит по полной, как ограничить FPS и нагрузку на процессор?

    • @sergeykazantsev1655
      @sergeykazantsev1655  ปีที่แล้ว

      Это очень сложный вопрос, надо индивидуально смотреть) Общий совет - надо лезть в профайлер и смотреть что больше всего нагружает CPU

    • @maximkrikckunov422
      @maximkrikckunov422 ปีที่แล้ว

      @@sergeykazantsev1655 Понял, спасибо)

  • @fakhriev9346
    @fakhriev9346 ปีที่แล้ว

    Привет, классные ролики! Имеется вопросик: иногда в требованиях в вакансиях вижу такую строку "Опыт оптимизации приложений под мобильные устройства (CPU, GPU, RAM)" и эта фраза не вводила бы в заблуждение, если бы не текст в скобках. Тот же обджект пул не относится ведь к этому, так как это просто оптимизация, а не оптимизация под мобильные устройства CPU и GPU? Или имеется в виду какие-то плагины под андройд, написанные на java и т.п.? Расшифруйте для неопытного, пожалуйста

    • @sergeykazantsev1655
      @sergeykazantsev1655  ปีที่แล้ว

      Привет! Спасибо!
      Могу ошибаться, но с моей точки зрения под опытом оптимизации подразумевается опыт работы с профайлером и понимание какие вещи могут нагружать игру.
      В зависимости от того что именно вы делаете в игре: у вас будет страдать или CPU(много сложной физики, коллайдеров, многослойного взаимодействия между объектами или много Instantiate, Destroy или много кода в Update-ах) или GPU(Мощный визуал, сложные шейдеры, текстурки, много риалтаймового света, возможно тяжёлые канвасы тоже видюху грузят, но может и CPU уже не помню) или RAM ( много объектов на сцене с большим количеством полигонов, огромные миры)
      То есть простым языком, надо понимать что в вашем проекте может сильно нагрузить вашу игру. Обычно достаточно соблюдать базовые правила оптимизации, чекать профайлер, количество draw call-ов и batch-ей и станет понятно где проблема

    • @fakhriev9346
      @fakhriev9346 ปีที่แล้ว

      @@sergeykazantsev1655 понял, спасибо!

  • @gwynbleinn
    @gwynbleinn 5 หลายเดือนก่อน

    можете поподробнее чем стэк лучше листа в данной ситуации?

    • @sergeykazantsev1655
      @sergeykazantsev1655  5 หลายเดือนก่อน

      Полагаю что дело в асимптотике, вставка элемента в коллекцию свободных элементов и извлечение осуществляется за о(1)
      В моей реализации и свободные и занятые элементы находятся в одном списке и там асимптотика дороже: о(n)

    • @gwynbleinn
      @gwynbleinn 5 หลายเดือนก่อน

      @@sergeykazantsev1655 то есть в теории, если бы вы использовали лист для свободных элементов и просто брали бы оттуда элемент под 0 индексом, то стоимость была бы одинаковая?

    • @sergeykazantsev1655
      @sergeykazantsev1655  5 หลายเดือนก่อน

      Нет. По алгоритму от юнити нам нужно не только брать элемент под 0 индексом, но и удалять его из коллекции.
      Вставка и удаление в стеке верхнего элемента занимает o(1)
      Вставка и удаление в листе верхнего(индекс 0) элемента занимает o(n)
      Тут скорее можно поизвращаться и вставлять и удалять элементы в листе из последнего элемента, так как вставка и удаление последнего элемента так же требует o(1). Но не следует забывать о Capacity в листе и в случае если лист переполняется, то он пересоздаётся с объёмом в 2 раза больше предыдущего и таким образом мы тратим o(n) на копирование из старого маленького массива в новый расширенный

  • @teawizzard
    @teawizzard ปีที่แล้ว

    Личное наблюдение : если постоянно говорить типо "Как колхозник" "Нюб" и в таком духе, то потом у новичков просыпается жуткая неувереность в себе и когда метод просто работает нормально, то оони боятся его пременить и в итоге никто не кодит.... поетому ненадо вот ето вот, нормальный код

    • @sergeykazantsev1655
      @sergeykazantsev1655  ปีที่แล้ว +4

      Спасибо за мнение! Объясню свою позицию.
      В сообществе программистов есть немалая доля перфекционистов, которые помешаны на ООП, оптимальности и идеальности каждой строчки кода. Лично видел синьора с огромным опытом который не мог написать за месяц раннер типа сабвей сёрфера, ибо завяз в сложных абстракциях.
      Несмотря на то, что на моём канале мало подписчиков и просмотров, на мой канал уже залетают мамкины перфекционисты которые начинают меня критиковать, один такой упорно доказывал что сервис локатор бесполезный и вредный паттерн и его нельзя ни при каких обстоятельствах использовать.
      Словами про "колхозника" я говорю о том, что код может нарушать какие-то ООП принципы, этот код можно написать лучше и качественнее. Тем не менее этот код выполняет поставленную задачу, не создаёт проблем производительности и его довольно удобно расширять. Так что данный код приемлем с моей точки зрения.
      И этими вставками я пытаюсь показать новичкам мысль, что даже хорошо написанный и работающий код может иметь слабости, неоптимизированные места, недоработки и тд. И это норма жизни, с которой скорее всего каждому придётся столкнуться.

    • @teawizzard
      @teawizzard 11 หลายเดือนก่อน

      @@sergeykazantsev1655 Ахахаха, ну да, я тебя понял, спасибо за ответ. Тогда Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще? XD