Архитектура проекта в Unity. Часть 1

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

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

  • @eugene8863
    @eugene8863 3 года назад +54

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

  • @tigerjustice
    @tigerjustice 5 месяцев назад +1

    Это невероятно полезная тема. Большое спасибо Вам за эту серию уроков

  • @tovkats
    @tovkats 3 месяца назад +1

    Бро, ты - КРАСАВА!!!!!!!!!
    Спасибо за ролик!

  • @josephlevy3348
    @josephlevy3348 3 года назад +5

    Это просто сокровище какое-то

  • @Jourdfdf
    @Jourdfdf 6 месяцев назад +1

    Перерыла весь ютюб в поиске это инфы, спасибо!

  • @HelloWorld-ln5cy
    @HelloWorld-ln5cy 3 года назад +7

    Твой канал прямо находка, спасибо за видео, годнота.

  • @VonBreuss
    @VonBreuss 3 года назад +27

    Как не хватает такого материала на ютубе.) Однозначная подписка с колокольчиком. Только не останавливайся!

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

      Сейчас небольшой перерыв, занимаюсь переездом, но скоро вернусь)

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

      Поддерживаю твои слова! ) Честно, я даже не догадывался о таком способе. Меня это заставило переосмыслить свой код..

  • @bombilovka16gd17
    @bombilovka16gd17 Год назад +1

    Ух, это было мощно!)
    Продолжай в том же духе, у тебя все круто получается!!!

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

    После прохождения junior pathway на unity learn не мог найти хорошие уроки, это то что мне нужно, спасибо за крутой обучающий контент!)

  • @Fenix72rus
    @Fenix72rus 3 года назад +3

    Обожаю этот канал

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

    Спасибо за видео

  • @bagi_bk
    @bagi_bk 3 года назад +3

    Очень хорошая подача материала!!! Спасибо!!!

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

    Очень интересно! Спасибо за урок!

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

    Отличные и полезные уроки!👍

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

    Ты крутой. Продолжай

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

    Хороший урок.
    Было бы круто если бы вы объяснили про абстракции и назначение абстракций объектам. Но и так не плохо!)
    Добра вам)

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

    Было очень интересно) Жду следующего видео!

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

    Очень полезно!

  • @РсК-о6ч
    @РсК-о6ч 3 года назад +1

    оч полезно. Крутотень

  • @ИванРодионов-е4е
    @ИванРодионов-е4е 7 месяцев назад +1

    Добрый день! Такой вопрос, вы оставили свойство Coins с публичным сеттером, правильно ли это? Мы же сможем изменить его из любого класса или я что то не понял...

  • @MikhailKolobovGamedevForge
    @MikhailKolobovGamedevForge 2 года назад +7

    "Репозиторий - это просто название, которое так уж сложилось в жизни что данные будут храниться в репозитории..."
    Репозиторий - это вполне конкретный паттерн, который абстрагирует хранение данных от предметной логики. То есть предоставляет необходимый интерфейс для приложения с необходимыми ему методами (например: выбрать по id, выбрать все по какому-то признаку, удалить и тд), но само хранение данных делает деталью реализации.
    Таким образом предметной области становится без разницы, где лежат данные (в scriptable object, в json на устройстве или на сервере) и как они обрабатываются.

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

    Привет! После просмотра второго видео заметил сущность Bank и там статика. Зачем она нужна? Если можно просто в тестере обращаться что-то типо такого:
    _bankInteractor.AddCoins(10);
    Просто смысла в этой статике не вижу

  • @kellerkey
    @kellerkey 2 месяца назад

    Актуально ещё?

  • @DeadRabbitCanDance
    @DeadRabbitCanDance 5 месяцев назад

    Хорошие у тебя лекции!
    Подскажи пожалуйста, а есть у тебя что то по архитектуре сетевого взаимодействия? Организация обновления мира, состояний и т.д. Как организовать клиент-серверную архитектуру правильно, чтобы важные вычисления, влияющие на основной геймплей (например попадания) считались на сервере, а клиент занимался только отрисовкой красот?

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

    А можно где-то найти мануалы или книги про то как нужно проектировать в Юнити или в других игровых движках?

    • @dehaproject
      @dehaproject Год назад

      Спустя 2 года спрошу, как успехи?

  • @qweerval
    @qweerval Год назад

    Для меня произошла какая-то магия
    почему данные сохранились при повторном старте игры? где именно это прописано?

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

    читая комментарии, посмотрев, какие слова люди употребляют в своих рассуждениях, внезапно почувствовал себя деревенским дурачком

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

    Спасибо за видео. очень интересно. Хочу спросить один вопрос, такой уровень навыка программирование в рабочей сфере(например в компаниях) должен быть у каждого джуниора или это уже навыки мидла?

    • @gamedevlavka
      @gamedevlavka  3 года назад +3

      Это уже навыки мидла. Если джуниор умеет в архитектуру, то это скорее всего уже не джуниор)

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

      @@gamedevlavka понятно, спасибо

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

      @@gamedevlavka Раз тут вопрос про джуна) Что на практике нужно уметь джуну по юньке - чтобы устроиться на работу?) Я просто проект для портфолио делаю (полностью свой, а не по гайдам или тип того), парочка механик уже сделана (строительство, взаимодействие с интерфейсем, отправка советников в регионы и доставка в регионы к ним приказов (генерация курьера), управление камерой (2d), экономика базовая).

    • @gamedevlavka
      @gamedevlavka  3 года назад +6

      Смотря в какой геймдев рвешься. Больше требуются в мобильный.
      - Опыт любых проектов приветствуется. Коммерческий проект в приоритете - все платформы
      - Знание и понимание ООП, более менее красивый и читабельный код - все платформы
      - Любой опыт запуска проекта в стор (Google Play, App Store) - мобильные платформы
      - Умение использовать плагины (настраивать внутреигровые покупки, рекламу, аналитику) - все платформы, кроме монетизации.
      - Умение собирать билды для GP и/или AppStore - мобильные платформы.
      С таким набором можно куда-то приткнуться, но честно скажу, чем лучше код (четкое понимание ООП, использование паттернов в правильных местах, красивый и читаемый код), тем больше шансов. Даже если остальное недотягивает. Ибо остальное подучить - дело быстрое, а обучить программированию дольше.

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

      @@gamedevlavka если дам доступ посмотреть на гитхабе проект, дашь оценку?)))

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

    А можно ссылку на урок про который вы говорили про ивенты? не нашел у вас на канале

  • @qwerty6vov
    @qwerty6vov 2 года назад +2

    хороший урок и диктор, спасибо! Не подскажешь, твой подход имеет что-то общее с подходами MVVM или MVP или еще чем-то, или он совсем уникальный? Хочется понять немного близко ли это к стандартизированным подходам? Насколько такой подход востребован в студиях?
    Заранее спасибо!

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

      Есть общее с MVC, где View - это UI, controller это интерактор, в Model - это репозиторий. Так как я выводил эту архитектуру самостоятельно, то сходства весьма слабые, но очевидные. Сейчас перепиливаю архитектуру с нуля, делаю все гораздо лучше :)

    • @qwerty6vov
      @qwerty6vov 2 года назад +2

      @@gamedevlavka спасибо) надеемся тоже расскажете потом в видео новые версии, очень интересно было бы)

    • @user-xl2tf4gq1g
      @user-xl2tf4gq1g 2 года назад +1

      @@gamedevlavka я не гейм-дев, но с Android. То, что ты показал, относится к Clean Architecture. Клин - не замена MVC/MVP/MVVM/MVI. Клин - общий. В клине есть место для презентационного слоя, куда входят MV* типы архитектур.
      И одно не понял с передачей sender в interactor: зачем интерактору знать про какие-то эффекты? Не должно ли это находиться в презентационном слое?

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

    Доброго времени суток, вопрос по архитектуре. Разве должен bankInteractor знать кто его юзает? Его функция ведь в добавлении монеток, а знание кто его юзает - ему не нужно. Или создание некого "GameController" который раскидает по евентам функцию добавления монеток по кол-ву, и затем при условном подборе мы просто заколим евент на подобранную сумму - это плохо? Если да - то чем?

  • @ЭдуардКик
    @ЭдуардКик 2 года назад +1

    Спс

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

    Ты когда то писал приложения для android? Репозиторий популярный шаблон там)

  • @quieteroks
    @quieteroks Год назад

    В конце прозвучала плохая фраза "отделять данные от их обработки". Это один из вариантов, но он приносит к сожалению много боли и дублирования кода. Ну а репозиторий желательно должен предоставлять доступ к сущности, а не к данным.

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

    Ну в общем классика - MVC (Model, View, Controller)
    Только что называется иначе

  • @mixer9524
    @mixer9524 Год назад

    А каким образом в репозитории сохраняется информация после завершения программы?

    • @newgrafon
      @newgrafon Год назад +1

      загугли что такое PlayerPrefs в юнити

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

    Почему ты сделал абстрактные классы, а не интерфейсы?

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

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

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

    В общем чем-то напоминает UI - BLL -DAL структуру из бизнес приложений.

  • @paimonc8593
    @paimonc8593 Год назад +1

    что за ide?

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

    Спасибо за видео!
    Только есть вопрос: это ECS ? И если нет, то можно ли сочетать эту архитектуру и ECS?

    • @МихаилСуворов-к2щ
      @МихаилСуворов-к2щ 2 года назад +2

      Это однозначно не ECS. У ECS дргуие слои. E это Entity (Сущьность), C - Component (Компонет), S - System (Система). Они тоже взаимоимодействуют друг с другом. Но по особому

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

    По сути очень напоминает MVC структуру. По сути репозиторий, это модель(Model). Interactor это контроллер(Controller), а вся остальная игровая логика, это представление(View).

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

      Согласен, напоминает. Но я бы не стал проводить аналогию между View и геймплеем

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

      Да на первый взгляд как mvc но если присмотреться то Вью нету по сути интерактор и репозиторий выполняют роль модели, геймплей возможно как контроллер а Вью просто нету)

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

      @@Sv9zlsT я бы в качестве представления (view) предложил бы интерфейс, так как, по сути, это и есть представление игровых данных, то есть модели, которой управляет геймплей в качестве контроллера. Как вам такой вариант?

  • @КонстантинПостукян
    @КонстантинПостукян 3 года назад +2

    Интересно, но вот this глаз режет. Почему бы не соблюдать нотацию и начинать приватные поля с _ ? Райдер ведь подсказывает что this нужен был только в конструкторе. С _ решили бы проблему с this.

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

      Вот здесь, я писал, почему я пишу this везде:
      t.me/gamedevlavka/15

    • @Какиграть-д6ю
      @Какиграть-д6ю 3 года назад

      Да, я тоже удивился. Потому что привык к нижнему подчёркиванию.

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

      тоже пишу с this.

  • @star_killer121
    @star_killer121 Год назад

    Зачем ты используешь this при обращении к полям класса?
    Методы и переменные находятся в единой зоне видимости в классе

  • @GameStormable
    @GameStormable Год назад

    Так это же обычный MVC, нет?

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

    День добрый ! Интересно с вами пообщаться на тему совместной работы над проектом...

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

      Приветствую! По таким вопросам удобнее общаться в телеграм: @vavilichev

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

    В других курсах интеракторы называют сервисами, а репозиторий - ассет провайдером

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

    Надеюсь список сущностей архитектуры будет собираться через рефлексию? Не зря же им как метка был сделан базовый абстрактный класс..., Хотя и через интерфейс можно было)

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

      Не через рефлексию, через конфиги.. при помощи конфигов, можно делать наборы интеракторов и репозиториев для каждой сцены отдельно)

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

    Правильно ли я понимаю, что файл "репозиторий" - по сути - база данных?

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

      Скорее контейнер с данными. Их можно передавать и забирать откуда-то.

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

    Мужик в сером на фоне красного ковра :)

  • @Tornado-ln7fq
    @Tornado-ln7fq 2 года назад

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

    • @vlader776
      @vlader776 Год назад +1

      Все в разработке строится на ООП. Каждый игровой объект описывается в классе, в котором прописываешь основную логику этого объекта. Грубо говоря, есть войн у которого есть health, damage, он может принимать дамаг и умирать. А есть игрок, который тот же войн, только управляется через userInput и есть враг, который управляется с помощью ии. Зачем делать дубляж кода для Врага и Игрока, если можно создать абстракцию (шаблон), которым ты опишешь общую логику двух объектов, а потом дополнишь в другом классе их особенности. Но ужаснее всего описывать логику врага и игрока в рамках одного класса..

    • @Tornado-ln7fq
      @Tornado-ln7fq Год назад

      @@vlader776 Вот я про это и говорю.

  • @zeverz9621
    @zeverz9621 Год назад

    Не совсем понимаю зачем нам сущность дробить на интерактор и репозиторий. Не проще ли реализовать сущность с помощью интерфейсов (интерактор и репозиторий) и мы также сможем всем этим управлять, только уже через интерфейсы и не надо будет дублировать инициализацию.

  • @ilgiz2616
    @ilgiz2616 2 года назад +2

    Автор похоже не из шарпа пришел в программироdание - стиль кода что то на JS похоже ))) Особенно скобки на одной строке и публичные поля с маленькой буквы )

    • @vlader776
      @vlader776 Год назад

      Скорее, в компании, в которой он работает такой КодСтайл

  • @ProCLickM
    @ProCLickM Год назад +1

    ПОдписка)

  • @oneprogofficial
    @oneprogofficial 10 месяцев назад

    Зачем столько лишних this?

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

    Зачем вы придумываете всякие глупости? Архитектура должна помогать разработке, а не её запутывать. Вначале надо ставить цель - какие преимущества вы хотите получить, не нарушив ООП, а уже в рамках этого писать свой код.

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

    Мне эта архитектура не понравилась, создание репозитория в MonoBehavior это зашквар. А где DI контейнер? А как же тесты потом гнать если всё во вьюхах? А почему mediator не применить для развязки? А почему Command и транзакционную обработку не применить, для модификации моделей? ... ??? не буду продолжать ??? ...

  • @morons9156
    @morons9156 6 месяцев назад

    Данная информация всё ещё актуальна и полезна начинающим разработчикам (коим являюсь я)? Такой же вопрос к плейлисту "Устарело. На пересъёмку". Я начал смотреть, для новичка выглядит очень полезно, но название "устаревшее" немного смущает.

    • @chernos
      @chernos 6 месяцев назад

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

    • @chernos
      @chernos 6 месяцев назад

      Сейчас видеоблогер снимает серию видео по созданию игры, рекоммендую к просмотру.