BeaRLibMG - генератор карт

Форум библиотеки BeaRLib

Модератор: Apromix

Аватара пользователя
MADMAN
Сообщения: 39
Зарегистрирован: 27 дек 2013, 05:44
Контактная информация:

Re: BeaRLibMG - генератор карт

Сообщение MADMAN » 03 янв 2014, 09:32

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

Добавлено позже
А такое норм?
Скрытый текст: ПОКАЗАТЬ

Код: Выделить всё

####################################################################################################
###########################################################...............##########################
###########################################################...............##########################
###########################################################...............##########################
###########################################################...............##########################
###########################################################...............##########################
###########################################################...............####..........############
###########################################################...............####..........############
##...........##############################################...............####..........############
##...........###########################............#######...............####..........############
##...........#############.........#####............#####.................####..........############
##...........##........###.........#####.................##...............####..........############
##...........##........###............##............#######...............####..........############
##...........##........###.........##.##............#######...............####..........############
##...........##........###.........##.##............##################..######..........############
##.....................###.........##.##################################................############
##...........##........###.........##.########################################..........############
##...........##........###.........##.############..........#####################...################
##...........##........###.........##.############..........#######################.################
##...........##........###.........###.###########..........###############............#############
##...........##....................###.#......####..........###############............#############
###############........###.........###.#......####..........##.......######............#############
###############........###.........###.#......####..........##.......######............#############
###############........###.........###.#......###....................######............#############
##########################.........###.#......#..#..........##........#####.............############
######################################.........###..........##.......#..###............#..##########
######################################.#......####..........##.......###...............###...#######
#########............################.#.......####..........###############............#####.#######
#########............###############..##......####..........###################.############.#######
#########............##########.....####......##............###################.############.#######
#########............########..#########........##..........###################.#############.######
#########............###.....###########......#################################.....##########.#####
#########............##.################......#####################################.##########.#####
#########............##.################......#####################################.######.........#
#########............#.###############################################.........####.######.........#
#########.............################################################.........#####.#####.........#
#########............#################################################.........#####...............#
#########............###########............##########################.........###########.........#
#########............###########............##########################.........###########.........#
################################............##############################################.........#
################################............##############################################.........#
#......############.........................##############################################.........#
#......##########.........######............###########..........############################.######
#......##########.........######............###########..........############################.######
#............####.........######............###########..........############################.######
#......######.............######.................................############################.######
#################.........######............###########.......................###############.######
#################.........######............###########..........#############................######
################################............########################################################
####################################################################################################

Опять скрытая комната выпала :evil:
Скрытый текст: ПОКАЗАТЬ

Код: Выделить всё

####################################################################################################
###################################################################################.........########
###############......##############################################################.........########
###############......##############################################################.........########
###############......##############################################################.........########
###############......##############################################################.........########
###############.......#############################################################.........########
###############......#.############################################################.........########
###############......#.############################################################.........########
###############......##..##########################################################.........########
###############......####..########################################################.........########
###############......#####....#####################################################.........########
###############......########.########################################################.#############
###############......#########.#######################################################.#############
##############################..######################################################.#############
################################.#####################################################.#############
################################..####################################################.#############
##################################.###################################################.#############
##################################......##############################################.#############
#######################################.##############################################.#############
#######################################.##############################################.#############
#######################################...############################################.#############
#########################################...##########################################.#############
############################################.#########################################.#############
############################################..########################################.#############
##############################################...#####################################.#############
#################################################..###################################.#############
###################........########################.##################################.#############
###################........#########################..################################.#############
###################........##########################.########...............#########.#############
#######.........###........##########################.########...............#########.#############
#######.########...........##########################.########...............#########.#############
#............######........###########################.###...................#########.#############
#............######........###......##################....####...............#########.#############
#............######..........#......##########################...............#########.#############
#............######........##...........######################..................######.#############
#............######........###...........................................######.######.#############
#............######........###......###########..##############################.######.#############
#............######........######################.#############################.######.#############
#............######........#######################..###########################.######.#############
#............######........#########################............################.#####.#############
#............###################################################..###############..###.#############
#............#####################################################....#############.##.#############
#............#########################################################..#########......#############
#............###########################################################...............#############
#............####################################################################......#############
#............####################################################################......#############
#################################################################################......#############
####################################################################################################
####################################################################################################

