Зачем разделять модель игры и визуал? Что такое модель игры?

Поделиться
HTML-код
  • Опубликовано: 25 янв 2024
  • Понравилось видео? Поддержи Лавку Разработчика!
    www.donationalerts.com/r/game...
    boosty.to/gamedevlavka
    paypal.me/gamedevlavka
    Для понимания паттернов программирования, мало их просто знать, важно еще понимать, зачем их вообще применять. То есть не в плане конкретной задачи, а глобально. Зачем это все? Все эти правила, ООП, SOLID? В видео я отвечаю на вопрос: зачем разделять модель игры от визуала. Конечно, предварительно мы разберемся, что это вообще такое - модель игры? С визуалом-то более-менее понятно. В общем, если хотите задержаться в геймдеве надолго - очень рекомендую"
    Отсылки:
    t.me/gamedevlavka - телеграм канал Лавки Разработчика
    t.me/gamedevtavern - ламповый чат
    / discord - дискорд

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

  • @user-rp4yt9kb4l
    @user-rp4yt9kb4l 4 месяца назад +16

    Было бы интересно глянуть этот же материал тока с наложением на небольшой проект. К примеру пусть игрок может только стрелять по одной мишени и за каждое попадание ему начисляются очки которые отображаются на экране, или что то схожее но где объясняться будет не только на UI или куске геймплея а сразу на всем. И уже на этом примере показать как реализуются model и view а так же как они соединяются. Видосов с объяснением разных паттернов много, но там зачастую всё сводится к конкретному паттерну и локальному примеру, от чего все еще не достает понимание как в целом проект строить (тобишь мне надо сделать по одной здоровой модели и вьюхе на весь проект, или делать их отдельно на разные логические сущности такие как игрок, мишень, пуля, строчка со счетом и т.д.?).

    • @gamedevlavka
      @gamedevlavka  4 месяца назад +7

      Отличный комментарий с хорошим примером того, что хотелось бы увидеть. Звучит как не бесконечное количество работы. Обязательно сделаю подобное видео!

    • @igorgrischenko6518
      @igorgrischenko6518 4 месяца назад

      Соглы. Включил видео, думал щас на примерах раскидает как батя, в итоге очередное фуфло на схемах.

    • @nikotinStudio
      @nikotinStudio 4 месяца назад +2

      Поддерживаю, не совсем понятно, что представляет из себя view в unity, просто ui или модели персонажей, или же это monobehavior'ы. Как, допустим, отделять логику передвижения от модели персонажа, если логика исполняется в update в monobehavior, а monobehavior должен висеть на моделе, получается что логика висит на view? Хотелось бы увидеть это на примере.

  • @xagent
    @xagent 4 месяца назад +11

    Когда начинаешь работать на реальных масштабных коммерческих проектах, то понимаешь что все эти архитектурные вещи придумали не с бухты-барахты.

    • @igorgrischenko6518
      @igorgrischenko6518 4 месяца назад +5

      Я думал ты напишешь "Когда начинаешь работать на реальных масштабных коммерческих проектах, то понимаешь что все эти архитектурные вещи тебе не всрались"

    • @AqVadPlay
      @AqVadPlay 4 месяца назад

      ​@@igorgrischenko6518неее, причём все эти правила применяются не только в играх, но и в разработках на других языках.

    • @--.--
      @--.-- 4 месяца назад +1

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

    • @igorgrischenko6518
      @igorgrischenko6518 4 месяца назад +1

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

    • @igorgrischenko6518
      @igorgrischenko6518 4 месяца назад +1

      @@--.-- я просто всё жду, когда же наступит тот момент, когда мне понадобится применить хотя бы один из этих паттернов.

  • @user-kr5mh2vd3v
    @user-kr5mh2vd3v 4 месяца назад +1

    Топчик. Ждем курс)

  • @andreiraketa6300
    @andreiraketa6300 4 месяца назад +4

    Самый лучший контект по Unity здесь! Как всегда!

  • @user-vg8xf6xy4s
    @user-vg8xf6xy4s 4 месяца назад +9

    Создай пожалуйста архитектуру с нуля, для универсальности подойдет какой-нибудь тавердефенс или 3 в ряд)

    • @gamedevlavka
      @gamedevlavka  4 месяца назад +2

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

    • @vanchette1040
      @vanchette1040 4 месяца назад

      @@gamedevlavka Можно на квадратиках кружочках)

    • @user-vg8xf6xy4s
      @user-vg8xf6xy4s 4 месяца назад +1

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

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

    Нужно еще было уточнить, что состояния бывают двух видов: зависящие от предыдущих шагов и независящие. Это очень важно, нужно нам хранить историю игры (в том или ином виде) или нет.

  • @StratoCatster
    @StratoCatster 4 месяца назад +1

    Помогло, помогает и еще поможет!)

  • @aleksey2793
    @aleksey2793 4 месяца назад +3

    Хотелось бы видео о разных вариантах хранения конфигов. SO, JSON, таблицы с реализацией вложенности данных типа конфига одного вида врага с разным оружием.

  • @metal_burn
    @metal_burn 4 месяца назад +2

    эта тема будет актуальна всегда

  • @happytablo
    @happytablo 4 месяца назад +4

    Огонь инфа!❤‍🔥
    Было бы супер видеть примеры с кодом.. можно бегло и в кратце☺

  • @npve4312
    @npve4312 4 месяца назад +1

    Спасибо большое за информацию!
    Скажи пожалуйста, а может в одном проекте быть и MVO и MVP и PM, к примеру?
    К примеру, если у меня View должна только отображать, мне нужен один паттерн, а если на другой View у меня есть инпут, то мне надо менять данные?

    • @gamedevlavka
      @gamedevlavka  4 месяца назад

      Вероятно у тебя недостаточное понимание этих паттернов, потому что нет никаких проблем использовать один паттерн и для отображения и для инпута. MV* паттернов разница лишь в том, кто кем управляет.
      По поводу, можно ли использовать: ну, на собственном проекте тебя за это никто не побьет, а при работе в команде скорее всего будут жалобы, так что крайне не рекомендую

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

    Про автоматическое тестирование ещё можно было накинуть. При разделении - сильно проще обвесить.

  • @nikitalisitsyn
    @nikitalisitsyn 4 месяца назад +3

    Теория класс, осталось в Юнити показать)
    P.S. будет время, расскажи про Дефолд, сам стал использовать, на первый взгляд классный и простой (пока на первый взгляд). Только нужно язык Lua знать.

  • @kamen583
    @kamen583 4 месяца назад +1

    Допустим, мне нужно переключать анимации в логике игры, но как я понял, анимация - это визуал. Можно примерное объяснение, как это сделать, при условии, что скрипты модели игры должны работать отдельно от визуала

  • @user-wq2cl7hl1o
    @user-wq2cl7hl1o 4 месяца назад +1

    Ура новое видео🎉🎉🎉

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

    Сложно))) но общий смысл понятен. Так то все логично и правильно, осталось только понять как это для себя применить))

  • @RimuruDev
    @RimuruDev 4 месяца назад +2

    Опа годнота подъехала🔥

  • @RimuruDev
    @RimuruDev 4 месяца назад +1

    Классный материал. Теперь буду его пересылать вместо долгих объяснений. Так как тут все по факту как есть. особенно понравилось в конце объяснения о том что это для нас (разработчиков нам же удобнее) + о том что бизнесу порой это выгодно.

  • @Veles017
    @Veles017 4 месяца назад +1

    Было бы очень круто, если ты запишешь курс!

    • @gamedevlavka
      @gamedevlavka  4 месяца назад +2

      Каждый день в зеркало себе это повторяю)

  • @IllidanZur
    @IllidanZur 4 месяца назад

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

  • @igor_mutny
    @igor_mutny 4 месяца назад

    Только мне непонятно, как в Юнити всё это разделить на слои, если там в один GameObject условного персонажа напиханы и его логика, и данные о его состоянии, и его вьюшка.

  • @user-qe2tx7ox1g
    @user-qe2tx7ox1g 12 дней назад

    Нужны примеры кода.

  • @Blin_Blinskii
    @Blin_Blinskii 4 месяца назад +1

    Ролик огонь, но хотелось бы примера такого проекта в unity, чтобы наглядно показать, как прослойка диспетчеризует данные между моделью и визуалом

    • @gamedevlavka
      @gamedevlavka  4 месяца назад +2

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

    • @Blin_Blinskii
      @Blin_Blinskii 4 месяца назад +2

      @@gamedevlavka Отлично! Ждём!

  • @alopar181
    @alopar181 4 месяца назад +1

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

  • @maksymz6695
    @maksymz6695 4 месяца назад +1

    В кружке контрооллер ?

    • @gamedevlavka
      @gamedevlavka  4 месяца назад +1

      В кружке "вставьте свой вариант перемычки", контроллер - в случае использования MVC, вьюмодель для MVVM и так далее

  • @shepa4208
    @shepa4208 4 месяца назад

    Привет лавка. Сделай видео пожалуйста о том как стать разработчиком игр и научиться программировать или может курс для от новичка до хорошего специалиста 🥹

  • @GbyGRus
    @GbyGRus 4 месяца назад +3

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

    • @gamedevlavka
      @gamedevlavka  4 месяца назад

      Да, по кокосу мало материалов, катастрофически мало. У меня на опыте пока только один проект, надо еще один развернуть (хотя бы развернуть), чтобы можно было запускать что-то по кокосу. Материал очень востребован, это я как человек, который только что через все это дер** прошел, подтверждаю)

    • @GbyGRus
      @GbyGRus 4 месяца назад +1

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

  • @user-sn6xn1zx1v
    @user-sn6xn1zx1v 4 месяца назад +1

    Схемки не помогут новичкам и бесполезны для уже опытных разработчиков. Если цель чему-то научить народ, то лучше на базе проекта показать, пусть даже учебного.

  • @alopar181
    @alopar181 4 месяца назад +11

    Автор видимо много перечитал теории но вообще не шарит за практику, все объяснения просто сферический конь в вакууме. Модель это не статик дата и данные прогресса. Модель это вообще вся игра и данные этой модели например в Юнити будут разбросаны вообще по всему проекту. Потому что например физические показатели объекта это тоже модель, или например состояние анимации если на ее ключах завязана логика это тоже модель, по этому выделить это вот так просто в квадратик просто не реально. Тоже самое касается и Визуала, исходя из видео так визуал это только HUD и UI, но визуал это все, это меши или спрайты, это их анимации, это их физика, это работа навмешей которая неразрывна с объектами которые являются носителями Модели. По этому вообще не реально просто взять и заменить Визуал, это возможно на каком то крайне простом проекте типо крестики нолики или морской бой, где сама игра, ее дата и логика влезает в один скрипт, да тогда можно это все вывести в отдельную абстракцию и писать к этому только какой то визуал на юнити, или анриале или просто на хтмл. А про франщизу лего и ГОНОЧКИ в СИТИ БИЛДЕР, вообще просто шиза, причем тут визуал?! Визуал который (View) это не набор моделек это ЛОГИЧЕСКИЙ СЛОЙ программы! Сожалею, но автор просто насыпал мусора в голову и так мало что понимающим людям.

    • @vladpacifier
      @vladpacifier 4 месяца назад

      браво

    • @gamedevlavka
      @gamedevlavka  4 месяца назад +1

      Мне очень жаль, что у меня не вышло донести ту информацию, что я пытался донести. Возможно, потому что я явно не объявил, что под визуалом я понимаю картинки, модельки, звуки и др + логику их обработки. Предположение об отсутствии практики у меня не отражает действительность. Мне грустно, от того, что существуют уверенные утверждения типа "например состояние анимации если на ее ключах завязана логика это тоже модель", или "не реально просто взять и заменить Визуал, это возможно на каком то крайне простом проекте типа крестики нолики". Анимация - это лишь вариант инпута, если на ее ключах завязана логика. А про нереальность замены движка/визуала я вообще молчу. На моем опыте свап движка на мидкорной игре, где модель игры сохраняется, и меняется только движок. Если у автора комментария был неудачный опыт с подобными задачами, это не значит, что это невозможно.
      Ну, и скажу так: если бы ко мне в команду разработки просился кандидат с подобными самоуверенными заявлениями про модель игры, то предложение о работе он навряд ли получил бы.

    • @igorgrischenko6518
      @igorgrischenko6518 4 месяца назад

      Поддерживаю @alopar181. Автор видео кринж вообще. Рескин игры, а модель не трогать. Ага, ну да, очень смешно. А то, что в коммерческих проектах нельзя сделать просто рескин, потому что где-то отличается логика автор не знает.

    • @gamedevlavka
      @gamedevlavka  4 месяца назад

      @@igorgrischenko6518 видимо, вы не сталкивались с задачами на рескин, это объясняет ваш некомпетентный ответ

    • @igorgrischenko6518
      @igorgrischenko6518 4 месяца назад

      @@gamedevlavka ага, ищи оправдания, пытаясь опустить разработчика с 10 летним стажем.

  • @morkovkazet666
    @morkovkazet666 4 месяца назад +1

    Гарне відео. На рахунок інвентарю, у одному зі своїх проектів(Explore to Survive) використовував scriptable object для нього(Є безліч переваг та недоліків такого методу), зараз же намагаюся створити іншим способом, де кожен предмет буде більш гнучким до змін, маючи можливість задавати більш випадкові значення одного типу

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

    Спасибо за урок.
    Присоединяюсь к @user-rp4yt9kb4l. Хотелось бы увидеть как выглядит применение этого урока на каком-нибудь элементарном проекте, но уже не с Debug.Log, а с простеньким визуалом.
    Еще вопрос: Вы сказали, что кружок по сути - это контроллер. Тогда получается, что это не MV архитектура, а MVC. Разве не так?

    • @gamedevlavka
      @gamedevlavka  2 месяца назад +1

      Когда говорят MV* архитектура, то имеют ввиду обобщенно любую из них: MVC, MVP, MVVM