Проект

Поделиться
HTML-код
  • Опубликовано: 15 июл 2024
  • Поддержать проект можно по ссылкам:
    www.donationalerts.com/r/game...
    boosty.to/gamedevlavka
    paypal.me/gamedevlavka
    Просили третью сцену? Добавляем третью сцену с главным меню! Пока визуально все выглядит скудно, зато архитектурная база понятна! Да, с оговорочками, но это исключительно для того, чтобы не перегрузить видео разнородной информацией, чтобы лучше усвоилось. Шаг за шагом. Итеративный подход! Короче, смотрите уже!
    Описание игры в телеграм-канале Лавки Разработчика:
    t.me/c/1748704478/7458
    Проект на GitHub:
    github.com/vavilichev/mBuilding
    Отсылки:
    t.me/gamedevlavka - телеграм канал Лавки Разработчика
    t.me/gamedevtavern - ламповый чат
    / discord - дискорд
    __________
    0:00 Вступление-демонстрация
    1:39 Почему не не будем использовать стейт машину
    3:20 Начинаем работу с IU (а то у нас его еще нет толком)
    4:06 Правки внутри UIRoot префабе
    5:22 Добавляем функционал для UIRootView
    7:44 Готовим префабы для UI на сценах Gameplay и MainMenu
    9:06 Пишем UIGameplayRootBinder - баиндер для рутового UI объекта на сцене Gameplay
    11:10 Правим точку входа на сцену Gameplay
    13:43 Правим GameEntryPoint и смотрим промежуточный этап
    14:49 Готовим сцену для MainMenu
    15:50 Готовим запуск сцены MainMenu из точки входа в игру
    17:50 Готовим точку входа в сцену MainMenu и другие скрипты идентично сцене Gameplay
    20:00 Доготавливаем сетап сцены и ссылки и смотрим, что получилось с MainMenu
    21:03 Дописываем переходы по сценам (грязно, потому что мы бандиты)
    22:15 Результаты и заключительные пояснения

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

  • @dm1tryrin
    @dm1tryrin 9 дней назад +1

    Спасибо за SceneManagment! И спасибо что читаешь комментарии! Очень ценный канал.

  • @def6141
    @def6141 6 дней назад +1

    Ждём видосы почаще ;)

  • @whatareulookingat235
    @whatareulookingat235 17 дней назад +2

    Ждал продолжения и вот оно вышло ❤. Хочу сказать спасибо за такой обучающий конент.

  • @dm1tryrin
    @dm1tryrin 9 дней назад +1

    Еще было интересно про хорошую систему DataPersistence между сценами

  • @user-nz1lx8iq8b
    @user-nz1lx8iq8b 17 дней назад +1

    🔥🔥🔥!
    Большое спасибо, и жду продолжения!

  • @nikaragisgames
    @nikaragisgames 17 дней назад +1

    Великолепно! Большое спасибо, что сделали!👍

  • @user-pm4ec5em4p
    @user-pm4ec5em4p 17 дней назад +8

    Лучше любого курса за 50 000 руб и всяких "летних лагерей" имени краснознаменного Сакутина

  • @astar0th609
    @astar0th609 17 дней назад +1

    Супер, спасибо!

  • @StratoCatster
    @StratoCatster 17 дней назад +1

    А они все ложат и ложат!)

  • @MrGolovewkin
    @MrGolovewkin 14 дней назад +2

    Супер! Спасибо большое! Еще бы понять как Di юзать. Ок, мы в точке входа все засетапили, но я так понимаю, к контейнеру нужен глобальный доступ. Через singleton? Чувствую это как то красивее можно сделать....

    • @gamedevlavka
      @gamedevlavka  14 дней назад

      @@MrGolovewkin все будет, нужно подождать) двумя словами понятно не описать)

  • @romanbolkun3353
    @romanbolkun3353 19 часов назад

    Привет, теперь стало намного понятней как взаимодействовать между меню и геймплей сценой. Есть вопрос как переключать несколько геймплей сцен. Я планирую делать игру с несколькими локациями, в которых геймплей будет идентичен, а переключение между локациями происходит не из меню, а с помощью вызова канваса на кнопку ESC и выбора локации из списка. В даном случае переключение геймплей локации будет на стороне скрипта канваса который хендлит все ето? Или можно как то прикрутить все в глобальний SceneManagement?

  • @Vorono4ka
    @Vorono4ka 17 дней назад +1

    Класс, спасибо за видео! А есть какое-то расписание выхода? Курс смотреть и игру делать хочется, а ролики непонятно когда выходят

    • @gamedevlavka
      @gamedevlavka  17 дней назад +1

      @@Vorono4ka пока конкретно по проекту видео выходят раз в 1-2 недели, чаще у меня просто физически не получается

  • @maxwad
    @maxwad 4 дня назад +1

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

    • @gamedevlavka
      @gamedevlavka  3 дня назад

      План более менее есть, но ты накидывай, вдруг чего упускаю)

  • @shpeenut
    @shpeenut 17 дней назад +1

    еще вопрос: в методе RunGame(), в проверке на имя сцены главного меню, есть смысл от return? просто в видео ты его не написал, а у меня он написан :D

    • @gamedevlavka
      @gamedevlavka  16 дней назад +1

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

  • @HizusHiz
    @HizusHiz 16 дней назад +1

    Почему такая нелюбовь к экшинам? Так ли реактивный подход лучше?

    • @gamedevlavka
      @gamedevlavka  16 дней назад +1

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

  • @zeOnni
    @zeOnni 17 дней назад

    Это такая ловушка. Месяц придумываешь архитектуру вместо того что бы писать игру.

    • @gamedevlavka
      @gamedevlavka  17 дней назад +1

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

    • @igor_mutny
      @igor_mutny 16 дней назад

      Вообще еще Иисус в Нагорной проповеди намекал на то, что дом нужно строить на каменном фундаменте, а не на песочке... Хотя да, на закладку фундамента, конечно, требуется время.

    • @zeOnni
      @zeOnni 16 дней назад +1

      @@igor_mutny у меня достаточно опыта. Я соглашусь что разработчику нужно пойти через solid, ioc контецнеры. Обмазать всё интерфейсами. Проникнуться TDD.
      Я скорее сомневаюсь что этому можно научиться не набивая шишки. Сложно объяснить зачем нужна инверсия управления на примере. Это будет выглядеть как ненужное переусложнение.

  • @shpeenut
    @shpeenut 17 дней назад +1

    прости, что за Canvas (Environment) в префабах UI? Видимо у меня из за его отсутствия неправильно аттачатся префабы UI к основному UIRoot

    • @gamedevlavka
      @gamedevlavka  17 дней назад

      Скажи временную метку, а то я что-то не понимаю вопроса

    • @shpeenut
      @shpeenut 17 дней назад

      @@gamedevlavka 7:52, в префабах самый первый объект Canvas (Environment)

    • @gamedevlavka
      @gamedevlavka  17 дней назад

      Долго не мог понять о чем речь, но все таки понял)
      Нет, это не причина. Canvas (Environment) - это подсказка, что префаб работает в окружении Canvas, а не World, то есть координаты работают по-другому. Смотри внимательней, где-то что-то пропустил)

    • @shpeenut
      @shpeenut 17 дней назад +1

      @@gamedevlavka всё, разобрался. спасибо

    • @alexesipenko3413
      @alexesipenko3413 9 дней назад

      @@gamedevlavka как так получилось, что GameplayUI не содержит Canvas? Что еще за окружение? У меня при добавлении Image в GameplayUI автоматически создается Canvas, а на видео этого нет. Из-за этого при старте игры UI неправильно центрируется.

  • @astar0th609
    @astar0th609 17 дней назад +1

    А ничего что про загрузке между сценами мы каждый раз переходим в бут сцену? Или в дальнейшем этого перехода не будет?

    • @gamedevlavka
      @gamedevlavka  17 дней назад +2

      Об этом я пояснял в предыдущем видео, это лучшая практика, если хочешь избежать проблем создания новых объектов, пока старые ещё не удалились (в юнити новая сцена стартует раньше, чем старая уничтожается)

    • @DarkIllusoire
      @DarkIllusoire 17 дней назад

      Это костыль с верой в чистое будущее, чтобы не делать асинхронную выгрузку сцены

    • @gamedevlavka
      @gamedevlavka  17 дней назад

      @@DarkIllusoire некоторые платформы требуют переходы между сцен делать через пустую сцену (например, нинтендо), вероятно у них там свои "нюансики".
      Переход через пустую сцену не обеспечивает исключение асинхронной выгрузки, но делает этот процесс понятнее и менее рискованным

    • @DarkIllusoire
      @DarkIllusoire 17 дней назад

      @@gamedevlavka а можно еще примеры платформ, где это требуется, кроме нинтендо? Можно так же пример обсуждения этой проблемы на нинтендо, очень интересно почитать решение данной рпоблемы?

  • @igor_mutny
    @igor_mutny 16 дней назад +1

    При виде "грязного вонючего кода" глаза не закрывал, потому что у меня чистовые варианты ничуть не лучше 🤣 Вот прямо вот так и делаю: вешаю на кнопку скрипт с Action'ом, ОченьВажныйCoreОбъект подписывается на этот Action и по нажатию кнопки запускает ОченьВажныеCoreМетоды 🤣 Даже не представляю, как это должно реализовываться по-нормальному.
    Пока до конца не вкурил, почему UI делается НАСТОЛЬКО отдельно от содержимого сцены (ну, DontDestroyOnLoad с "глобальным" загрузчиком UI-ев и прочее).

    • @gamedevlavka
      @gamedevlavka  15 дней назад +1

      Смотри:
      1. UI должен быть независимым от сцены, потому что есть загрузочный экран, который должен закрывать как там за ним сцены меняются, объекты создаются, инициализируются и т.д. Это факт, тут просто по-другому не закроешь это дело. Конечно, если мы не говорим о ситуациях БЕЗ всяких закрытий, где на создании объектов в рантайме происходят фризы.
      2. Каждая сцена содержит свой список префабов окошек. Если их поместить сразу в один список, то они загрузятся в оперативную память все сразу. То есть все ссылки, которые ты кидаешь в редакторе на префабы, они загрузят эти префабы в память сразу. Больше префабов - больше использования памяти. Поэтому разделив все окошки на списки, мы оптимизируем количество используемой памяти.

    • @igor_mutny
      @igor_mutny 15 дней назад +1

      @@gamedevlavka теперь понял, спасибо 👍

    • @igor_mutny
      @igor_mutny 15 дней назад +1

      @@gamedevlavka подписался на Boosty 👍

    • @gamedevlavka
      @gamedevlavka  15 дней назад +1

      Пасибо❤️