|
0 / 0 / 0
Регистрация: 27.05.2018
Сообщений: 51
|
|
Генерация подземелья массивом04.07.2024, 08:43. Показов 785. Ответов 12
Вообще не понимаю, можно пожалуйста с куском кода который это делает, уже года 2 смотрю уроки, есть похожее, но совсем не то что мне нужно. Все блоки в 3д и одикового размера.
Каждый блок размером 5 на 5 на 5. я думаю что через массив как-то Обозначения с картинок: 0 - это коридор, соединяет все комнаты и из коридора есть проход в любую комнату, 1 - стена комнаты, кадая комната окружена стенами 2 - дверь, которая в комнате от 1 до 4, и каждая дверь ведет в коридор 3 - пол комнаты, всегда откужен стенами и 1-4 дверьми 4- лестница на 2 этаж я уже весь интернет перерыл не понимаю что вводить чтобы комнаты генерировались, даже нейронка пишет что-то непонятное и нерабочее (если картинка не загрузилась) на картинке тоже самое почти только понятней 111111111111 111114133331 111110233331 133310133331 133310111111 133320000000 133310111111 111110133331 000000233331 111111133331 111111111111
0
|
|
| 04.07.2024, 08:43 | |
|
Ответы с готовыми решениями:
12
Генерация подземелья Процедурная генерация подземелья по готовому алгоритму Генерация построения латинского квадрата с char массивом |
|
9 / 7 / 2
Регистрация: 23.02.2020
Сообщений: 121
|
|
| 20.07.2024, 02:07 | |
|
Размер комнат разный?
0
|
|
|
0 / 0 / 0
Регистрация: 27.05.2018
Сообщений: 51
|
|
| 21.07.2024, 07:11 [ТС] | |
|
0
|
|
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,213
|
||
| 21.07.2024, 20:36 | ||
|
а еще как вариант - обратиться к опытному программисту и заплатить ему за работу. но напишет ли такое... вопрос. или можешь показать, что имеешь на данный момент по коду. может у нас прозрение произойдет и дело пойдет в гору. если что не правильно понял - поправь. Добавлено через 12 минут создай (смоделируй) блоки, которые будут по размерам стыковаться, закинь их все в сцену и вперед. штампуй себе на здоровье. алгоритм больше подошел бы к случайной генерации, но по схемам - думаю тут будет "тупик". хотя может я и заблуждаюсь. Добавлено через 9 минут хотя... можно двумерный массив использовать. где нет ничего ничего не ставить, а по индексам ставить нужные блоки. но массив в ручную цифрами нужно будет заполнять по чертежам. и блоки должны быть сразу со стенами и потолком. стены отдельно алгоритмами тулить не вариант, и с шагом в 5. в принципе возможно. давай подробности, какие блоки ? как выглядят ? покажи. но все равно, я в таком случае за ручную работу. ведь еще есть в любую сторону двери...
0
|
||
| 21.07.2024, 20:53 | ||||||
|
Bright4092b, если я правильно понял, а это было не просто, описание задачи кое как написано, вам надо по шаблону из массива с текстом воссоздать 3д уровень?
если я угадал, то вот скрипт:
0
|
||||||
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,213
|
||
| 21.07.2024, 21:02 | ||
|
и там, где лестница, нужен блок с проемом вверх, с проемом вниз для верхнего этажа. нужен набор, хорошо продуманных блоков на все случаи, и с дверьми такая же история. либо дополнительно разворачивать один, если проем только с одной стороны, что бы алгоритмом такое собирать.
в общем показывай блоки, тогда можно подумать. Добавлено через 5 минут
0
|
||
|
9 / 7 / 2
Регистрация: 23.02.2020
Сообщений: 121
|
|
| 23.07.2024, 22:51 | |
|
Если делать декомпозицию задач, то получается:
1 Генерация самих комнат. (Заполнение данных комнат объектами и добавление входов и выходов) 2 Случайное распределение комнат на локации, так чтоб не накладывались друг на друга. 3 Добавление лестниц и переходов на др уровень. 1Генерация самих комнат. Random.Range для размеров комнаты. Нужен массив обьектов что будут раставляться рандомно в комнатах. Либо можно просто наделать ассетов комнат в ручную. Как по мне лучше именно сделать кучу комнат в ручную. 2Случайное распределение комнат на локации. Случайный выбор позиции на локации. Проверка места на наличае других комнат. Если таковых нет то установка. Другое дело если надо сгенерить корридор в одну клетку, а комнаты у вас неизвестно каких размеров и что к чему. Технически это не сложно. Декомпозиция 2.1. Переменная офсет на ширину коридора. Далее все пункты делаются с учетом офсета для коридора. 2.2.Выбирается позиция. Пусть будет левый нижний угол. 2.3. Производится проверка области, размером с максимальный размер комнаты. 2.3.Если место свободно, то устанавливаем любую комнату из массива комнат используя Randon.Range. Если позиция занята то уменьшаем область проверки пока не получим истину на проверку позиции. Если проверка дойдет до минимального значения размера комнаты то там будет зал или что то в этом роде. Либо можно сделать комнаты размером менее 3 на 3 и в них нельзя зайти. 2.4.После установки комнаты. Выбирается следующая точка для установки комнаты. Смешение "курсора" для установки новой комнаты можно реализовать циклом который сдвигает на одну клетку по иксу курсор, проверяет занята ли она, если занята, то смещается еще на одну клетку по иксу.(Так же здесь нужна проверка достигнут ли край сцены по иксу.) Если свободна то производится пункт 2.3. 2.5. Если достигнут, то курсор смещается по иксу на ноль, а по у на +1.(Можно ради оптимизации не на один, а на размер минимальной комнаты). Повторяется пункт 2.4. (Момент с оффсетом на корридор я отпустил. Во всех пунктах надо брать в учет это. К примеру с проверкой позиции надо к размеру комнаты добавлять и офсет. Вроде еще умножать офсет на 2. 3 Это уже самим сможете. К тому же я не знаю какие требования к проходимости. Картинка очень наглядна, но остается множество вопросов. На ютубе видео уроки по генерации комнат с проходами, но без коридоров как у вас.
0
|
|
|
0 / 0 / 0
Регистрация: 27.05.2018
Сообщений: 51
|
|
| 23.07.2024, 22:57 [ТС] | |
|
без кода вообще не понимаю как сделать 2, + нужно максимально близко но чтобы был один блок коридора.
3. я хз любым возможным, чтобы из одного коридора был доступ к любой комнате
0
|
|
|
9 / 7 / 2
Регистрация: 23.02.2020
Сообщений: 121
|
|
| 23.07.2024, 23:05 | |
|
Вообще сперва лучше производить проверку с минимального размера к максимальному.
Расписал я вариант поверхностно, не сильно задаваясь какие могут быть подводные камни, а они будут и возможно методика совершенно не рабочая.
0
|
|
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,213
|
||
| 23.07.2024, 23:19 | ||
|
жди товарищ... жди !
0
|
||
|
9 / 7 / 2
Регистрация: 23.02.2020
Сообщений: 121
|
||||
| 23.07.2024, 23:51 | ||||
|
Тут не на пару часиков, а на пару дней... неделей... По крайне мере для меня. Однако задача интересная. Писать придется не кусочек кода, а сразу создавать новый проект и в нем пробывать. Добавлено через 8 минут
0
|
||||
| 24.07.2024, 07:25 | |
|
Bright4092b, воспользовался алгоритмом разбиения двоичного пространства чтобы сделать коридоры.
вот что у меня получилось это уже больше похоже на то, что вы искали?
1
|
|
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,213
|
|
| 25.07.2024, 09:28 | |
|
я так и не понял, у тебя задача рандомно генерить с условиями которые ты описал, или будут чертежи как твоя картинка ?
а то я тут мудохаюсь с твоим скриптом, а обратной связи что-то нет.
0
|
|
| 25.07.2024, 09:28 | |
|
Помогаю со студенческими работами здесь
13
Задание про зелье и подземелья Реализовать код процедурной генерации подземелья Как найти самый короткий выход из подземелья? Разница между двумерным массивом и массивом указателей на строки Выбрать все координаты средней линии трапеции заданной массивом массивом координат XYZ в в файл Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|