Тёмный

Нодовая архитектура на Unity 

Code Craft: Unity Edition
Подписаться 2,2 тыс.
Просмотров 3,6 тыс.
50% 1

Опубликовано:

 

27 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 50   
@mstislav.pavlov
@mstislav.pavlov Год назад
Сомневаюсь, что такая архитектура это хорошая практика. Во первых, если речь о стратегия, то там MUST - dod, ибо перформенс. То что тут названо "нодами", это типичные контексты\скоупы, которые из коробки во всех известных DI-контейнерах. Ну и наконец про контекстые эвенты. Такой подход работает только в микро играх. В хоть сколько нибудь сложной игре, таких эвентов наберутся сотни и получится настоящий event-hell, а проект станет неподдерживаемым. Так что отмечу, что это концептуально не правильный подход. Ожидая эвент, мы как правило ожидаем, что какие то данные изменились, и нам нужно выполнить какие то действия, например обновить UI. Проблема в том, что это лишь предположение, которое держится на знаниях о проекте у разработчиков, но никак не поддерживается дизайном архитектуры. Следственно, если в проект добавить разработчика, то он может что то сломать, сам того не зная. Вместо эвентов, нужно отслеживать изменения данных которые реально нужны. Но что бы выстроить такой дизайн, как раз и нужно реально уметь в архитектуру.
@MikhailKolobovGamedevForge
@MikhailKolobovGamedevForge Год назад
Согласен! Как будто бы такая архитектура вылезает просто из нежелания разобраться в уже существующих подходах)
@CodeCraftUnityEdition
@CodeCraftUnityEdition Год назад
DOD и перформанс - это разные вещи. Задача DOD - разделить данные и логику, чтобы код механик можно было переиспользовать и собирать из них игровые модели как конструктор. Задача перформанса - увеличить производительность и уменьшить расходы памяти. По поводу эвентов, ивенты должны быть только системные. В остальных случаях применяется обычный паттерн "Наблюдатель", которые как раз и подписываются на изменения данных :)
@MikhailKolobovGamedevForge
@MikhailKolobovGamedevForge Год назад
​@@CodeCraftUnityEdition Снова хромает матчасть. DOD только и создано для обеспечения перфоманса. Данные встают впереди абстракций и поддерживаемости только в целях производительности. К нему идут свою плюшки такие как параллельность и простота тестирования, но тестируемым кодом на видео и не пахнет) Само утверждение что "при DOD можно переиспользовать код" означает слабое понимание ООП и его возможностей... Жаль, что в настоящее время Senior Unity Developer'ы, создающие каждый день собственные архитектуры, так и не узнали что все архитектуры уже давно создали)
@mstislav.pavlov
@mstislav.pavlov Год назад
@@CodeCraftUnityEdition dod это data oriented design. Дизайн ориентированный на данные, это вовсе не про: "разделить данные и логику", а про организацию испольняемого кода (включая данные в памяти офк) таким образом, что бы он был кешлайн френдли, для извлечения перформенса который мы теряем при классическом подходе. А разделение данных и логики, это вообще база, которая относится чуть меньше чем к любому подходу. Что касается обычного паттерна наблюдателя, то обычная реализация должна реализовывать IObservable. Если этого не делается, значит это уже не обычная реализация. А если не обычная, то возникает вопрос, зачем? Вы используте IObservable? Если нет, то почему?
@германпопов-з2ь
братан от души)), а на самом деле спасибо вам огромное за то что делитесь опытом проектирования архитектуры. После таких видео дополнительно прорабатываешь материал и понемногу саморазвиваешься)
@GiftedMamba
@GiftedMamba Год назад
Не ври, все мы знаем, что ты делаешь велосипеды просто потому, что ты их любишь делать)!
@Hidzikata
@Hidzikata Год назад
Нифига себе - вот это работа, такой контент надо продвигать, один из самых качественных на ютубе даже среди англоязычных каналов! Огромное спасибо!
@ДенисКаширин-ш9ч
О информацию про архитектуру, благодарю
@DiKarDev
@DiKarDev Год назад
Не могу выразить даже, как это круто и как это "ко времени" для меня!
@infavi
@infavi Год назад
Сумасшедший контент, спасибо вам огромное за работу!
@АнтонЕлумеев
@АнтонЕлумеев Год назад
За видосы по архитектуре можно по 10 лайков ставить, жаль нельзя!)
@DekovirDekovir-is7wd
@DekovirDekovir-is7wd 19 дней назад
А что если нужно посчитать дамаг игрока 1 по игроку 2 учитывая атаку игрока 1 и защиту игрока 2? Я хочу сказать, что когда я делал игру с двумя игроками мне пришлось сперва инжектить дочерние а потом родительские контексты. Потому что нужны были глобальные сервисы имеющие ссылки на сервисы обоих игроков чтобы организовывать их взаимодействие. У вас только стрелки вниз. Может я не понимаю как это сделать? Или у вас получается ecs косвенно ссылается на данные всех игроков?
@ИгорьСлепков-х3с
Спасибо. И ещё четыре слова.
@Lucio11a
@Lucio11a 9 месяцев назад
Так то идея того же зенжекта была простая изначально. Просто потом туда начали добавляю свою фабрику, свои пулы и кучу других инструментов, в итоге раздувая плагин и усложняя быстрое освоение.
@CodeCraftUnityEdition
@CodeCraftUnityEdition 4 месяца назад
Да, поэтому прелести Zenject'а можно вкурить только на большом проекте :)
@Evgenyi_Kolovratov
@Evgenyi_Kolovratov Год назад
Круто! и доступно!
@daemonstergames716
@daemonstergames716 Год назад
Шикарно 😊
@Ra5ta
@Ra5ta Год назад
Велосипедный спорт, но почему бы и нет
@родионпапиж
@родионпапиж 4 месяца назад
Могу ли я использовать эту архитектуру не только к стратегии, но или например к рпг, экшену и тд?
@CodeCraftUnityEdition
@CodeCraftUnityEdition 2 месяца назад
В целом да)
@alexkazimir3835
@alexkazimir3835 11 месяцев назад
Думал, что здесь какая-то вариация акторной модели для игростроя
@CodeCraftUnityEdition
@CodeCraftUnityEdition 11 месяцев назад
Не оч понял про акторную модель
@alexkazimir3835
@alexkazimir3835 11 месяцев назад
@@CodeCraftUnityEdition название и постановка вопроса создали ложные представления
@MikhailKolobovGamedevForge
@MikhailKolobovGamedevForge Год назад
А зачем называть контексты "нодами"?) Типа чтобы выглядело как СОБСТВЕННАЯ НЕ ТАКАЯ КАК ВСЕ АРХИТЕКТУРА? А не просто как калька на любой DI фреймворк? Выглядит просто как попытка скрыть непонимание существующих принципов за "созданием новых решений" Жаль что видимо на хабре не сложилось засорять умы такими "революционными" решениями, пришлось идти на ютуб за более несмышленной аудиторией)
@CodeCraftUnityEdition
@CodeCraftUnityEdition Год назад
На самом деле, это, действительно, собственная архитектура для моего проекта, и я ее назвал нодовой, потому что она фактически строится на одном классе контекста. А статья на хабре будет :)
@MikhailKolobovGamedevForge
@MikhailKolobovGamedevForge Год назад
​@@CodeCraftUnityEdition Все еще не звучит как хоть какая-то разница между этим и любым DI-фреймворком) Скорее как неумение им пользоваться С тем же успехом можно назвать Model-View-Controller как Data-Presentation-Manager и назвать это "собственной архитектурой для моего проекта"
@Memstorm
@Memstorm Год назад
Пожалуйста помогите как убрать розовый фон когда хочешь сделать проект
@CodeCraftUnityEdition
@CodeCraftUnityEdition Год назад
Какой розовый фон?
@A113-t6k
@A113-t6k Год назад
Так и не стало понятно, почему не подошел ZEnject? Чего в нем не хватило?
@CodeCraftUnityEdition
@CodeCraftUnityEdition Год назад
Zenject можно юзать, я просто люблю велосипеды :) А так в Zenject'е нет системы игровых событий, ее нужно допиливать к нему
@A113-t6k
@A113-t6k Год назад
Понял, спасибо@@CodeCraftUnityEdition
@MikhailKolobovGamedevForge
@MikhailKolobovGamedevForge Год назад
@@CodeCraftUnityEdition В Zenject'e есть шина событий, просто называется она Signals)
@MrKingofTiger
@MrKingofTiger Год назад
а в чём прикол использовать старую систему ввода живущую в Update, а не новую на событиях?
@CodeCraftUnityEdition
@CodeCraftUnityEdition Год назад
Тут был просто пример на старой, особо на этом не фокусировал внимание :)
@admenmod
@admenmod 25 дней назад
разочарую вас этот подход как раз более простой и уже давно придуман, в юнити как раз реализован более сложный и более подходящий для игр архитектурный подход
@РоманВоронин-н7и
Ну, для меня, как для новичка, информация сложна. На малых проектах такое может и не нужно. Но, смотрю, опытные гуру в комментах тоже не довольны))
@CodeCraftUnityEdition
@CodeCraftUnityEdition Год назад
Привет! На малых проектах такое, действительно, не нужно. В моем случае проект большой, поэтому мне такое нужно :)
@РоманВоронин-н7и
@РоманВоронин-н7и 10 месяцев назад
@@CodeCraftUnityEdition еще раз пересмотрел, спустя два месяца собственных подуг в разработке (я еще совсем новичок). По-другому восприниматеся. Сам столкнулся с проблемой инициализации компонентов в игре и с жесткой привязкой к монобехам. Попробую базовые принципы перенять. Спасибо. Ты молодец!
@JanitorDoshiraak
@JanitorDoshiraak Год назад
Го видос про туман войны!
@JanitorDoshiraak
@JanitorDoshiraak Год назад
Реально годных ресурсов на эту тему на просторах просто нет.
@CodeCraftUnityEdition
@CodeCraftUnityEdition Год назад
Сделать бы еще туман войны... 😄
@NoldoWalker
@NoldoWalker Год назад
Канал интересный, подача хорошая, спасибо за труды.
@RealWof
@RealWof Год назад
Вызов событий у слушателей происходит в порядке добавления и если важен порядок вызова, то такая реализация не подходит.
@CodeCraftUnityEdition
@CodeCraftUnityEdition Год назад
В целом, все так, но обычно порядок вызова не важен :)
@MrFtik
@MrFtik Год назад
КаеФ, спасибо за видео! 100500 лайков этому господину!🎉
@Andrey-mr5wf
@Andrey-mr5wf Год назад
яхай! Снова годный контент по юньке подъехал. От души ❤
@antigames4656
@antigames4656 Год назад
Эх нового видео долго нет. А люди ждут 😊
@CodeCraftUnityEdition
@CodeCraftUnityEdition Год назад
Скоро!
@antigames4656
@antigames4656 Год назад
@@CodeCraftUnityEdition отлично !
Далее
TEAM SPIRIT: НОВЫЙ СОСТАВ. SEASON 24-25
01:31
Паттерн Стратегия в Unity
21:38
Просмотров 6 тыс.
TEAM SPIRIT: НОВЫЙ СОСТАВ. SEASON 24-25
01:31