Паттерны стратегия в unity3D

Поделиться
HTML-код
  • Опубликовано: 7 янв 2025

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

  • @ilyanazarov7001
    @ilyanazarov7001 3 года назад +2

    Спасибо! Больше всего мне понравилось именно в этом видео, что автор сначала на пальцах показал дорогу в ад, а потом - паттерн как решение. Сразу узнаешь свои кейсы, и становится понятно не только для чего нужен паттерн, но и в какой момент его лучше использовать.

  • @ell_pavel
    @ell_pavel 3 года назад +4

    Очень приятно видеть паттерны в контексте геймдева и часто возникающих задач. Хороший материал

  • @ooDEFENDERoo
    @ooDEFENDERoo 4 года назад +6

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

  • @bogdankulikov2214
    @bogdankulikov2214 4 года назад +6

    Огромное спасибо за полезную и отлично поданную инфу. Часто не хватает примеров из реальной разработки, а тут отличный пример с жителями города. Однозначно лайк и подписка :D

  • @angelldark6426
    @angelldark6426 2 года назад

    Патерн дуже цікавий, надіюсь Ви будете знову ділитися своїм досвідом

  • @gameviewer5693
    @gameviewer5693 4 года назад +2

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

    • @gaitavr1992
      @gaitavr1992  4 года назад +7

      Частый признак для применения - свич, в котором применяется разная логика

  • @BESprovodnoi
    @BESprovodnoi 3 года назад +2

    нихоа не понял, но начинаю смотреть весь канал, лайк

  • @theoctan8569
    @theoctan8569 3 года назад +1

    По сути здесь затронулся паттерн проектирования Мост, который и образуется благодаря паттернам Стратегия и Шаблонный метод. Спасибо за урок X_X

  • @AB-sm9zd
    @AB-sm9zd 4 года назад +2

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

  • @alexeybolotov9857
    @alexeybolotov9857 2 года назад

    супер, уже юзал такое, но не знал что это на самом деле был паттерн Стратегия, спасибо за поясния

  • @ВитольдВальд
    @ВитольдВальд 3 года назад

    очень полезно, спасибо! пробовал похожую ситуацию разрулить без паттернов, по наитию, и собрал все грабли. После граблей и этого видео сразу понятно зачем оно все нужно и как решить задачу. И, кстати, уяснил как использовать интерфейсы, не повторяя сегменты кода.

  • @ТрофимНаталуха
    @ТрофимНаталуха Год назад

    Дуже крутий приклад, дякую

  • @Diyozen
    @Diyozen 4 года назад +32

    Тема интересная, буду ждать продолжения!
    На мой взгляд, было бы круто интегрировать побольше примеров и продемонстрировать их реализацию более явно (например, напрямую с NPC, которые меняет поведение на наших глазах).

  • @tnak7947
    @tnak7947 4 года назад +6

    О да. Это топ. Вот такого я давно ждал на русском ютабе. Тебе бы ещё превьюшки получше делать (дизайн в просаде).
    Теперь ты мой любимчик и уважаемый сэр (:

    • @gaitavr1992
      @gaitavr1992  4 года назад

      Дизайн конечно не мой конек) Но мне нравится иногда отвлечься от программирования вечерком и повозится в фотошопе)

  • @Gekker42
    @Gekker42 4 года назад +2

    Невыносимо полезное видео, не ожидал, спаcибо

  • @PavelStr-x5w
    @PavelStr-x5w 2 года назад

    комментарий в поддержку! спасибо за урок!

  • @moivozmojnostyvsegdavmoupolzu
    @moivozmojnostyvsegdavmoupolzu 2 года назад

    Номенклатура паттернов, хорошо. Возьмем.

  • @AliceMonUnitydeveloper
    @AliceMonUnitydeveloper 3 года назад

    Спасибо! Лучшее видео по этому патерну

  • @NoldoWalker
    @NoldoWalker 4 года назад +5

    Читал и (частично) использовал это в энтерпрайзе, но когда описано применительно к игре это как-то усваивается и складывается лучше.

  • @yuriisolopov9113
    @yuriisolopov9113 2 года назад

    Тот момент когда ты понимаешь что у тебя в коде не только фабрика, а фаприка+стратегия применена :)

  • @ГлебСевостьянов-б4у
    @ГлебСевостьянов-б4у 4 года назад +1

    Очень интересная тема! Хотелось бы знать какие еще паттерны хорошо/удобно применять в ходе разработки на Unity.

    • @gaitavr1992
      @gaitavr1992  4 года назад +2

      Следующее видео о декораторе будет)

  • @angelldark6426
    @angelldark6426 3 года назад

    Мне все интересно (
    И было бы классно ещё уроки от 0 до создания первой игры змейки.

    • @gaitavr1992
      @gaitavr1992  3 года назад +2

      С нуля это не моя аудитория

  • @arkon89gamedeveloper85
    @arkon89gamedeveloper85 4 года назад +1

    супер! спасибо за урок!

  • @MrArtrynk
    @MrArtrynk 4 года назад +1

    ОммммЮ патерны!! канонично!!

  • @quelquel4898
    @quelquel4898 2 года назад

    Обьяснение похожее как в книге Head First Design Patterns

  • @kirillsviderski4739
    @kirillsviderski4739 4 года назад +1

    Рассказываешь хорошо

  • @_Otets_
    @_Otets_ 2 года назад +1

    Кстати, в чем разница между стратегией и стейт машиной?

  • @rahatbakum7852
    @rahatbakum7852 2 года назад

    Очень круто, немного видел попытки объяснить этот паттерн, понятным мне показался пока только твой) Скажи пожалуйста, ты часом не из Украины?

  • @vladimirkraft4315
    @vladimirkraft4315 3 года назад

    Классный выпуск 👍

  • @egorvolkov3341
    @egorvolkov3341 3 года назад

    Вчера решал аналогичную проблему.
    Сначала налепил несколько классов с аналогичным функционалом. Осознал это. Отнаследовал от базового. Потребовалось добавить особый функционал нескольким типам, переделал в интерфейсы и закопался в переопределения.
    Кажется, я нашёл следующий этап...

  • @ЮрийАлексеенко-ж6г
    @ЮрийАлексеенко-ж6г 3 года назад

    Макс, спасибо!

  • @flashbackmovie8792
    @flashbackmovie8792 2 года назад

    Хороший и полезный видос, можешь снять продолжение?

    • @gaitavr1992
      @gaitavr1992  2 года назад

      Есть другое паттерны на канале

  • @ИгрушкиИльюшки
    @ИгрушкиИльюшки 4 года назад +2

    Было бы не плохо на реальном примере показать.

  • @АлександрЧистяков-й9ъ

    Мне кажется что лучше объединить ITradable, ISpeakable итд под один интерфейс ICitezenAction и создать на основе него коллекцию. Тогда у нас не будут разрастаться методы взаимодействия и методы добавления и удаления и не будут оставаться ненужные NULL поля. А ещё лучше добавить Enum и при взаимодействии с Citizen вызывался бы такой метод PlayerAction(Player player, CitizenActionType actionType) и просто был бы перебор коллекции на совершения нужного действия.

    • @gaitavr1992
      @gaitavr1992  4 года назад

      Неудобно будет копаться в этом огромном свиче действий. И, кстати, null невозможен в моем кейсе, так как применяется паттерн nullObject, когда используется мое обьект и он ничего не делает

    • @АлександрЧистяков-й9ъ
      @АлександрЧистяков-й9ъ 4 года назад

      @@gaitavr1992 я не говорю про свич. Я говорю про цикл перебора по коллекции, по тому же листу или использовать Dictinary. Вызов метода будет из классов как PlayerAction(player, CitizenActionType.Speaking). А в самом методе будет либо цикл, либо обращение к Dictinary. Плюс такое же удобное добавление и удаление в один метод, а не в изменения разных ITradable, ISpeakable

    • @gaitavr1992
      @gaitavr1992  4 года назад

      А с движением что? Его нельзя использовать как действие над citizen, ему подобных поведений будет еще куча

    • @АлександрЧистяков-й9ъ
      @АлександрЧистяков-й9ъ 4 года назад

      @@gaitavr1992 ну у тебя движение если зависит от player и тебе никто не запрещает в IMoving добавить функционал зависящий не только от взаимодействия с Player.
      Просто у тебя получается что в citizen много ненужного что другие могут даже не использовать, но они это зачем то наследуют

    • @gaitavr1992
      @gaitavr1992  4 года назад

      Во первых, каждый Citizen абстракцирует логику работы с плеером. Кто в вашей системе решает, какой enum действия вызвать? А если произошел некий триггер(квест, кража и т.д.) как вы будете этот экшн менять?
      Во-вторых, я спросил за IMovable, так как это одно из поведений жителя, но не взаимодействующее с плеером напрямую, не вижу ничего ненужного в Citizen, это довольно гибкая, пусть и высокоуровневая система.
      Если хотите, присылайте какой-то реальных код, можем на нем обсудить

  • @nikitasavenko5431
    @nikitasavenko5431 4 года назад

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

    • @gaitavr1992
      @gaitavr1992  4 года назад +2

      Если вы еще сами не работаете пару лет(не важно фриланс или в команде) то сложновато будет понять проблему)

    • @TeaCakeGames
      @TeaCakeGames 4 года назад

      в гугле "design patterns книга"

  • @valerypopov4041
    @valerypopov4041 3 года назад

    У меня вопрос.
    Если все торговцы в городе имеют не только метод реализации торговли, но и поля такие как деньги, скидка, количество лотов на витрине, то не легче сделать абстрактный класс Tradable вместо интерфеса ITradable ?

    • @gaitavr1992
      @gaitavr1992  3 года назад

      Торговля, как поведение вынесено под интерфейс, но никто не мешает добавить еще и абстрактный класс, если есть общее состояние.

    • @valerypopov4041
      @valerypopov4041 3 года назад

      @@gaitavr1992 понял, спасибо

  • @warface_cheaters_caught
    @warface_cheaters_caught 3 года назад +1

    Максим, учти в будущем, что concrete -- это бетон(см 4:32), а конкретный -- exact :)

    • @releyshic
      @releyshic 7 месяцев назад

      concrete это и бетон и чтото конкретное

  • @TheTorston
    @TheTorston 4 года назад

    Почему нельзя в этой концепции использовать просто более сложную систему наследованиях?
    Например: класс Citizen, от него наследуется IntractableCitizen, а от него Trader?
    Тогда все с кем мы можем взаимодействовать потенциально могу торговать.

    • @gaitavr1992
      @gaitavr1992  4 года назад +1

      Получится перекрестная система, которую сложно поддерживать и легко сломать

    • @Diyozen
      @Diyozen 4 года назад

      А ты попробуй. Очень явно понимание паттернов и их необходимость происходит во время, собственно, проектирования. Например, как ты реализуешь немого торговца, шагающего кругами по центральной площади?)

    • @TheTorston
      @TheTorston 4 года назад

      Diyozen Отнаследую от Trader класс SilentTrader в котором пропишу как он ходит, а метод Speak будет пустым?

    • @gaitavr1992
      @gaitavr1992  4 года назад

      @@TheTorston ну вы же понимаете, что это ужасная структура?

    • @TheTorston
      @TheTorston 4 года назад

      Максим Крюков - разработка на unity а чем? Она же решает поставленную задачу

  • @ОлексійВискворкін
    @ОлексійВискворкін 4 года назад

    Кстати тебе нужно развиваться в соц сетях,дискорд сервер сделать,группу вк и т.д

    • @gaitavr1992
      @gaitavr1992  4 года назад +1

      Группа вк есть, но я особо в ней смысла не вижу. А так после 1к хотел следующий этап вводить. Но пока идет туговато)

  • @ОлексійВискворкін
    @ОлексійВискворкін 4 года назад

    Общее что то где то там промелькнуло,но без реальных примеров - не сильно понятно как это применить в проекте.

    • @gaitavr1992
      @gaitavr1992  4 года назад

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

    • @ОлексійВискворкін
      @ОлексійВискворкін 4 года назад +5

      @@gaitavr1992 Просто хочется увидеть как ты что то реализуеш длинное и кривое,которого полно на ютубе,а потом применяется "стратегия" и вместо 200 строчек спагетти получается 100 строчек легко читаемого кода,который легко поддерживать

    • @gaitavr1992
      @gaitavr1992  4 года назад +5

      Принял, хорошо

  • @maxarefev5686
    @maxarefev5686 4 года назад +2

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

  • @andreyromanov680
    @andreyromanov680 3 месяца назад

    3:40
    создаются объекты, но варнинг же будет что он монобеха наследуемся, это нормально?

  • @Кирилл-и7у7ю
    @Кирилл-и7у7ю 2 года назад

    Спасибо, очень полезный урок!