Процедурная генерация лабиринта [Unity 3D] [Tutorial]

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

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

  • @antlklngzr8063
    @antlklngzr8063 5 лет назад +79

    когда я смотрю эти видео у меня острое чувство неполноценности

  • @krutetskiy
    @krutetskiy 5 лет назад +8

    Невероятно интересно! Спасибо.

  • @Alex-fc7ob
    @Alex-fc7ob 5 лет назад +7

    Как всегда отлично вышло, спасибо за урок! Пожалуйста, продолжайте.

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

    Спасибо, как всегда лучший! 👍👍👍
    Изменил алгоритм под свои нужды (каждая клетка либо стена, либо нет) работает отлично.

  • @videdirec5033
    @videdirec5033 4 года назад +1

    топчик.) Написал месяц назад где то генератор лабиринтов похожий на с++ + SFML, а сейчас решил разобраться с юнити вообще. И тут такой подгончик.)

  • @grigoriyvs
    @grigoriyvs 4 года назад +1

    Коротко и по делу, в самый раз

  • @valeronik_vlr
    @valeronik_vlr 5 лет назад +16

    Спасибо, качественно делаешь! Можешь в будущем рассказать про Tilemap и с чем его едят? :)

    • @EmeraldPowder
      @EmeraldPowder  5 лет назад +3

      Спасибо! Как раз записываю в заметки что можно интересного рассказать про Tilemap, как наберётся обязательно сделаю видео

    • @Korol0101
      @Korol0101 4 года назад +1

      @@EmeraldPowder можете помочь а как сделать для 2 или более играку

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

    17:34 за это лайк, спасибо)

  • @mrybs
    @mrybs 4 года назад +1

    Спасибо, я теперь понял как писать алгоритм

  • @alicewithalex
    @alicewithalex 5 лет назад +6

    Такое бы только, с расстановкой объектов внутри тайлов ( только 3д, например, комнат). А ещё круто было бы посмотреть на исполнение алгоритма Maze and Rooms - очень интересный алгоритм

    • @EmeraldPowder
      @EmeraldPowder  5 лет назад +2

      Да, Maze and Rooms это вроде больше концепция, там можно применять разные алгоритмы чтобы раскидать комнаты по карте, потом разные алгоритмы чтобы лабиринт корридоров сгенерить. Как раз что-то среднее между этим видео и видео про генерацию подземелий думаю дальше сделать, чтобы комнаты спаунились вместо 2д клеточек

    • @alicewithalex
      @alicewithalex 5 лет назад

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

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

    Спасибо за идею, мне нужно для 3д мира, и я все делал в ручную, но теперь я заполню локацию комнатами и буду удалять не нужное))

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

    блин... как до этого дойти своим умом?? спасибо за видео!

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

    7:12 Зачем учить плохому? Ты не используешь GameObject, а сразу берешь Cell, так почему бы не заменить переменную CellPerfab на тип Cell и тогда не надо будет вызывать грузовик (в плане нагрузки) GetComponent, а сразу получать нужный компонент при спавне, если лабиринт очень большой это сэкономит значительное время
    9:37 Еще одна ошибка, ну или скорее нарушение структуры кода. Да, такой флаг это оптимально по производительности. Но ты создаешь лишнюю переменную в классе, который, как сам сказал в начале, может использоваться другими генераторами. Намного проще было добавить все клетки в лист и потом просто производить проверку List.Find(Cell) == null
    Но опять же это не ошибка, а скорее просто придирка, которая важна только если работаешь в компании или с командой
    Хотя если если смотреть на твой код с точки зрения рефакторинга, то и класс генерации по хорошему статик, чтобы новые объекты не плодить и много чего еще. Так что наверное опущу.
    В остальном отличный урок

  • @d3dx259
    @d3dx259 Год назад +2

    возможно глупый вопрос, но почему из полей Height и Width вычетают 2?

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

    Спасибо, очень интересно!

  • @BigPapochka12
    @BigPapochka12 4 года назад +4

    IndexOutOfRangeException: Index was outside the bounds of the array.
    MazeGenerator.RemoveWallLeftBotton (MazeGeneratorCell[,] Lab) (at Assets/LabGenerator.cs:54)
    LabGenerator.GeneratorLabirint () (at Assets/LabGenerator.cs:35)
    WallSpawn.Start () (at Assets/WallSpawn.cs:11)
    Не могу, почему ошибка .

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

      в функции ты обращаеся к списку по индексу который юольше чем длина самого списка

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

      @@f1f1stashka так а пофиксить-то как

  • @ИринаШарафутдинова-к3у

    не могу воспроизвести вообще код, начала с "решетки", не воспроизводит, решила, что проблема в коде и просто начала в той же последовательности шлепать твой код, все проставлено, не работает, что делать? может ли это быть из-за версии?

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

    а как заполнить этот лабиринт например мусором, листьями, камнями и так далие?

  • @unitynavigator3328
    @unitynavigator3328 5 лет назад +15

    Console. WriteLine("need more") ;

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

    Интересно он будет работать с Navigation Mesh

  • @АртемК-д3х
    @АртемК-д3х 4 года назад +1

    Помогите мне пожалуйста я никак не могу сделать 0:28 эту сцену с маленьким зелёным шариком..

    • @ronews4723
      @ronews4723 4 года назад +1

      ...

    • @EmeraldPowder
      @EmeraldPowder  4 года назад

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

  • @negrime
    @negrime 5 лет назад +1

    Расскажи пожалуйста про obj pool

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

    Здравствуйте , а вы можете подсказать как увеличить стены лабиринта ? Я пытался увеличить размеры стен , но не выходило . Может кто нибудь знает , как это сделать?

  • @СергійКвасніков-э6х

    Как можно сделать чтоб Width и Height можно было менять в редакторе юнити а не только в скрипте?

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

    Десять человек, не нашедших выхода из лабиринта поставили дизлайки.

  • @LunaresWolf
    @LunaresWolf 5 лет назад

    Привет, спасибо тебе за урок!

  • @boristyulkin8951
    @boristyulkin8951 5 лет назад +3

    Что такое циклы в лабиринтах?

    • @EmeraldPowder
      @EmeraldPowder  5 лет назад +2

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

  • @wismm3697
    @wismm3697 4 года назад

    А как разделить сцену на клетки?

  • @NECjAR
    @NECjAR 5 лет назад +3

    Такое же бы да в 3D.

    • @EmeraldPowder
      @EmeraldPowder  5 лет назад

      Можно вместо линий сделать модельки стен какие-нибудь, поменять координаты в MazeSpawner, и будет 3D. Но чтобы красиво было конечно надо ещё добавить разнообразия, что-нибудь вроде чанков из видео про подземелья можно сюда вставить вместо клеточек, и тогда будут получаться большие и запутанные карты

  • @ЕвгенийШут-о7н
    @ЕвгенийШут-о7н 5 лет назад

    спасибо

  • @andriystarunskiy6943
    @andriystarunskiy6943 5 лет назад

    Как удалять пол на крайних клетках, как в первом видео стены?

    • @EmeraldPowder
      @EmeraldPowder  5 лет назад +1

      Добавить в Cell рядом со стенами ссылку на пол, какой-нибудь public GameObject Floor; А в MazeSpawner.Start() смотреть, если x == maze.GetLength(0)-1, и тоже самое с y, значит сейчас последний ряд ячеек, и выключать/уничтожать c.Floor, так же как и стены выключаются

  • @alexisnienov4677
    @alexisnienov4677 7 месяцев назад

    За урок однозначный лайк. Только "кюррент" ухо режет.

  • @The_Mavrik
    @The_Mavrik 4 года назад

    Но чёрт возьми, каааак? Как можно додуматься до этого всего????? Долго ты это делал, подскажи пожалуйста =)

    • @EmeraldPowder
      @EmeraldPowder  4 года назад +1

      Все навыки с опытом приходят, если долго пытаться всякие игрушки делать, то рано или поздно научишься такое быстро придумывать )

  • @alekseivlasov
    @alekseivlasov 4 года назад

    ПОЧЕМУ У ТЕБЯ ТАК МАЛО ПОДПИСЧИКОВ???

  • @reapercrow7623
    @reapercrow7623 4 года назад +1

    А в каком формате ты создавал проект ? 2D или 3D ?

  • @askaranarbekov3145
    @askaranarbekov3145 5 лет назад +2

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

    • @EmeraldPowder
      @EmeraldPowder  5 лет назад +2

      Самый красивый способ, хотя он не всегда подходит, это сохранять сид генератора перед созданием лабиринта. То есть примерно напписать перед тем как запускать первый раз генератор: int seed = Random.Range(-100000,100000); PlayerPrefs.SetInt("seed", seed); Random.InitState(seed);
      А перед тем как запускать второй раз (при загрузке), int seed = PlayerPrefs.GetInt("seed"); Random.InitState(seed);
      Ну и отдельно тогда сохранить всякое вроде положения игрока, и прочего что есть в геймплее

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

      ​@@EmeraldPowder а можно для чайников объяснить как это впихнуть в ваш скрипт? Ps. мне очень нужна система сидов.

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

    а можно мне пожалуйста скрипт движения с этого ролика

  • @clapper2564
    @clapper2564 4 года назад +5

    ALT+Колёсико вверх
    Когда ты уже *УВЕЛИЧИШЬ* текст, надо жмуриться что-бы увидеть что ты там пишешь

  • @_dAlbAj0b_
    @_dAlbAj0b_ 4 года назад

    Не работает метод по удалению стен

    • @_dAlbAj0b_
      @_dAlbAj0b_ 4 года назад

      прости, сам сделал опечатку спасибо за видос

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

    Не дырка, а отверстие

  • @Kitsikoo
    @Kitsikoo 5 лет назад +1

    Моск обиделся и ушёл. Как можно всё это знать?)

    • @EmeraldPowder
      @EmeraldPowder  5 лет назад +2

      Спасибо) На самом деле если долго смотреть на гифку в википедии то алгоритм генерации совсем не кажется сложным

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

    Б563

  • @TheGamingWorldTVtvTV
    @TheGamingWorldTVtvTV 4 года назад

    Привет! Видео классное! Мне понравилось, всё понятно объясняешь. Правда у меня не получается полноценный лабиринт. Дружище, не знаю слышишь ли ты меня, я писал в твоём дискорд чате в #помощь (gengiank). Надеюсь ты там увидишь и сможешь помочь. К видео однозначно лайк)

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

    Когда я увидел что ты удалил МоноБехавиор я понял что это не мое