Анон, как устроен алгоритм генерации подземелий?Я заметил что там есть блочные части которые состыкованы проходами. Но как выразить это в алгоритме?Можно взять плоскость и случайно расположить 5-10 блоков.То как дальше создавать между ними проходы?Дискас.
бамп.вот что вышло на первом этапе, анон как быть дальше?ps для наглядности матрица была переведена в пикчу
луркани QHack http://www.adom.de/misc/qhack.php3 - это типа опенсорсовый проект Бископа (создателя ADOM) на тему - как написать рогалик.там вообще есть готовый вариант генератора на Ц.
луркани QHack http://www.adom.de/misc/qhack.php3 - это типа опенсорсовый проект Бископа (создателя ADOM) на тему - как написать рогалик.
там вообще есть готовый вариант генератора на Ц.
>>811если речь идет об этом (см пик), то алгоритм известен и он не подходит к тому что используется в первой дябле.
Тоже однажды задавался этим вопросом.Придумал связывать комнаты проходами друг с другом по порядку. Нулевую с первой, первую со второй ... последнюю с первой. Так как комнаты раскиданы в пространстве совершенно псевдослучайно, то для пользователя получалось все не столь очевидно. Проходы не могли проходить через другие комнаты, вычислялись как кратчайшие пути по волновому алгоритму. Между собой они пересекаться вполне могли.Вышло почти годно. Только вот из каждой комнаты всегда было два выхода.picrelated.Но намного лучше взять какой-нибудь опенсорсовый рогалик и позаимствовать от туда.
Тоже однажды задавался этим вопросом.Придумал связывать комнаты проходами друг с другом по порядку. Нулевую с первой, первую со второй ... последнюю с первой. Так как комнаты раскиданы в пространстве совершенно псевдослучайно, то для пользователя получалось все не столь очевидно. Проходы не могли проходить через другие комнаты, вычислялись как кратчайшие пути по волновому алгоритму. Между собой они пересекаться вполне могли.Вышло почти годно. Только вот из каждой комнаты всегда было два выхода.picrelated.
Но намного лучше взять какой-нибудь опенсорсовый рогалик и позаимствовать от туда.
избавился от багов. теперь надо заполнить пространство мелкими комнатами и соединить их проходами, логично было бы если из комнаты идет только один выход. >всегда было два выходакак я понял это было одно из условий волнового алгоритмаушел за пивом
избавился от багов. теперь надо заполнить пространство мелкими комнатами и соединить их проходами, логично было бы если из комнаты идет только один выход.
>всегда было два выхода
как я понял это было одно из условий волнового алгоритма
ушел за пивом
пока только доработки
>>838Я делал следующим методом:1) Генеришь N комнат, запоминаешь их x,y,size_x,size_y в массив, часть комнат делаются размером 1х1 (чем их будет больше, тем более разветвленные получаться коридоры).2) В некоторых комнатах случайно отрисовываешь внутренние стены.3) Обходишь комнаты в цикле, случайно выбираешь количество соединений, стену, позицию и направление. Пытаешься отрисовать коридор, если он пересекается с другой комнатой.4) Случайно отрисовываешь двери в комнатах.5) Закрываешь оставшиеся 1x1 комнаты которые ни с кем не соединились.Получается вполне годно.
>>838Для пещерок хорош cellular automata.
>5) Закрываешь оставшиеся 1x1 комнаты которые ни с кем не соединились.схоронилОП
>5) Закрываешь оставшиеся 1x1 комнаты которые ни с кем не соединились.
схоронилОП
уже что то
>>854Объясни, что там происходит.848 кун
>>855где именно? коричневое это генерация коридоров, пока в зародышевом состоянии
>>856Как они генерятся? И почему не соединяются с комнатами?
>>856Не пробовал такой способ, со случайной точки копаешь коридор/комнату, рандомно меняешь направление/ответвления? Если задать еще что-то типа плотности породы в точках на карте, то ветвление коридоров получится более правдоподобным. Попробую завтра такой метод.
>>857генерятся по принципу обычно лабиринта >>818 до первого тупика.далее есть два развития: или делать шаг назад от тупика и прорубать новый путь, или начать новую кишку. тут я пока в задумчивости.>И почему не соединяются с комнатами?в зародышевом состоянии
>>857генерятся по принципу обычно лабиринта >>818 до первого тупика.далее есть два развития: или делать шаг назад от тупика и прорубать новый путь, или начать новую кишку. тут я пока в задумчивости.
>И почему не соединяются с комнатами?
в зародышевом состоянии
ещё пик
и еще
теперь можно и за пивом
ололо, начинает доставлять
Добавил тред в избранное
дорабатываю
Я нихуя не понял, но выглядит круто.
>>871А зачем у тебя слепых кишки генерируются? Недоработка или стены будут разрушаемые?
>>902>слепых кишкиточки белые? это маячки типа грида. в >>871 это просто остатки. да, недоработка.тут ещё куча вопросов возникает как всё это дело соединять?брать одну кишку, метить её заливкой, прилеплять вторую, опять метить...вот только как делать заливку?
>>902
>слепых кишки
точки белые? это маячки типа грида. в >>871 это просто остатки. да, недоработка.
тут ещё куча вопросов возникает как всё это дело соединять?брать одну кишку, метить её заливкой, прилеплять вторую, опять метить...вот только как делать заливку?
>>871Можешь описать свой алгоритм в терминах ЛИСП?
стены будут разрушаемые?даже не думал, в таком лабиринте это будет халява для игрока, пусть лучше потеряется
>>905неа, я не знаю его. так тред пошагово вроде идет, хоть и с пробелами.>Слово «lisp» имеет также значение «детский лепет»ололо
>>905неа, я не знаю его. так тред пошагово вроде идет, хоть и с пробелами.
>Слово «lisp» имеет также значение «детский лепет»
ололо
>>871Коридоров - поменьше, комнат - побольше, не? При такой структуре смычки с комнатами достаточно просто сделать, выбирай случайную стену NSWE, и в заданном направлении отрисовывай коридор пока не пересечешь уже существующий. Соединения м/у коридорами можно попробовать так: Отмечать стартовую и конечную точки, после того как сгенерировал коридоры, перебрать эти точки и так же в случайном направлении пытаться отрисовать коридор пока не получиться соединение. Теоретически проходимость должна быть 100%. Алсо, мой лабиринтик. Сечас думаю как найти несоединенные области для втыкания туда телепортов.
в реальных играх нужно геренить чтобы был входи выход и они соеленядисьили чтобы была особая комната с боссом и до ней был проходне короткий проход
>>911Автор канонических паст /vg/ детектед.
>>912это знаменитый упоротый уебок, оседающий на кодачене обращай внимания, он всегда такой
Еще вариант, к Диабло уже ну очень близко.
>>916в диябло есть готовые блоки из которых как из кубиков все лепитсяа ваши алгоритмы такойто графон не позволяют лепить
>>917Согласен не полностью. Какая-то небольшая часть использует готовые шаблоны, но остальное генерируется рандомно.
>>917Для такого-то графона нужно просто отрисовать/отрендерить нормальное количество тайлов, но оно надо?
>>918в любом случае до дьябло вам ище думать и думатьа вить есть ище хелгейт лондон
>>919сделай готябы отдельные тайтлы для углов комнат
>>910меня пугают результаты рандома, как вот эти мертвые острова не имеющие под собой никакой логики, создавая круговые коридорыОП
>>917так поведай как правильно делать, на то и тред создавал
>>924Посмотри >>916.Тут >>910, еще не окончательный алгоритм, я его дорабатываю постепенно.
>>924С другой стороны, если понапихать ловушек, то будет не так уж и нелогично. "Налево пойдешь..."
>>916ага, это более реально
Добавил генерацию комнат с разнами стенами, пока что 2 вида.>>808 кун, ты ушел совсем?
>>930нет, работа заставляет работать.как что то будет готово, выложу
Еще один вариант генерации, что-то похожее на руины(развалины). первый перс, класс - Sceleton.смайл.jpg
Еще один вариант генерации, что-то похожее на руины(развалины).
смайл.jpg
слишком много проверок писать надо чтобы с тупиками разобраться
>>933Из каждой синей точки тяни линию в случайном направлении пока не попадешь в комнату или коридор. синие точки - 99стены - 1коридор/комната - 0`for(i=0;i<MS;i++) for(j=0;j<MS;j++) {if(map[i][j]==99) { dir=random(3); switch(dir) { case 0://влево идем is_ok=false; for(n=i;n>0;n--) if(map[n][j]==0) { is_ok=true;//попали куда-то break; } if(is_ok) add_corridor(n,j,i,j); break; (...) } } }`ну и так много итераций, либо менять направление пока не соединишься.
>>933Из каждой синей точки тяни линию в случайном направлении пока не попадешь в комнату или коридор. синие точки - 99стены - 1коридор/комната - 0
`for(i=0;i<MS;i++) for(j=0;j<MS;j++) {
if(map[i][j]==99) { dir=random(3); switch(dir) { case 0://влево идем is_ok=false; for(n=i;n>0;n--) if(map[n][j]==0) { is_ok=true;//попали куда-то break; } if(is_ok) add_corridor(n,j,i,j); break;
(...)
} }
}`
ну и так много итераций, либо менять направление пока не соединишься.
>>933Дополнительно помечай начало кишки тупиком тоже.
борьба идет вот с этими круговыми фейлами.
зацените
вот что у меня сейчас в голове >_<
>>946Больше похоже на печатную плату, чем на лабиринт.
>>944Круто.Но когда же ты наконец объеденишь все это?Алгоритм >>934 фейлит тем, что не гарантирует тотальной связности. Предлагаю более другой.Имеем дополнительную карту, куда будем записывать номера областей. Сканируем основную карту. Когда натыкаемся на точку "не стены", не помеченную на карте областей, проходим каким-нибудь волновым алгоритмом доступную из этой точки область, отмечая на карте областей ее порядковым номером. Получаем что-то типа такого:.0....11110000....1....0...11...000..1..Далее каким-нибудь нехитрым образом соединяем нулевую область с первой и, раз уж они соединены, заменяем в карте областей все единицы на нули. Потом так же соединяем получившуюся нулевую со второй и тд пока на карте областей не останется только одна цифра. Собственно, не обязательно даже соединять их всех по порядку.
>>944Круто.Но когда же ты наконец объеденишь все это?
Алгоритм >>934 фейлит тем, что не гарантирует тотальной связности. Предлагаю более другой.Имеем дополнительную карту, куда будем записывать номера областей. Сканируем основную карту. Когда натыкаемся на точку "не стены", не помеченную на карте областей, проходим каким-нибудь волновым алгоритмом доступную из этой точки область, отмечая на карте областей ее порядковым номером. Получаем что-то типа такого:
.0....11110000....1....0...11...000..1..
Далее каким-нибудь нехитрым образом соединяем нулевую область с первой и, раз уж они соединены, заменяем в карте областей все единицы на нули. Потом так же соединяем получившуюся нулевую со второй и тд пока на карте областей не останется только одна цифра. Собственно, не обязательно даже соединять их всех по порядку.
хреначиш комнаты чтобы не накладывались,соеденяш волновым алгоритмом их все кротчашими путямитока не для 2х какихто комнат волновй адгоритм а дял всех сразу
>>953Можно dir менять не рандомно, а обходить по часовой стрелке в цикле, тогда структура на >>944 соединиться 100%, т.к. коридоры занимают максимум пространства, диагональных проходов я там не замечаю. Хотя волновой тоже хорош. Я думаю как его применить для создания закрытых дверей и размещения ключей для этих дверей. Плюс ко всему, несоединенные области могут присутствовать (тот же crawl, например), они соединяются либо телепортами, либо лестницами через уровень вверх/вниз. Но тут тоже придется скорей всего применять что-то похожее на твою схему.
>>954Переведи, если уж не на русский, то хотя бы на С. Ни хуя не понял.
>>962вобщем применяеш волновой алгоритм одновременно ко всем комнатамкоторые 2 первые соеденятся - между теми делаеш проходи они считаются после етого 1й комнатойи так пока все комнаты не обьеденятсяауже потом можно наставить дверей ловушек тупиков
>>984>>954Омич, ты?
Сделал затопления как в >>953. Т.е. каждый замкнутый регион имеет заполнение своей цифрой. Как теперь проще их соединить?
берем алгоритмами генерации подземелий.
И еще один. Проходимость 100%.
единственный годный тред в pr. лучи добра всем
спиздите алгоритм из дварвен фортрес хуле
>>1014Тут весь профит в том, что ты сам пытаешься разобраться как работают данные алгоритмы, возможно получиться их как-то усовершенствовать, придумать, что-то новое. А ты говоришь какую-то хуйню. Так что следуй-ка ты нахуй, почтенный омич, заебал ты уже.
Добавляем горизонтальную симметрию.
И вертикальную. Такие карты будут генериться в соотношении 1:30. Дальше буду заниматься шаблонами. В Диабло есть такое, точно.
>>1047Не забудь исходники выложить, опенсорс же!
>>1053Подпиши сначала договор о неразглашении.
>>1053
Подпиши сначала договор о неразглашении.
я вернулся!! но не надолго, достала работаОПвот первый этап: пик
я вернулся!! но не надолго, достала работаОП
вот первый этап: пик
а вот второй этап: пикнайди отличия
а вот второй этап: пик
найди отличия
>>1059 Предлагаю дальнейшее развитие идеи: многоуровненвые пещеры(лабиринты комнат) и чтобы некоторые перекрывались на два этажа меж собою. Кагбе лабиринты типа моровиндских подземных сооружений(кто был тот помнит).
>>1119Это очевидно же. Все так и планируется, области которые не соединились между собой можно соединить летницами через уровень выше/ниже, моя карта представляет собой 3-х мерный массив. Но это еще пока рано реализовывать.
>>1059Белые точки соединил проходами, не?
>>1121верно, но не все
А потом делаем свою ЭрПеГе на манер UFO. Только с чановскими персонажами...интерестно тут из геймдева есть кто?
А потом делаем свою ЭрПеГе на манер UFO. Только с чановскими персонажами...
интерестно тут из геймдева есть кто?
>>1156 естьредко и плохо скриптую на торке)
>>1156Не совсем РПГ, но рогалик планируется.
>>1181 говори про себя.а я мозг на место поставлю и буду продолжать своё творение.
>>1181 говори про себя.
а я мозг на место поставлю и буду продолжать своё творение.
>>1182Может стоит убрать загогулины, тупики 1х1, беспорядочно ответвляющиеся от проходов, эстетика же!?
>>1181Скажи, анон, что значит: "мозг на место поставлю". И, поделись, что за творение?Делаю, рогалик, кун
ITT Программисты Blizzard ищут совета на два-че.
Бамп! Самый интересный тред помоему. Сам я не программист, но почитать и посмотреть на успехи весьма любопытно.
>>756 А чо за игруха на картинке:
>>1194http://ru.wikipedia.org/wiki/Diablo_(игра)http://www.youtube.com/watch?v=2m-npGkx2S8
>>1182 Как прогресс? Просто мне скоро в отпуск, боюсь не успею дочитать, по идее это самый винрарный тред в пр!
>>1301У меня - стагнация, работы дохуя. Тоже скоро в отпуск, там и буду творить далее же.Хуевое разрешение картинки-кун
>>1301У меня - стагнация, работы дохуя. Тоже скоро в отпуск, там и буду творить далее же.
Хуевое разрешение картинки-кун
>>1314та же фигняОП
>>1316 не проебите тред
бамп годному треду
бампуэ
>>1620Семен, ты великолепен. Сорцы хочешь же?Фейкомыло давай уже. На!
>>1182 За него не отвечу,>>1047 Мое говно - забирай. Если будешь творить, блджад, отписывайся в этот тред. Ага?
вдохновение куда то пропало, и желание на нуле. как будет так стазу продолжу.сорцы? да там их почти и нету, это не движок, это просто мап[х][у] в который пишутся рамка=0, стена=1, комната=2 и тд... и после это мап загнан в файл под видом бмп.
>>1621Фейкомыло: [email protected]Алсо, я не семён, просто тред винрарный.
люто бешено /r/ сорцы >>1047 и других кодер-кунов, с меня корованиры[email protected]пришел-с-нульча
>>1629>>1657Ущло. Самый важный файл map.h, специально скинул туда алгоритмы генерации. До кучи все собирается в 6-м билдере, но адаптировать не сложно.
>>1688прищло (сначала не понял, потом оказалось что в спаме)конпелировать не буду, я не пишу на си, но читаюспасибо
http://www.youtube.com/watch?v=YyA_BcHCsYs&feature=relatedя просто оставлюалсо бамп православному треду.
up
>>1688 пришшли плз и мне! solncetema"rambler"ruслоупока - 1119-кун
>>1981 bump je!!!
>>1981Ушло.
>>1747да я же всю ночь потом смотрел всякую хуйню из релейтед видеос. ёбаныпоголове!
>>1747
да я же всю ночь потом смотрел всякую хуйню из релейтед видеос. ёбаныпоголове!
>>2156аналогичнооставивший
>>2156 бумп
>>2036 Спасибо, большое! Пришло! Это пиздец, особенно в мап.хуй! Аффтра - ты прикрасин, зачем столько закомментил?И таки это первая версия - получается зеркальный лабиринт же..
>>2535Закомменть create_symmetrical_map, он будет не зеркальный тогда. Там закомменчено размещение лестниц и сундуков, потому что не продумано еще до конца. Отпуск накрылся, работы дохуя, поэтому продолжение будет не скоро.
>>2543 аналогично работы кучи мала, да еще и денег надо по кредиту отдавать... такие дела. Немножко разобрался - постараюсь перевести в алгоритм и разобраться еще больше
Bump.
тред бестолковый,написан дебиламиинфа 100%
>>3106 bump, таки дебилами для дебилов - ты то здесь чего забыл не дебил ты наш лиспючий? А вот однажды мне встретился говнорок похожий на лиспеныша. Дело было ночью. Я с наслаждением совершил анальную казнь
>Я с наслаждением совершил анальную казньбалмер, ты штоле?
>Я с наслаждением совершил анальную казнь
балмер, ты штоле?
>>3552Когда я куплю себе пистолети оформлю разрешение на его ношениеличные проблемы сойдут на нетя начну менять общественное мнение
BUUU~
- wakaba 3.0.8 + futaba + futallaby -