- Видео 27
- Просмотров 191 730
Sergey Kazantsev
Германия
Добавлен 23 ноя 2016
Делаю короткие видео по программированию на Unity C#.
Основной фокус уделяю паттернам проектирования и построению архитектуры в играх.
На 2023 год я работаю Unity разработчиком более 7 лет.
Основной фокус уделяю паттернам проектирования и построению архитектуры в играх.
На 2023 год я работаю Unity разработчиком более 7 лет.
R3 UniRx, Теория и Практика, Реактивное программирование, Unity, C#,
Пожалуй, самый сложный и долгий видос который я делал. Устал и измотался, но оно того стоило...
R3 и UniRx в студию!
ссылка на гитхаб на проект
github.com/Haywaar/PatternDemoStorage - пример с реактивными методами
Лежит по пути Assets/R3Demo/
тг нашего уютного сообщества t.me/UnitistNotes
Ссылки на полезные ресурсы:
github.com/Cysharp/R3
ruclips.net/video/kFoBvjwzbNA/видео.html&ab_channel=InfallibleCode
introtorx.com/chapters/transformation-of-sequences
rxmarbles.com/#concat
Автору на смузи и брокколи
4276 5500 5792 8742 - карта Сбербанка
Тайминги:
00:00 Введение
00:50 Организационные вопросы
01:47 Реактивное программирование - основные принципы
03:37 Rx это Observer?
06:21 Поток данных
10:00 Subject, OnNe...
R3 и UniRx в студию!
ссылка на гитхаб на проект
github.com/Haywaar/PatternDemoStorage - пример с реактивными методами
Лежит по пути Assets/R3Demo/
тг нашего уютного сообщества t.me/UnitistNotes
Ссылки на полезные ресурсы:
github.com/Cysharp/R3
ruclips.net/video/kFoBvjwzbNA/видео.html&ab_channel=InfallibleCode
introtorx.com/chapters/transformation-of-sequences
rxmarbles.com/#concat
Автору на смузи и брокколи
4276 5500 5792 8742 - карта Сбербанка
Тайминги:
00:00 Введение
00:50 Организационные вопросы
01:47 Реактивное программирование - основные принципы
03:37 Rx это Observer?
06:21 Поток данных
10:00 Subject, OnNe...
Просмотров: 1 332
Видео
Ошибочные убеждения начинающих разработчиков, Unity, C#, gamedev
Просмотров 3,5 тыс.3 месяца назад
Попробовал более разговорный формат, есть несколько вещей, которыми хотелось бы поделиться. Как вам? Автору на смузи и брокколи 4276 5500 5792 8742 - карта Сбербанка Тайминги: 00:00 Введение 01:09 Большую часть времени разработчики пишут код? 03:18 ChatGPT, копайлоты и нейросети повышают скилл разработчика? 07:15 Большие амбиции и желание ухватить всё везде и сразу 09:35 Желание быстрых результ...
Паттерн Decorator, Декоратор Unity, C#, gamedev
Просмотров 2,8 тыс.5 месяцев назад
Ставь лайк если ООП течёт в твоих венах, раскаляя сердца и вырывается на поверхность! ссылка на гитхаб на проект github.com/Haywaar/PatternDemoStorage - пример с псевдорогалькой Лежит по пути Assets/Patterns/Decorator/GoodExample тг нашего уютного сообщества t.me/UnitistNotes Автору на смузи и брокколи 4276 5500 5792 8742 - карта Сбербанка Тайминги: 00:00 Введение 00:27 Определение 02:07 UML-сх...
Паттерн Command, Команда, Unity, C#, gamedev
Просмотров 3,6 тыс.7 месяцев назад
Один из самых непростых паттернов на моём канале. Встречайте, паттерн Command! Напишите пожалуйста, насколько вас раздражает звук ибо мне показалось что фильтр шумоподавления неестественно искажает голос и ухудшает восприятие. На этом ролике я полностью фильтр отключил ссылка на гитхаб на проект github.com/Haywaar/ShawarmaFight - проект с шаурмой github.com/Haywaar/PatternDemoStorage - пример с...
Паттерн State, паттерн состояние, Unity C#
Просмотров 5 тыс.8 месяцев назад
Новый видосик по паттерну State Ссылка на гитхаб на проект github.com/Haywaar/ShawarmaFight - проект с шаурмой github.com/Haywaar/PatternDemoStorage - пример с башнями Лежит по пути Assets/Patterns/State/GoodExample Автору на кофе и шаурму 4276 5500 5792 8742 - карта Сбербанка Если будут вопросы тг нашего уютного сообщества t.me/UnitistNotes мой тг @wargy моя почта kazancev.s215@gmail.com Тайми...
Паттерны на практике 2, Zenject для самых маленьких, Unity, C#
Просмотров 3,4 тыс.8 месяцев назад
Наконец-таки разобрал зенджект на практике, как многие из вас просили. Напишите пожалуйста, обратную связь по более живому формату видео. Мне такой формат лично не очень нравится, так как кажется что я много косноязычу и э-каю и бэ-каю, но возможно вам нравится более подробный и не такая сухая подача Ссылка на гитхаб на проект github.com/Haywaar/ShawarmaFight Автору на кофе и шаурму 4276 5500 5...
Паттерны на практике 2, шавушный анонс, Unity, C#
Просмотров 1 тыс.8 месяцев назад
Завёз вам прогрев о грядущих видеороликах) Надеюсь, понравится) Ссылка на гитхаб на проект github.com/Haywaar/ShawarmaFight Автору на кофе и шаурму 4276 5500 5792 8742 - карта Сбербанка Если будут вопросы мой тг @wargy моя почта kazancev.s215@gmail.com Тайминги: 00:00 Введение 00:29 О чём новая игра? 01:30 Какие темы мы рассмотрим? 04:03 Финал
Zenject, внедрение зависимостей, Unity C#
Просмотров 7 тыс.11 месяцев назад
Как говорится "Давненько тебя не было видно на уличных гонках" Гитхаб на проект с демкой из видео: github.com/Haywaar/PatternDemoStorage Лежит по пути Assets/Patterns/DIExample Assets/Patterns/DIExample_Zenject Там же и демо сцены с контекстом Автору на кофе и шаурму 4276 5500 5792 8742 - карта Сбербанка Полезные ресурсы на которых можно узнать Zenject получше Яковлев Илья ruclips.net/video/jVF...
Принципы ООП, инкапсуляция, абстракция, наследование, полиморфизм, Unity, C#
Просмотров 14 тыс.Год назад
Решил вместо редких паттернов рассказать самую базу, так как годный материал по этой теме разбросан по всему интернету Гитхаб на проект с демкой из видео: github.com/Haywaar/PatternDemoStorage Лежит по пути Assets/Patterns/OOPExampleBad Assets/Patterns/OOPExampleGood Там и демка с аптечкой и с расчётом стоимости юнитов Автору на кофе и шаурму 4276 5500 5792 8742 - карта Сбербанка Если будут воп...
Vertical Scroller - заключение, Паттерны на практике, DialogManager, Entry Point, Unity C#
Просмотров 2,4 тыс.Год назад
Ох, ребятушки, вроде темы небольшие, но запотеть пришлось знатно. Так как было много именно практики - мало красивых схем и много трансляций записи с кода. Надеюсь, вам понравилось :) Ссылка на гитхаб игры: github.com/Haywaar/VerticalScrollerExample Автору на кофе и шаурму 4276 5500 5792 8742 - карта Сбербанка Если будут вопросы мой тг @wargy моя почта kazancev.s215@gmail.com Тайминги: 00:00 Вв...
Object Pool, Пул объектов, Паттерны на практике, Unity, C#
Просмотров 6 тыс.Год назад
Ссылка на гитхаб игры: github.com/Haywaar/VerticalScrollerExample для пула от юнити прыгайте на ветку UnityPool Ссылка на гитхаб классного EventBus где тоже есть пул github.com/PeturDarri/GenericEventBus/blob/main/Runtime/GenericEventBus.cs Автору на кофе и шаурму 4276 5500 5792 8742 - карта Сбербанка Если будут вопросы мой тг @wargy моя почта kazancev.s215@gmail.com Тайминги: 00:00 Введение 00...
Event Bus, Паттерны на практике, Unity, C#
Просмотров 10 тыс.Год назад
Ссылка на гитхаб игры: github.com/Haywaar/VerticalScrollerExample Ссылка на гитхаб классной но сложной реализации EventBus github.com/PeturDarri/GenericEventBus/blob/main/Runtime/GenericEventBus.cs Автору на кофе и шаурму 4276 5500 5792 8742 - карта Сбербанка Если будут вопросы тг нашего уютного сообщества t.me/UnitistNotes мой тг @wargy моя почта kazancev.s215@gmail.com Тайминги: 00:00 Введени...
Service Locator, Паттерны на практике, Unity, C#
Просмотров 6 тыс.Год назад
Разобрал один из любимых мною паттернов, которые с точки зрения ООП гигачадов часто может стать анти-паттерном Ссылка на гитхаб: github.com/Haywaar/VerticalScrollerExample Автору на кофе и шаурму 4276 5500 5792 8742 - карта Сбербанка Если будут вопросы мой тг @wargy моя почта kazancev.s215@gmail.com Тайминги: 00:00 Введение 00:22 Проблема: доступ между классами и сложная инициализация 02:15 Опр...
Паттерны на практике, анонс, Unity, C#
Просмотров 2,8 тыс.Год назад
Потихоньку стартую рубрику "Паттерны на практике" и запилил вот такое видео анонс, чтобы подбодрить вас и чуть больше замотивировать себя. Видео по Service Locator ruclips.net/video/1QdOkqBLnp0/видео.html Ссылка на гитхаб: github.com/Haywaar/VerticalScrollerExample Автору на кофе и шаурму 4276 5500 5792 8742 - карта Сбербанка Если будут вопросы мой тг @wargy моя почта kazancev.s215@gmail.com Та...
Model View ViewModel, Модель Вид Модель Вида, Unity, C#
Просмотров 12 тыс.Год назад
Пожалуй, паттерн на который я потратил больше всего времени p.s. Забыл про отписку от OnChanged в примерах, в гитхаб залью правку Гитхаб на проект с демкой из видео: github.com/Haywaar/PatternDemoStorage Лежит по пути Assets/Patterns/MVVMExample_Simple - окно прокачки персонажа Assets/Patterns/MVVMExample - слот машина с режимом реролла Ссылка на UniRx github.com/neuecc/UniRx assetstore.unity.c...
Model View Presenter, MVP, Модель Вид Представитель, С#, Unity
Просмотров 11 тыс.Год назад
Model View Presenter, MVP, Модель Вид Представитель, С#, Unity
Model View Controller, MVC, Модель Вид Контроллер, C#, Unity
Просмотров 14 тыс.Год назад
Model View Controller, MVC, Модель Вид Контроллер, C#, Unity
Паттерн Abstract Factory, Абстрактная фабрика, C#, Unity
Просмотров 17 тыс.Год назад
Паттерн Abstract Factory, Абстрактная фабрика, C#, Unity
Паттерн Factory Method, Фабричный метод, С#, Unity
Просмотров 14 тыс.Год назад
Паттерн Factory Method, Фабричный метод, С#, Unity
Советы новичкам при поиске первой работы, unity, gamedev
Просмотров 2,7 тыс.Год назад
Советы новичкам при поиске первой работы, unity, gamedev
Dependency Injection, С#, Внедрение зависимостей, unity, gamedev
Просмотров 19 тыс.Год назад
Dependency Injection, С#, Внедрение зависимостей, unity, gamedev
SOLID, 1.5 DIP - Dependency Inversion Principle, Принцип инверсии зависимости, С#, Unity
Просмотров 9 тыс.Год назад
SOLID, 1.5 DIP - Dependency Inversion Principle, Принцип инверсии зависимости, С#, Unity
SOLID, 1.4 ISP - Interface Segregation Principle, Принцип разделения интерфейса , С#, Unity
Просмотров 3,4 тыс.Год назад
SOLID, 1.4 ISP - Interface Segregation Principle, Принцип разделения интерфейса , С#, Unity
SOLID, 1.3 LSP - Liskov Substitution Principle Принцип подстановки Лисков - С#, Unity
Просмотров 4,8 тыс.Год назад
SOLID, 1.3 LSP - Liskov Substitution Principle Принцип подстановки Лисков - С#, Unity
SOLID, 1.2 OCP - Open Closed Principle, Принцип открытости закрытости, С#, Unity
Просмотров 4 тыс.Год назад
SOLID, 1.2 OCP - Open Closed Principle, Принцип открытости закрытости, С#, Unity
SOLID, 1.1 SRP - Single Responsibility Principle, Принцип Единственной ответственности, С#, Unity
Просмотров 6 тыс.Год назад
SOLID, 1.1 SRP - Single Responsibility Principle, Принцип Единственной ответственности, С#, Unity
Паттерн Observer, С#, unity, gamedev,
Просмотров 8 тыс.Год назад
Паттерн Observer, С#, unity, gamedev,
Здравствуйте, скажите, пожалуйста, почему в примере для проверки, является ли юнит кратным 3, не используется вот такая формула: return (_id % 3 == 0)? То есть если сейчас юнит является 3 по счёту то номер перекрасится в жёлтый? а так по формуле как у вас 2 юнит должен перекраситься в желтый цвет. Объясните, пожалуйста, почему именно такая формула используется.
Здравствуйте, индекс начинается с нуля, поэтому к id мы прибавляем единицу и только потом делим на 3
@sergeykazantsev1655 а, теперь понял. Спасибо большое!
такие классные емкие и информативные видео, я надеюсь у вас все в порядке и выпуск новых эпизодов продолжится!
Спасибо большое) буду стараться
Вот насчёт гита лучше сначала погуглить, а не идти в чат гпт сразу)))
Невероятно доступное объяснение! Спасибо большое!
тупо не понимаю как работает связка ------ Subject Observable Observer и ReactiveProperty
12:05 Subject = Obserable - это источник Observer - слушатель, приёмник
@@sergeykazantsev1655 спс что ответили , я провокационно конечно немного , просто тяжеловато и да не понимаю стоит ли отказываться - стараться от event ов делегатов типа Action , Func и вот это вот все , к примеру для UI в основном поддерживающие интерфейсы - Dragи Dropы Click и - вот это , нужно ли стараться переходить полностью на реактивщину - просто мучают все эти вопросы - хз как правильно что бы потом не обделаться , точнее что то не упустить - я хз в общем мозг кипит
Я бы сказал, что зависит от ваших целей. Если вы просто для удовольствия пишете небольшие игры - вы царь и Бог выбирать те решения и инструменты удобные вам. Если же вы планируете работать разработчиком, рано или поздно вы наткнётесь на команду которая пишет на R3 или UniRx и спросят - знаете ли его вы. Или просто будете писать уже достаточно большой проект и обычных экшнов вам перестанет хватать. И в таких случаях знать R3 и UniRx полезно.
Здравствуйте, Сергей! Спасибо за прекрасные обучающие материалы, очень много полезного для себя почерпнул. Хотел бы задать такой вопрос: как Вы считаете, может ли MVC существовать без какого-либо компонента, например Model (когда не нужно что-либо хранить) или View (когда не нужно что-либо отображать)? или тогда это уже не MVC, а что-то другое? Например: я реализовал логику сохранения данных (позиция игрока, собранные предметы, пройденные квесты и т.д.) в игре посредством создания GameData- Model (в модели хранятся непосредственно данные и в конструкторе задаются данные по-умолчанию) & Controller (отвечает за логику сохранения / загрузки данных, в том числе на основе событий). View нет, т.к. нет необходимости что-то отображать в данной связке.
Здравствуйте! Да, такое возможно, но это уже не паттерн MVC. Это просто разделение кода на разные слои В этом ничего плохого нет. Я сам часто для UI разбиваю код только на два слоя: данные и вид. Пока на виде(каком-нибудь окошке) пара кнопок и никакой сложной логики - Controller или Presenter я не создаю
хоть где-то узнала как работает стиральная машинка))))))))))
а вот если у нас есть данный словарь: private static Dictionary <Type, object> Services = new(); и нам надо регистрировать и как то получать разные реализации интерфейса,если мы получаем объект по Type?
Это больше на сервис локатор похоже)
@@sergeykazantsev1655 по сути DI это и есть сервис локатор,который сам прокидывает зависимости,в моем проекте он это делает через рефлексию и аттрибуты метода
и еще хотелось бы узнать как грамотно при такой системе сделать Entry Point, нигде не могу найти полной информации
Обычно между DI и сервис локатором есть разница в моменте когда вы внедряете сервисы. В DI внедрение происходит сразу, при создании или инициализации класса. Получить же сервисы через сервис локатор вы можете в любой момент выполнения, а не только инициализации. Потому обычно DI и принято отличать от сервис локатора
А в чём конкретно трудности с сочетанием DI и Entry Point у вас возникают?
Очень круто и интересно объяняете, посмотрел все видео, как сериал😅. Вот бы видео про ecs
Спасибо) ECS точно не скоро)
Автора рекомендую, приятно посмотреть. TowerState больше ISP или LSP нарушает? Раздутая абстракция, не реализуемые в наследниках методы интерфейса
Скорее LSP. Можнл в качестве альтернативы передавать кнопки по другому, чтобы каждый state вместо обработки методов возвращал список доступных кнопок, но если в них будет уникальная логика, в зависимости от стейта , такое не получится
Сделайте видео как сделать DI контейнер
А чем вас Зенджект или VContainer не устраивает?)
17:55 имеет ли больший смысл использовать в 39й строке Clear вместо Dispose? Например, если я захочу потом новую подписку в этом же скрипте создать?
Dispose отрубает слушатель навсегда. Clear - отписывается, с возможностью подписаться потом вновь. Если хотите делать подписку заново в дальнейшем - лучше делать Clear
Такой вопрос, если у меня нет разных семейств, но у меня все униты разные. Например есть зомби, скелет и т.д, у каждого соответственно свои механики и все наследуются от абстракции enemy. Так вот стоит ли использовать абстрактную фабрику или фабричный метод?
Скорее всего нет, и проще сделать некую единую фабрику которая создает всех юнитов.
Это потрясающе, спасибо большое!
Топ! Спасибо огромное!
Спасибо большое! Очень доступно!
Интересный плейлист, но было бы лучше для тех кто не знает эти паттерны в начале видео за минуту обЪяснить что это и зачем используется с примерами чтобы понять нужен ли тебе этот паттерн.
Здравствуйте, подскажите пожалуйста, при использовании архитектуры MVP, у нас бизнес логика обрабатывается внутри модели ? в презентере? или в отельных "сервисах" или та логика которая работает с данными в модели, та что соединяет вью с моделью в презентере, а так что не относиться ни к первому не ко второму в сервисах?
я так понимаю тут Binder вынесен в VM, а когда нужен отдельный класс Binder?
А что именно под Binder-ом вы понимаете? Место где связывается VM, View и Model? Тогда у меня роль биндера выполняет MainScript в демке
Подача - мое уважение.
Большое спасибо! Видно владение темой, все грамотно и по делу! Лайк и подписка.👍🏻
Просто потрясающе объяснение, с чувством, толком, расстановкой. Одного не могу понять-где детали зависят от абстракций ?
Детали являются частью классов низкого уровня. Классы низкого уровня зависят от абстракций. Если изменить абстракцию, придётся менять класс низкого уровня и саму деталь, как ее часть.
Тот же пример, если вы делали спойлеры на машины, а потом внезапно начали делать грузовые баржи, спойлер придётся немного переделать)
Очень тонкая штука. Тогда можно было бы обойтись высказыванием, что классы низкого и высокого уровня должны зависеть от абстракций. Спасибо за разъяснение.
Супер крутые гайды, по паттернам! У меня вопрос не большой: Клиентом же не обязательно должна быть условная фабрика. Если, например, у меня есть какое-то объект, на который другие системы(классы, объекты) должны повлиять. Я могу в каждой другой системе создавать такую команду? Например, если в этой игре была, какая-то сущность, которая тоже создавалась и добавляла свои ходы? Или эти системы просто будут содержать сслыку на фабрику все команд?
Я бы все таки старался придерживаться принципа SRP и так или иначе сделал бы, чтобы в итоге фабрика была в одном месте и только она создавала бы команду. Наверное - это можно делать посредством ивентов - в вашей новой системе что-то происходит - она отправляет событие - кто-то на данное событие реагирует и вызывает фабрику
Как всегда шикарен 🔥 Объяснение пушка 🔥🔥🔥
похоже на кусочек ecs
А что именно?
@@sergeykazantsev1655 там так же события пускаются в общем потоке и системы их так же ловят и обрабатывают в свое время
Мой первый +- серьезный проект был как раз TD(Обожаю этот жанар). Данный опыт показал мне как много я не знаю
Мне даже сейчас TD делать непросто)
Как же меня убивают эти всплывающие картинки, особенно при большом определении
Спасибо! Неизменно лучшее объяснение!
Мама я влюбился. Краткое объяснение как все +- работает(я уж привык что подобные вещи по часу объясняют).Ссылка на проект с РАЗНОЙ реализацией одного проекта. Ссылки на других авторов которые тоже объясняют тему. Подробные тайм коды. Вот это я называю любовь с первого взгляда
Объяснение теории прямо доступнее некуда 🔥 Не первый раз замечаю, что у автора талант объяснять сложные концепции простыми словами 👍
Круто рассказываешь, tnx
Лицо збс!
На днях задумался изучить и ролик очень кстати. Получить понимание и штурмовать доки. Спасибо!
очень четко и кратко. хорошо использовать, как шпаргалку
Сережа спасибо!
Спасибо за видео! Подозреваю, тут должна быть ссылка на телеграм в описании)
я слышал что с WebGL работают только корутины. r3 и UniRx работаю с WebGL?
Сложный вопрос. Сам не пробовал сочетать R3 и WebGL Гугл говорит, что работает наполовину и с костылями. github.com/neuecc/UniRx/issues/206 Думаю, проще вам самим попробовать установить и поиграться
@@sergeykazantsev1655 спасибо. Если под капотом в R3 нигде нет async то вроде должно работать
25:15 здесь разве не нужно использовать отписку?
Так это же Player, на стороне источника нет отписки
21:44 Зачем так делать, если можно все преобразования сделать в теле Subscribe? Так более читаемо получается?
Да, так более читаемо. Те же Take,Skip и прочее тоже можно в теле Subscribe сделать - но так менее читаемо и наглядно
Вы просто золото! Спасибо вам огромное за ваши видео. Очень полезно и очень понятно.
Отличное видео, тем более что про R3 их не так много на Ютубе. Скажите, вы некоторые мемы сами делаете?)
Ну картинки не мои, текст мой)
Какая имба! Чел спасибо, позже обязательно изучу!
Спасибо за видео! Вдохновил на изучение R3!
Нашёл то что мне точно может понадобиться наверное даже в новых скорых проектах, хорошее видео, ожидаем ещё крутых видосов
Предоставленные примеры довольно легко реализуются и без реактивщины. Создаётся ложное впечатление, что это просто удобный синтаксический сахар. Возможно нужны примеры посложнее. Вот учёт предыдущих эвентов это уже интересно, особенно при подписке.
По моему мнению некоторые вещи удобнее делать реактивщиной. Те же ежесекундные интервалы или выполнение команд с задержкой. Да, можно их с помощью корутин реализовать или юнитаск но тут они выглядят компактнее Да и тот же throttle, skip, take не особо хочется писать заново каждый раз. Кстати, сам автор r3 на гитхабе доказывает что r3 крайне хорош по перфомансу.
Отлично постарались! Я больше полугода вдуплял в реактивщину, а вы тут рассказываете за полчаса. Новичкам пойдёт. Видео окупается, конкретно
Ого, вовремя видео в рекомендации залетело. Как раз раздумываю над добавлением реактивщины в проект. Спасибо!
Я первый)) спасибо за видос) удачи
Не признаю выделение абстракции в самостоятельный принцип. По сути она является частью каждого из трех принципов, а определение абстракции и полиморфизма вообще практически идентично.
что ты мандякаешь, только дибилы писали дулированый код для каждого юнита. Нормальные писали это в отдельном методе, а в юнитах его использовали. Все вы фанаты ооп выставляете другие методики в плохом свете, описывая полные дибильные решение. А вот на ооп, о чудо, решается и только там. Всё решается во всех подходах, если вы не знаете как, то кто дибил?