Спасибо! Больше всего мне понравилось именно в этом видео, что автор сначала на пальцах показал дорогу в ад, а потом - паттерн как решение. Сразу узнаешь свои кейсы, и становится понятно не только для чего нужен паттерн, но и в какой момент его лучше использовать.
@ell_pavel
3 жыл бұрын
Очень приятно видеть паттерны в контексте геймдева и часто возникающих задач. Хороший материал
@ooDEFENDERoo
3 жыл бұрын
Большое спасибо за подробный и очень полезный урок!
@bogdankulikov2214
3 жыл бұрын
Огромное спасибо за полезную и отлично поданную инфу. Часто не хватает примеров из реальной разработки, а тут отличный пример с жителями города. Однозначно лайк и подписка :D
@Diyozen
3 жыл бұрын
Тема интересная, буду ждать продолжения! На мой взгляд, было бы круто интегрировать побольше примеров и продемонстрировать их реализацию более явно (например, напрямую с NPC, которые меняет поведение на наших глазах).
@gaitavr1992
3 жыл бұрын
Учту, спасибо!
@Veyron104
3 жыл бұрын
+1
@gameviewer5693
3 жыл бұрын
Спасибо за довольно интересный и полезный видос, пока еще трудно полностью осознать принцип работы данного паттерна, но благодаря этому видео,я стал на шаг ближе.
@gaitavr1992
3 жыл бұрын
Частый признак для применения - свич, в котором применяется разная логика
@AB-sm9zd
3 жыл бұрын
Большое спасибо за отличный урок!
@theoctan8569
3 жыл бұрын
По сути здесь затронулся паттерн проектирования Мост, который и образуется благодаря паттернам Стратегия и Шаблонный метод. Спасибо за урок X_X
@BESprovodnoi
3 жыл бұрын
нихоа не понял, но начинаю смотреть весь канал, лайк
@angelldark6426
Жыл бұрын
Патерн дуже цікавий, надіюсь Ви будете знову ділитися своїм досвідом
@NoldoWalker
3 жыл бұрын
Читал и (частично) использовал это в энтерпрайзе, но когда описано применительно к игре это как-то усваивается и складывается лучше.
@AliceMonUnitydeveloper
3 жыл бұрын
Спасибо! Лучшее видео по этому патерну
@Gekker42
3 жыл бұрын
Невыносимо полезное видео, не ожидал, спаcибо
@ВитольдВальд
2 жыл бұрын
очень полезно, спасибо! пробовал похожую ситуацию разрулить без паттернов, по наитию, и собрал все грабли. После граблей и этого видео сразу понятно зачем оно все нужно и как решить задачу. И, кстати, уяснил как использовать интерфейсы, не повторяя сегменты кода.
@alexeybolotov9857
2 жыл бұрын
супер, уже юзал такое, но не знал что это на самом деле был паттерн Стратегия, спасибо за поясния
@tnak7947
3 жыл бұрын
О да. Это топ. Вот такого я давно ждал на русском ютабе. Тебе бы ещё превьюшки получше делать (дизайн в просаде). Теперь ты мой любимчик и уважаемый сэр (:
@gaitavr1992
3 жыл бұрын
Дизайн конечно не мой конек) Но мне нравится иногда отвлечься от программирования вечерком и повозится в фотошопе)
@PavelStr-x5w
2 жыл бұрын
комментарий в поддержку! спасибо за урок!
@ТрофимНаталуха
Жыл бұрын
Дуже крутий приклад, дякую
@moivozmojnostyvsegdavmoupolzu
2 жыл бұрын
Номенклатура паттернов, хорошо. Возьмем.
@arkon89gamedeveloper85
3 жыл бұрын
супер! спасибо за урок!
@quelquel4898
Жыл бұрын
Обьяснение похожее как в книге Head First Design Patterns
@ГлебСевостьянов-б4у
3 жыл бұрын
Очень интересная тема! Хотелось бы знать какие еще паттерны хорошо/удобно применять в ходе разработки на Unity.
@gaitavr1992
3 жыл бұрын
Следующее видео о декораторе будет)
@kirillsviderski4739
3 жыл бұрын
Рассказываешь хорошо
@angelldark6426
2 жыл бұрын
Мне все интересно ( И было бы классно ещё уроки от 0 до создания первой игры змейки.
@gaitavr1992
2 жыл бұрын
С нуля это не моя аудитория
@vladimirkraft4315
2 жыл бұрын
Классный выпуск 👍
@ЮрийАлексеенко-ж6г
3 жыл бұрын
Макс, спасибо!
@MrArtrynk
3 жыл бұрын
ОммммЮ патерны!! канонично!!
@rahatbakum7852
2 жыл бұрын
Очень круто, немного видел попытки объяснить этот паттерн, понятным мне показался пока только твой) Скажи пожалуйста, ты часом не из Украины?
@yuriisolopov9113
2 жыл бұрын
Тот момент когда ты понимаешь что у тебя в коде не только фабрика, а фаприка+стратегия применена :)
@_Otets_
2 жыл бұрын
Кстати, в чем разница между стратегией и стейт машиной?
@egorvolkov3341
3 жыл бұрын
Вчера решал аналогичную проблему. Сначала налепил несколько классов с аналогичным функционалом. Осознал это. Отнаследовал от базового. Потребовалось добавить особый функционал нескольким типам, переделал в интерфейсы и закопался в переопределения. Кажется, я нашёл следующий этап...
@ИгрушкиИльюшки
3 жыл бұрын
Было бы не плохо на реальном примере показать.
@flashbackmovie8792
2 жыл бұрын
Хороший и полезный видос, можешь снять продолжение?
@gaitavr1992
2 жыл бұрын
Есть другое паттерны на канале
@АлександрЧистяков-й9ъ
3 жыл бұрын
Мне кажется что лучше объединить ITradable, ISpeakable итд под один интерфейс ICitezenAction и создать на основе него коллекцию. Тогда у нас не будут разрастаться методы взаимодействия и методы добавления и удаления и не будут оставаться ненужные NULL поля. А ещё лучше добавить Enum и при взаимодействии с Citizen вызывался бы такой метод PlayerAction(Player player, CitizenActionType actionType) и просто был бы перебор коллекции на совершения нужного действия.
@gaitavr1992
3 жыл бұрын
Неудобно будет копаться в этом огромном свиче действий. И, кстати, null невозможен в моем кейсе, так как применяется паттерн nullObject, когда используется мое обьект и он ничего не делает
@АлександрЧистяков-й9ъ
3 жыл бұрын
@@gaitavr1992 я не говорю про свич. Я говорю про цикл перебора по коллекции, по тому же листу или использовать Dictinary. Вызов метода будет из классов как PlayerAction(player, CitizenActionType.Speaking). А в самом методе будет либо цикл, либо обращение к Dictinary. Плюс такое же удобное добавление и удаление в один метод, а не в изменения разных ITradable, ISpeakable
@gaitavr1992
3 жыл бұрын
А с движением что? Его нельзя использовать как действие над citizen, ему подобных поведений будет еще куча
@АлександрЧистяков-й9ъ
3 жыл бұрын
@@gaitavr1992 ну у тебя движение если зависит от player и тебе никто не запрещает в IMoving добавить функционал зависящий не только от взаимодействия с Player. Просто у тебя получается что в citizen много ненужного что другие могут даже не использовать, но они это зачем то наследуют
@gaitavr1992
3 жыл бұрын
Во первых, каждый Citizen абстракцирует логику работы с плеером. Кто в вашей системе решает, какой enum действия вызвать? А если произошел некий триггер(квест, кража и т.д.) как вы будете этот экшн менять? Во-вторых, я спросил за IMovable, так как это одно из поведений жителя, но не взаимодействующее с плеером напрямую, не вижу ничего ненужного в Citizen, это довольно гибкая, пусть и высокоуровневая система. Если хотите, присылайте какой-то реальных код, можем на нем обсудить
@nikitasavenko5431
3 жыл бұрын
Видео супер! Только подскажите, пожалуйста, что нужно читать, чтобы понять, о чём в нём рассказывается?) А то вроде уроки и курсы по юнити прохожу, а как что-то глубже понять - на тебе!
@gaitavr1992
3 жыл бұрын
Если вы еще сами не работаете пару лет(не важно фриланс или в команде) то сложновато будет понять проблему)
@TeaCakeGames
3 жыл бұрын
в гугле "design patterns книга"
@valerypopov4041
3 жыл бұрын
У меня вопрос. Если все торговцы в городе имеют не только метод реализации торговли, но и поля такие как деньги, скидка, количество лотов на витрине, то не легче сделать абстрактный класс Tradable вместо интерфеса ITradable ?
@gaitavr1992
3 жыл бұрын
Торговля, как поведение вынесено под интерфейс, но никто не мешает добавить еще и абстрактный класс, если есть общее состояние.
@valerypopov4041
3 жыл бұрын
@@gaitavr1992 понял, спасибо
@TheTorston
3 жыл бұрын
Почему нельзя в этой концепции использовать просто более сложную систему наследованиях? Например: класс Citizen, от него наследуется IntractableCitizen, а от него Trader? Тогда все с кем мы можем взаимодействовать потенциально могу торговать.
@gaitavr1992
3 жыл бұрын
Получится перекрестная система, которую сложно поддерживать и легко сломать
@Diyozen
3 жыл бұрын
А ты попробуй. Очень явно понимание паттернов и их необходимость происходит во время, собственно, проектирования. Например, как ты реализуешь немого торговца, шагающего кругами по центральной площади?)
@TheTorston
3 жыл бұрын
Diyozen Отнаследую от Trader класс SilentTrader в котором пропишу как он ходит, а метод Speak будет пустым?
@gaitavr1992
3 жыл бұрын
@@TheTorston ну вы же понимаете, что это ужасная структура?
@TheTorston
3 жыл бұрын
Максим Крюков - разработка на unity а чем? Она же решает поставленную задачу
@ОлексійВискворкін
3 жыл бұрын
Общее что то где то там промелькнуло,но без реальных примеров - не сильно понятно как это применить в проекте.
@gaitavr1992
3 жыл бұрын
Методы без наполнения уже не реальный пример? Обычно на всевдокоде показывают, а там еще меньше реального
@ОлексійВискворкін
3 жыл бұрын
@@gaitavr1992 Просто хочется увидеть как ты что то реализуеш длинное и кривое,которого полно на ютубе,а потом применяется "стратегия" и вместо 200 строчек спагетти получается 100 строчек легко читаемого кода,который легко поддерживать
@gaitavr1992
3 жыл бұрын
Принял, хорошо
@ОлексійВискворкін
3 жыл бұрын
Кстати тебе нужно развиваться в соц сетях,дискорд сервер сделать,группу вк и т.д
@gaitavr1992
3 жыл бұрын
Группа вк есть, но я особо в ней смысла не вижу. А так после 1к хотел следующий этап вводить. Но пока идет туговато)
@Данька_ВФ
3 жыл бұрын
Максим, учти в будущем, что concrete -- это бетон(см 4:32), а конкретный -- exact :)
@releyshic
3 ай бұрын
concrete это и бетон и чтото конкретное
@maxarefev5686
3 жыл бұрын
слишком сложно, лучше сделаь практические уроки с реальным примером и его рефакторингом. На практике показать почему конкретный подход неудобен.
@andreyromanov680
5 күн бұрын
3:40 создаются объекты, но варнинг же будет что он монобеха наследуемся, это нормально?
Пікірлер: 76