Зачем разделять модель игры и визуал? Что такое модель игры?
HTML-код
- Опубликовано: 25 янв 2024
- Понравилось видео? Поддержи Лавку Разработчика!
www.donationalerts.com/r/game...
boosty.to/gamedevlavka
paypal.me/gamedevlavka
Для понимания паттернов программирования, мало их просто знать, важно еще понимать, зачем их вообще применять. То есть не в плане конкретной задачи, а глобально. Зачем это все? Все эти правила, ООП, SOLID? В видео я отвечаю на вопрос: зачем разделять модель игры от визуала. Конечно, предварительно мы разберемся, что это вообще такое - модель игры? С визуалом-то более-менее понятно. В общем, если хотите задержаться в геймдеве надолго - очень рекомендую"
Отсылки:
t.me/gamedevlavka - телеграм канал Лавки Разработчика
t.me/gamedevtavern - ламповый чат
/ discord - дискорд
Было бы интересно глянуть этот же материал тока с наложением на небольшой проект. К примеру пусть игрок может только стрелять по одной мишени и за каждое попадание ему начисляются очки которые отображаются на экране, или что то схожее но где объясняться будет не только на UI или куске геймплея а сразу на всем. И уже на этом примере показать как реализуются model и view а так же как они соединяются. Видосов с объяснением разных паттернов много, но там зачастую всё сводится к конкретному паттерну и локальному примеру, от чего все еще не достает понимание как в целом проект строить (тобишь мне надо сделать по одной здоровой модели и вьюхе на весь проект, или делать их отдельно на разные логические сущности такие как игрок, мишень, пуля, строчка со счетом и т.д.?).
Отличный комментарий с хорошим примером того, что хотелось бы увидеть. Звучит как не бесконечное количество работы. Обязательно сделаю подобное видео!
Соглы. Включил видео, думал щас на примерах раскидает как батя, в итоге очередное фуфло на схемах.
Поддерживаю, не совсем понятно, что представляет из себя view в unity, просто ui или модели персонажей, или же это monobehavior'ы. Как, допустим, отделять логику передвижения от модели персонажа, если логика исполняется в update в monobehavior, а monobehavior должен висеть на моделе, получается что логика висит на view? Хотелось бы увидеть это на примере.
Когда начинаешь работать на реальных масштабных коммерческих проектах, то понимаешь что все эти архитектурные вещи придумали не с бухты-барахты.
Я думал ты напишешь "Когда начинаешь работать на реальных масштабных коммерческих проектах, то понимаешь что все эти архитектурные вещи тебе не всрались"
@@igorgrischenko6518неее, причём все эти правила применяются не только в играх, но и в разработках на других языках.
Потому что это все большой пузырь. Я работал с такими псевдоархитекторами, которые делали "как большие дядьки", но вот толку не было никакого, все только усложняло расширяемость. Вместо создания игр сидят дрочатся с кодом в 5 раз дольше для той же фичи.
@@--.-- чел, я уже больше 10 лет в геймдеве, ни разу не использовал эти паттерны и удивительным образом чувствую себя комфортно. Мне обещали, что в геймдеве я долго не задержусь, но сейчас это моя основная работа.
@@--.-- я просто всё жду, когда же наступит тот момент, когда мне понадобится применить хотя бы один из этих паттернов.
Топчик. Ждем курс)
Самый лучший контект по Unity здесь! Как всегда!
Создай пожалуйста архитектуру с нуля, для универсальности подойдет какой-нибудь тавердефенс или 3 в ряд)
Я так понимаю, запрос сделать архитектуру без фреймворков, чтобы так сказать чистое понимание того, как это происходит получить. Но нужна игра, где поменьше визуала, и правил немного, а то я до пенсии буду такое снимать)
@@gamedevlavka Можно на квадратиках кружочках)
@@gamedevlavka ну понг или арканойд примитивные для видимости игры сделать можно, или кликер который собирает монетки в вакууме)
Нужно еще было уточнить, что состояния бывают двух видов: зависящие от предыдущих шагов и независящие. Это очень важно, нужно нам хранить историю игры (в том или ином виде) или нет.
Помогло, помогает и еще поможет!)
Хотелось бы видео о разных вариантах хранения конфигов. SO, JSON, таблицы с реализацией вложенности данных типа конфига одного вида врага с разным оружием.
эта тема будет актуальна всегда
Огонь инфа!❤🔥
Было бы супер видеть примеры с кодом.. можно бегло и в кратце☺
Спасибо большое за информацию!
Скажи пожалуйста, а может в одном проекте быть и MVO и MVP и PM, к примеру?
К примеру, если у меня View должна только отображать, мне нужен один паттерн, а если на другой View у меня есть инпут, то мне надо менять данные?
Вероятно у тебя недостаточное понимание этих паттернов, потому что нет никаких проблем использовать один паттерн и для отображения и для инпута. MV* паттернов разница лишь в том, кто кем управляет.
По поводу, можно ли использовать: ну, на собственном проекте тебя за это никто не побьет, а при работе в команде скорее всего будут жалобы, так что крайне не рекомендую
Про автоматическое тестирование ещё можно было накинуть. При разделении - сильно проще обвесить.
Согласен
Теория класс, осталось в Юнити показать)
P.S. будет время, расскажи про Дефолд, сам стал использовать, на первый взгляд классный и простой (пока на первый взгляд). Только нужно язык Lua знать.
Допустим, мне нужно переключать анимации в логике игры, но как я понял, анимация - это визуал. Можно примерное объяснение, как это сделать, при условии, что скрипты модели игры должны работать отдельно от визуала
Ура новое видео🎉🎉🎉
Сложно))) но общий смысл понятен. Так то все логично и правильно, осталось только понять как это для себя применить))
Опа годнота подъехала🔥
Классный материал. Теперь буду его пересылать вместо долгих объяснений. Так как тут все по факту как есть. особенно понравилось в конце объяснения о том что это для нас (разработчиков нам же удобнее) + о том что бизнесу порой это выгодно.
мне перешлёшь ? 😅
@@maksimsazanovich6087 :3
Было бы очень круто, если ты запишешь курс!
Каждый день в зеркало себе это повторяю)
ну окей хорошо, ты сейчас описал архитектуру игрового движка. Но че делать с анрилом или юнити? У них объектный подход. мы просто донастраиваем подсистемы. глупо писать универсальный код например тогоже инвентаря под юнити и анриал. потому что разработка парсера займет столько же мремени как и система с нуля
Только мне непонятно, как в Юнити всё это разделить на слои, если там в один GameObject условного персонажа напиханы и его логика, и данные о его состоянии, и его вьюшка.
Нужны примеры кода.
Ролик огонь, но хотелось бы примера такого проекта в unity, чтобы наглядно показать, как прослойка диспетчеризует данные между моделью и визуалом
Все последовательно, положили в голову абстракцию, перейдем и к реализации. Если бы я объяснял на движке сразу, то зрители бы подумали, что это часть разработки конкретно на юнити. А это часть вообще разработки, независимо от движка, независимо даже от того, делаешь ты игру в электронном виде или на картонке.
Следующий этап - как раз объяснение, что это значит на примере в юнити
@@gamedevlavka Отлично! Ждём!
Хотя в целом видео да данном канале весьма не плохи, и какие то отдельные темы рассматривают очень даже не плохо. Но вот с общей теорией что то не пошло.
В кружке контрооллер ?
В кружке "вставьте свой вариант перемычки", контроллер - в случае использования MVC, вьюмодель для MVVM и так далее
Привет лавка. Сделай видео пожалуйста о том как стать разработчиком игр и научиться программировать или может курс для от новичка до хорошего специалиста 🥹
just do it!
Ты не хочешь записать серию туториалов по Cocos creator вижу он у тебя установлен. На данный момент он стал очень популярен, но каких то обучающих материалов на русском фактически нет в отличие от юнити по которому у тебя достаточно много роликов и не проблема все это найти в различных и видеокурсах и просто в открытом доступе. Думаю если бы ты снял туториал по кокосу то сделал бы много для комьюнити так как на доанный момент только один канал я нашел который записывает какие то туториалы и то не нормальный курс от начала и до конца а просто какие-то фишки типа как сделать это например управление.
Да, по кокосу мало материалов, катастрофически мало. У меня на опыте пока только один проект, надо еще один развернуть (хотя бы развернуть), чтобы можно было запускать что-то по кокосу. Материал очень востребован, это я как человек, который только что через все это дер** прошел, подтверждаю)
@@gamedevlavka Ну надеюсь если разберешься, то сделаешь туториал) Во всяком случае именно этого я жду. Я фактически всю инфу по нему беру с офф канала. Я знаю английский для того чтобы большую часть понимать, но все равно приходится перепроверять по субтитрам. Вообщем буду рад за туториал, ну и думаю это поможет каналу вырасти так как люди ищут инфу по нему.
Схемки не помогут новичкам и бесполезны для уже опытных разработчиков. Если цель чему-то научить народ, то лучше на базе проекта показать, пусть даже учебного.
Автор видимо много перечитал теории но вообще не шарит за практику, все объяснения просто сферический конь в вакууме. Модель это не статик дата и данные прогресса. Модель это вообще вся игра и данные этой модели например в Юнити будут разбросаны вообще по всему проекту. Потому что например физические показатели объекта это тоже модель, или например состояние анимации если на ее ключах завязана логика это тоже модель, по этому выделить это вот так просто в квадратик просто не реально. Тоже самое касается и Визуала, исходя из видео так визуал это только HUD и UI, но визуал это все, это меши или спрайты, это их анимации, это их физика, это работа навмешей которая неразрывна с объектами которые являются носителями Модели. По этому вообще не реально просто взять и заменить Визуал, это возможно на каком то крайне простом проекте типо крестики нолики или морской бой, где сама игра, ее дата и логика влезает в один скрипт, да тогда можно это все вывести в отдельную абстракцию и писать к этому только какой то визуал на юнити, или анриале или просто на хтмл. А про франщизу лего и ГОНОЧКИ в СИТИ БИЛДЕР, вообще просто шиза, причем тут визуал?! Визуал который (View) это не набор моделек это ЛОГИЧЕСКИЙ СЛОЙ программы! Сожалею, но автор просто насыпал мусора в голову и так мало что понимающим людям.
браво
Мне очень жаль, что у меня не вышло донести ту информацию, что я пытался донести. Возможно, потому что я явно не объявил, что под визуалом я понимаю картинки, модельки, звуки и др + логику их обработки. Предположение об отсутствии практики у меня не отражает действительность. Мне грустно, от того, что существуют уверенные утверждения типа "например состояние анимации если на ее ключах завязана логика это тоже модель", или "не реально просто взять и заменить Визуал, это возможно на каком то крайне простом проекте типа крестики нолики". Анимация - это лишь вариант инпута, если на ее ключах завязана логика. А про нереальность замены движка/визуала я вообще молчу. На моем опыте свап движка на мидкорной игре, где модель игры сохраняется, и меняется только движок. Если у автора комментария был неудачный опыт с подобными задачами, это не значит, что это невозможно.
Ну, и скажу так: если бы ко мне в команду разработки просился кандидат с подобными самоуверенными заявлениями про модель игры, то предложение о работе он навряд ли получил бы.
Поддерживаю @alopar181. Автор видео кринж вообще. Рескин игры, а модель не трогать. Ага, ну да, очень смешно. А то, что в коммерческих проектах нельзя сделать просто рескин, потому что где-то отличается логика автор не знает.
@@igorgrischenko6518 видимо, вы не сталкивались с задачами на рескин, это объясняет ваш некомпетентный ответ
@@gamedevlavka ага, ищи оправдания, пытаясь опустить разработчика с 10 летним стажем.
Гарне відео. На рахунок інвентарю, у одному зі своїх проектів(Explore to Survive) використовував scriptable object для нього(Є безліч переваг та недоліків такого методу), зараз же намагаюся створити іншим способом, де кожен предмет буде більш гнучким до змін, маючи можливість задавати більш випадкові значення одного типу
Спасибо за урок.
Присоединяюсь к @user-rp4yt9kb4l. Хотелось бы увидеть как выглядит применение этого урока на каком-нибудь элементарном проекте, но уже не с Debug.Log, а с простеньким визуалом.
Еще вопрос: Вы сказали, что кружок по сути - это контроллер. Тогда получается, что это не MV архитектура, а MVC. Разве не так?
Когда говорят MV* архитектура, то имеют ввиду обобщенно любую из них: MVC, MVP, MVVM