- 27
- 199 280
Sergey Kazantsev
Germany
เข้าร่วมเมื่อ 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
th-cam.com/video/kFoBvjwzbNA/w-d-xo.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, OnNext, Suscribe, AddTo, Dispose
12:37 Subject + Where
14:10 OnCompleted
15:15 Observable.Timer
16:15 Observable.Interval
17:07 Observable.EveryUpdate
17:42 Disposable.Dispose
18:27 Throttle
19:38 Take
20:25 Skip
20:47 Prepend
21:26 Select
22:02 ReplaySubject
22:43 Chunk
23:27 Merge
24:10 Reactive Properties
25:39 Полезные материалы по R3 и UniRx
26:40 Финал
R3 и UniRx в студию!
ссылка на гитхаб на проект
github.com/Haywaar/PatternDemoStorage - пример с реактивными методами
Лежит по пути Assets/R3Demo/
тг нашего уютного сообщества t.me/UnitistNotes
Ссылки на полезные ресурсы:
github.com/Cysharp/R3
th-cam.com/video/kFoBvjwzbNA/w-d-xo.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, OnNext, Suscribe, AddTo, Dispose
12:37 Subject + Where
14:10 OnCompleted
15:15 Observable.Timer
16:15 Observable.Interval
17:07 Observable.EveryUpdate
17:42 Disposable.Dispose
18:27 Throttle
19:38 Take
20:25 Skip
20:47 Prepend
21:26 Select
22:02 ReplaySubject
22:43 Chunk
23:27 Merge
24:10 Reactive Properties
25:39 Полезные материалы по R3 и UniRx
26:40 Финал
มุมมอง: 1 697
วีดีโอ
Ошибочные убеждения начинающих разработчиков, Unity, C#, gamedev
มุมมอง 3.7K4 หลายเดือนก่อน
Попробовал более разговорный формат, есть несколько вещей, которыми хотелось бы поделиться. Как вам? Автору на смузи и брокколи 4276 5500 5792 8742 - карта Сбербанка Тайминги: 00:00 Введение 01:09 Большую часть времени разработчики пишут код? 03:18 ChatGPT, копайлоты и нейросети повышают скилл разработчика? 07:15 Большие амбиции и желание ухватить всё везде и сразу 09:35 Желание быстрых результ...
Паттерн Decorator, Декоратор Unity, C#, gamedev
มุมมอง 3K5 หลายเดือนก่อน
Ставь лайк если ООП течёт в твоих венах, раскаляя сердца и вырывается на поверхность! ссылка на гитхаб на проект 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.8K7 หลายเดือนก่อน
Один из самых непростых паттернов на моём канале. Встречайте, паттерн Command! Напишите пожалуйста, насколько вас раздражает звук ибо мне показалось что фильтр шумоподавления неестественно искажает голос и ухудшает восприятие. На этом ролике я полностью фильтр отключил ссылка на гитхаб на проект github.com/Haywaar/ShawarmaFight - проект с шаурмой github.com/Haywaar/PatternDemoStorage - пример с...
Паттерн State, паттерн состояние, Unity C#
มุมมอง 5K8 หลายเดือนก่อน
Новый видосик по паттерну 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.5K9 หลายเดือนก่อน
Наконец-таки разобрал зенджект на практике, как многие из вас просили. Напишите пожалуйста, обратную связь по более живому формату видео. Мне такой формат лично не очень нравится, так как кажется что я много косноязычу и э-каю и бэ-каю, но возможно вам нравится более подробный и не такая сухая подача Ссылка на гитхаб на проект github.com/Haywaar/ShawarmaFight Автору на кофе и шаурму 4276 5500 5...
Паттерны на практике 2, шавушный анонс, Unity, C#
มุมมอง 1.1K9 หลายเดือนก่อน
Завёз вам прогрев о грядущих видеороликах) Надеюсь, понравится) Ссылка на гитхаб на проект github.com/Haywaar/ShawarmaFight Автору на кофе и шаурму 4276 5500 5792 8742 - карта Сбербанка Если будут вопросы мой тг @wargy моя почта kazancev.s215@gmail.com Тайминги: 00:00 Введение 00:29 О чём новая игра? 01:30 Какие темы мы рассмотрим? 04:03 Финал
Zenject, внедрение зависимостей, Unity C#
มุมมอง 7K11 หลายเดือนก่อน
Как говорится "Давненько тебя не было видно на уличных гонках" Гитхаб на проект с демкой из видео: github.com/Haywaar/PatternDemoStorage Лежит по пути Assets/Patterns/DIExample Assets/Patterns/DIExample_Zenject Там же и демо сцены с контекстом Автору на кофе и шаурму 4276 5500 5792 8742 - карта Сбербанка Полезные ресурсы на которых можно узнать Zenject получше Яковлев Илья th-cam.com/video/jVFX...
Принципы ООП, инкапсуляция, абстракция, наследование, полиморфизм, Unity, C#
มุมมอง 14Kปีที่แล้ว
Решил вместо редких паттернов рассказать самую базу, так как годный материал по этой теме разбросан по всему интернету Гитхаб на проект с демкой из видео: github.com/Haywaar/PatternDemoStorage Лежит по пути Assets/Patterns/OOPExampleBad Assets/Patterns/OOPExampleGood Там и демка с аптечкой и с расчётом стоимости юнитов Автору на кофе и шаурму 4276 5500 5792 8742 - карта Сбербанка Если будут воп...
Vertical Scroller - заключение, Паттерны на практике, DialogManager, Entry Point, Unity C#
มุมมอง 2.5Kปีที่แล้ว
Ох, ребятушки, вроде темы небольшие, но запотеть пришлось знатно. Так как было много именно практики - мало красивых схем и много трансляций записи с кода. Надеюсь, вам понравилось :) Ссылка на гитхаб игры: github.com/Haywaar/VerticalScrollerExample Автору на кофе и шаурму 4276 5500 5792 8742 - карта Сбербанка Если будут вопросы мой тг @wargy моя почта kazancev.s215@gmail.com Тайминги: 00:00 Вв...
Object Pool, Пул объектов, Паттерны на практике, Unity, C#
มุมมอง 6Kปีที่แล้ว
Ссылка на гитхаб игры: 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#
มุมมอง 10Kปีที่แล้ว
Ссылка на гитхаб игры: 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#
มุมมอง 7Kปีที่แล้ว
Разобрал один из любимых мною паттернов, которые с точки зрения ООП гигачадов часто может стать анти-паттерном Ссылка на гитхаб: github.com/Haywaar/VerticalScrollerExample Автору на кофе и шаурму 4276 5500 5792 8742 - карта Сбербанка Если будут вопросы мой тг @wargy моя почта kazancev.s215@gmail.com Тайминги: 00:00 Введение 00:22 Проблема: доступ между классами и сложная инициализация 02:15 Опр...
Паттерны на практике, анонс, Unity, C#
มุมมอง 2.9Kปีที่แล้ว
Потихоньку стартую рубрику "Паттерны на практике" и запилил вот такое видео анонс, чтобы подбодрить вас и чуть больше замотивировать себя. Видео по Service Locator th-cam.com/video/1QdOkqBLnp0/w-d-xo.html Ссылка на гитхаб: github.com/Haywaar/VerticalScrollerExample Автору на кофе и шаурму 4276 5500 5792 8742 - карта Сбербанка Если будут вопросы мой тг @wargy моя почта kazancev.s215@gmail.com Та...
Model View ViewModel, Модель Вид Модель Вида, Unity, C#
มุมมอง 12Kปีที่แล้ว
Пожалуй, паттерн на который я потратил больше всего времени 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
มุมมอง 12Kปีที่แล้ว
Model View Presenter, MVP, Модель Вид Представитель, С#, Unity
Model View Controller, MVC, Модель Вид Контроллер, C#, Unity
มุมมอง 14Kปีที่แล้ว
Model View Controller, MVC, Модель Вид Контроллер, C#, Unity
Паттерн Abstract Factory, Абстрактная фабрика, C#, Unity
มุมมอง 17Kปีที่แล้ว
Паттерн Abstract Factory, Абстрактная фабрика, C#, Unity
Паттерн Factory Method, Фабричный метод, С#, Unity
มุมมอง 14Kปีที่แล้ว
Паттерн Factory Method, Фабричный метод, С#, Unity
Советы новичкам при поиске первой работы, unity, gamedev
มุมมอง 2.7Kปีที่แล้ว
Советы новичкам при поиске первой работы, unity, gamedev
Dependency Injection, С#, Внедрение зависимостей, unity, gamedev
มุมมอง 19Kปีที่แล้ว
Dependency Injection, С#, Внедрение зависимостей, unity, gamedev
SOLID, 1.5 DIP - Dependency Inversion Principle, Принцип инверсии зависимости, С#, Unity
มุมมอง 9Kปีที่แล้ว
SOLID, 1.5 DIP - Dependency Inversion Principle, Принцип инверсии зависимости, С#, Unity
SOLID, 1.4 ISP - Interface Segregation Principle, Принцип разделения интерфейса , С#, Unity
มุมมอง 3.5Kปีที่แล้ว
SOLID, 1.4 ISP - Interface Segregation Principle, Принцип разделения интерфейса , С#, Unity
SOLID, 1.3 LSP - Liskov Substitution Principle Принцип подстановки Лисков - С#, Unity
มุมมอง 4.9Kปีที่แล้ว
SOLID, 1.3 LSP - Liskov Substitution Principle Принцип подстановки Лисков - С#, Unity
SOLID, 1.2 OCP - Open Closed Principle, Принцип открытости закрытости, С#, Unity
มุมมอง 4.2Kปีที่แล้ว
SOLID, 1.2 OCP - Open Closed Principle, Принцип открытости закрытости, С#, Unity
SOLID, 1.1 SRP - Single Responsibility Principle, Принцип Единственной ответственности, С#, Unity
มุมมอง 6Kปีที่แล้ว
SOLID, 1.1 SRP - Single Responsibility Principle, Принцип Единственной ответственности, С#, Unity
Крайне рекомендую использовать реактивные свойства реализованные у нового плагина R3 от создателя UniTask и UniRX
По ним даже видео на канале есть
В целом всё круто, но с тем, что в разработке приложений больше подходит supervising controller, чем passive view, не согласен. Мне лично гораздо удобней работать со вторым. Да и в Unity примерах везде используется именно passive view.
Совершенно не понимаю зачем стрелять самому себе в ногу, ради связности? У EventBus больше минусов чем решение проблем 1) Учитывая, что не все действия подписываються и отписываются только на старте сцены и ее закрытии (а и в динамике в рантайме.), это означает аллокации GC за каждую подписку и отписку (которых нет при обычном связном способе). 2) Проблема дебага кода, получиш ошибку в этом автобусе, если проект большой, потом сиди ищи, что конкретно вызвало ошибку! 3) Удар по производительности в больших проектах! Так как опять же если в рантайме подписываться и отписываться , то учитывая что события автобуса, может держать в себе тысячи подписчиков, а еще и проверка при подписке, а нет ли уже этого подписщика в автобусе (это по сути перебор и сравнение тысяч подписчиков). А теперь представте, что у вас подписка и отписка может происходить, по несколько раз в секунду. 4) Проблема очередности вызова! Если нам нужно что бы одно событие всегда вызывалось перед другим событием! И тут возникает главный вопрос, а стоит ли решение одной трудности (даже не проблемы, а удобства) внедрением куча новых проблем?
А какие вы можете предложить правильные и удобные альтернативы?
довольно приятно. но возникает вопрос. если например таких разностей много, например есть оружие армор и ювелирка, и они могут затачиватся, то выходит тоже вешать интерфейс еще 1? А если раздновидностей итемов слишком много и например 40% имеют общее и так по 5 раз. То есть есть множество имеет етук одинаковую функу но их слишком много(фунок) - но и ко всем не применишь - ибо не ко всем применима. но и интерфейсов же не будешь 7+ ростягивать?
Если у вас в игре будет так много сущностей, тогда лучше это делать не через методы в самих объектах, а создавать классы-менеджеры, которые принимают решение какие кнопки показывать, какие опции доступны, а какие нет. Но это уже более сложные решения)
Кто нибудь сталкивался с такой проблемой? Я добавил R3 в проект и написал простой ежесекундный счетчик времени, через Interval, так как в видео. Но почему то Textmeshprougui.text, не отрисовывался, но изменялся, но самое странное то, что выполнялись только первые 2 строчки кода, а всё остальное нет. Как это решить?
У меня была проблема с размером текста, он не влезал в контейнер и потому исчезал. Второй раз было похожее, что вы пишете, в едиторе в компоненте текст меняется, а визуально нет. Но по-моему я поменял тип компонента и все заработало. Может где-то в настройках TMP это по другому фиксится
@sergeykazantsev1655 спасибо за помощь
Подскажите пожалуйста, если я создаю абстрактную фабрику для создания противников рационально создавать enemy state machine для контроля анимаций и действий ?
Мне кажется рационально. Тут главное подумать, должна ли быть одна Стейт машина на всех врагов или по одной Стейт машине на врага. Второй вариант мне кажется прозрачнее
Спасибо!
Супер, доступно даже для такого пенька как я. Спасибо!
Самое понятное объяснение с крутой анимацией для понимания, которе я видел на youtube. Сегрей, большое спасибо!👍
Спасибо за качественное объяснение, вроде давно про реактивное программирование знаю, но углублённого понимания не сформировал)
спасибо, очень нравится ваш канал👍
Спасибо!
а UnityEvent'ы тоже сюда подходят?
Да, на 11:10 как раз про это и говорил
Моё почтение! Спасибо большое!
@sergeykazantsev1655 здравствуйте не забрасывайте канал, спс вам большое, делайте больше контента и у вас будут 1 000 000 подписчиков современим
Здравствуйте, скажите, пожалуйста, почему в примере для проверки, является ли юнит кратным 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 точно не скоро)
@@sergeykazantsev1655 жаль, очень было здорово и полезно 🥰🔥
@@sergeykazantsev1655 ждем 🙌
Автора рекомендую, приятно посмотреть. 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
Лицо збс!
На днях задумался изучить и ролик очень кстати. Получить понимание и штурмовать доки. Спасибо!
очень четко и кратко. хорошо использовать, как шпаргалку
Сережа спасибо!
Спасибо за видео! Подозреваю, тут должна быть ссылка на телеграм в описании)