Изображение
Почему собака виляет хвостом?
Потому что она умнее хвоста.
Если бы хвост был умнее, то он вилял бы собакой.

Аватара пользователя
MADMAN
Сообщения: 39
Зарегистрирован: 27 дек 2013, 05:44
Контактная информация:

Re: BeaRLibMG - генератор карт

Сообщение MADMAN » 05 фев 2014, 04:26

Как вам такой вариант?
Скрытый текст: ПОКАЗАТЬ
Изображение
Тест:
Скрытый текст: ПОКАЗАТЬ
Изображение
Карта текстом:
Скрытый текст: ПОКАЗАТЬ

Код: Выделить всё

                          #######                           ######                                  
                          #     #                           #    #                 #######          
      ######              #     #       #######             #    #####             #     #          
      #    #              #     #       #     #             #        #             #     #          
      #    #######        #     ######  #     #             #    ##  ##            #     #          
      #          #        #          #  #     #             #    #    # #######    #     #######    
      #      ### ##       #######    #  #     ################# #### ## #     #    #           #    
      #    #   #  ########      #    ## #           #        ## #  # ####     #    #######     #    
      ######## ##        ##     #     # #######     # ###### ## ####          ##         #     #    
             # #######    #     #     #       #        #   #      ## ###       #####     #     #    
             # #     #    ##    #     #       #      # #   ######    # #           #     #     #    
             # #     #     #    ##### #       ### #### ###      ##  ## ### ##   ## #     #     #    
             # #     #     #        # #         ###  #   #       # ##    #      ## #     #     #    
             # #     #     #        # ###            ### #       # #     ##### ### #     #     #    
             # #   ###    ##        #   #              # ##      # #         #  ## #######   ###    
           ### ##  #   ####         ### #              #  #      # #         ## ##           #      
           #    #  # ###              # #              # ##      # #          #   ########## #      
          ## ####  # ##               # #              # #       # #          ##  ######   # #      
          #  #     #  #               # #              # ##  ##### #           #       #   # #      
          # ##     ## ###             # #              #  ## #  ## #           ###### ##   # #      
          # #      ##   #  #######    # #              ##  # #     #                # #    # #      
          # #      #   ##  #     #    # #               ## #### ####   #######    ### #    # #      
          # ####   ## ##   #     #  ### #                #  #     #    #     #    #   #    # #      
          #    #    #  #   #     #  #   ##               ## #     #    #     #    ### #  ### ###    
          #### #    ## #   #     #####   #      ######    # #     #    #     #      # ####     #    
           #   #     # #   #           # #      #    #    #       #    #     ########   ##     ##   
      ###### ###     # ##  #######     # #      #    #    ##      #    #           #### ##      #   
      #    # ######  #  #        #     # ##     #    #######      ############     #  #  #      #   
      #    #      ##### #        #     #  ###   #                   #    #   #     ##### #      #   
      #      ####     # #        #          ##  #    #######          ## #####                 ##   
      #    # #  ##### # #        ## #######  #  #    #     ###  ########           #############    
      ########    #     ####      # #     ## #  #    #       #   #     #######     #                
                  #        #      # ##     # ####    #       ## ##           #     #                
                  #     ## #      #  ###   #     ## ##      ### #            ### ###                
                  #     ## #      ##   ##  #####     #      #   #              # #                  
                  #    ### ##      ###  #      ##### #      #  ##              # #                  
                  #    # #  ##       ## #          # #      # ##               # #                  
                  ###### ##  #       #  #          # #      #  #               # #                  
                          #  #       # ##          # #      ## #               # #                  
                          # ##       #  #####      # #       # ###             # #                  
                          # #        ##     #      # #       #   ##            # #                  
                          # #         ##### #      # #       ###  #            # #                  
     #######              # #             # ##     # #         ## ##           # #                  
     #     #              # ##            #  #  #### #          #  #           # #                  
     #     #              #  #            # ##  #    #          ## #           # #                  
     #     #         ####### #            # #   #    ##          # #           # #                  
    ##     #         #     # #            # #   #     #    ####### #         ### ###                
    #      #         #     # #            # #   #     #    #     # ##        #     #                
    #      #         #     # #            # #   ##### #    #        #        #     ####             
    #      #         #     # #            # # ####### #    #        ##########     #  #             
    #     ##         #     # #            # # #     # #    #                 #     #  ##            
    ####  #          #     ###      ####### # # ##### #    ############  ###           #######      
       #  ####       #     #  #######  ##   ### #   # #               #### ##      ### ##    #      
       #  ## #       #     ####            #    #   # #                     #      # #       ##     
     ###     ##########  #   ##      ####    ####   # #                    ##  ##### ####     #     
     #   ###       # ##    #         #  # ####      # #                    #   #        #     #     
     # ### #######       ######     ##  ###      #### #                    ## ##        #     #     
     # #         ####### #    #     #            #    #                     # #         #     #     
     # ##              # ##   #######            ##  ##                    ## #         ##### #     
     #  #              #  #                       ## #                     #  ##            # #     
     ## #              #  #                        # #                     #   #            # #     
      # #              # ##                        # #                     ## ##            # #     
      # #              # #          #####          # ##                     # #             # #     
      # #             ## #      #####   #          #  #                     # #             # #     
      # ##     ########  #      #       #        #### ##                    # #             # #     
      #  #     #     ### #      #      ## ########     #                    # ##          ### #     
      ## #     #     # # #      #      #  #   #        #                   ##  #          #   ##### 
   ##### #     #     # # #      #      #### # # ##     #                   #   #          ##      # 
   #     #     #     ### ###    #           # # ##     #                   #  ##           ###### # 
   #     #     #           ###  #    ########   ##     #                  ### ##       ########   # 
   #    ##     #######       #  ######      ######     #######            #    #       #     ## ### 
   #    #       #  ###     # #                   #####       ##           #    ###     #     ## #   
   #    #     ###    #     # #                       #### #   #           #    # #######     ## #   
   #    #######      #     ###                          # ### ####        #                  ####   
   #            #### #     #                            ### #    ##       #    ###############      
   #    ####### #  #       #  #####                         #     ###     #    #                    
   ######     ###  ##  # # ####   ###                       #       #     #    #                    
                    ######      #   #                       #    ## ###   ######                    
                         ############                       #    ##   #                             
                                                            ######### #########                     
                                                                    #         #                     
                                                                    ###########                     
Изображение
Почему собака виляет хвостом?
Потому что она умнее хвоста.
Если бы хвост был умнее, то он вилял бы собакой.

phomm
Сообщения: 40
Зарегистрирован: 13 сен 2012, 07:14
Контактная информация:

Re: BeaRLibMG - генератор карт

Сообщение phomm » 07 фев 2014, 06:23

Нормально !
Лабиринт годный, у него не бывает косяков с зонами ?
Есть вопрос - почему в сгенерированной текстовке пол и внешняя пустота(воид) одинаковые, по идее, пол внутри лабиринта должен быть точками, а воид - пробелами, либо воид вообще заполнить стенами, чтобы не могло получиться ситуации когда игрок сгенерируется вне лабиринта, на воиде.

Также появилась одна мысль при взгляде на эти лабиринты, мысль комплексная и касается всего берлибмг в целом.
Суть в разделении стен на 2 типа - внутренние и внешние. Внешние это те которые, так или иначе граничат с воидом (или другими стенами , граничащими с воидом). А внутренние - такие, которые внутри комнат и граничат хотя бы одной клеткой. Мысль в том, что внутренние стены не являются существенным для ограничения игрового процесса в плане недозволения игра пойти в воид. Внутренние стены можно пост-обработать, например удалить, или украсить. В конце концов, можно без опасения позволить взаимодействовать игроку с ними - также например разрушить (перегородку между комнатами) и т.п. И как раз на стороне игры это вычислять (принадлежность комнатам) менее гибко и более затратно, нежели они сразу загенерятся в берлибе, и после можно легко решить, уравнять внутренние стены по семантике с внешними или же дать им дополнительную функциональность.

Аватара пользователя
MADMAN
Сообщения: 39
Зарегистрирован: 27 дек 2013, 05:44
Контактная информация:

Re: BeaRLibMG - генератор карт

Сообщение MADMAN » 07 фев 2014, 20:01

phomm писал(а): Есть вопрос - почему в сгенерированной текстовке пол и внешняя пустота(воид) одинаковые, по идее, пол внутри лабиринта должен быть точками, а воид - пробелами, либо воид вообще заполнить стенами, чтобы не могло получиться ситуации когда игрок сгенерируется вне лабиринта, на воиде.
Да я ж тестировал сам алгоритм рисования контуров, я не заморачивался с полом и т.д. Чисто тест построения.

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

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BeaRLibMG - генератор карт

Сообщение Apromix » 24 авг 2014, 12:20

А где исходники этого генератора можно взять?

Tookser
Сообщения: 155
Зарегистрирован: 08 апр 2010, 11:09

Re: BeaRLibMG - генератор карт

Сообщение Tookser » 31 дек 2014, 00:11

MADMAN, видимо, имелся в виду вариант, когда игрок при начале игры / появлении на карте стартует на любом пустом тайле. Тогда лучше заполнить неигровые пустые тайлы стеной.

Tookser
Сообщения: 155
Зарегистрирован: 08 апр 2010, 11:09

Re: BeaRLibMG - генератор карт

Сообщение Tookser » 03 янв 2015, 11:13

Можно ещё что-то такое генерировать. Ходы разветвляющиеся, но в тонких стенах.
Вложения
image.jpg
image.jpg (19.05 КБ) 6084 просмотра

Tookser
Сообщения: 155
Зарегистрирован: 08 апр 2010, 11:09

Re: BeaRLibMG - генератор карт

Сообщение Tookser » 06 янв 2015, 05:57

Вот ещё генератор. Сначала расставляет случайные прямоугольники, потом делает ходы между ними. http://journal.stuffwithstuff.com/2014/ ... and-mazes/
Вложения
image.jpg
Лабиринт.
image.jpg (269.54 КБ) 6064 просмотра

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BeaRLibMG - генератор карт

Сообщение Apromix » 06 янв 2015, 19:29

Ага. А в коде этот генератор можно увидеть?

Tookser
Сообщения: 155
Зарегистрирован: 08 апр 2010, 11:09

Re: BeaRLibMG - генератор карт

Сообщение Tookser » 07 янв 2015, 01:06

По ссылке есть описание алгоритма и генераторы на Javascript, вживую отрисовывающие такие лабиринты.

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BeaRLibMG - генератор карт

Сообщение Apromix » 30 янв 2015, 22:49

Tookser писал(а):По ссылке есть описание алгоритма и генераторы на Javascript, вживую отрисовывающие такие лабиринты.
По этой ссылке там еще несколько статей по рогалиководству :)

Аватара пользователя
Харука-тян
Мастер
Сообщения: 544
Зарегистрирован: 29 ноя 2006, 00:23
Контактная информация:

Re: BeaRLibMG - генератор карт

Сообщение Харука-тян » 08 фев 2016, 12:30

А что-нибудь такое можно запилить?
"Женщина верит, что дважды два будет пять, если хорошенько поплакать и устроить скандал" (© Дж. Элиот).
ИзображениеИзображение

Аватара пользователя
Jesus05
Сообщения: 1840
Зарегистрирован: 02 дек 2009, 07:50
Откуда: Норильск, сейчас Санкт-петербург.
Контактная информация:

Re: BeaRLibMG - генератор карт

Сообщение Jesus05 » 08 фев 2016, 13:21

Алгоритм какой-то мозговыносительный :)
я помнится с Диаграмой Вороного (они с триангуляцией Делоне как-то связаны) себе мозг ломал пару месяцев.

Аватара пользователя
Феникc
Сообщения: 679
Зарегистрирован: 27 ноя 2010, 15:01
Откуда: Челябинск

Re: BeaRLibMG - генератор карт

Сообщение Феникc » 08 фев 2016, 13:26

Вороной - тот ещё мозголомательный алгоритм. Вроде бы всё просто и относительно понятно, но я когда её генерил использовал тупой брутфорс вида "накидать миллион точек и для каждой проверить расстояния до центров кластеров". Хотя, конечно, из результирующей картинки потом ещё надо было собственно кластеры выделить, что является задачей чуть ли не более мудрёной чем собсно исходный алгоритм.
Всё вышесказанное - ИМХО, если не указано обратное.

Аватара пользователя
kipar
Сообщения: 2120
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: BeaRLibMG - генератор карт

Сообщение kipar » 08 фев 2016, 16:20

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

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

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 15 гостей