Генерация мира

Темы, связанные с проектированием и программированием roguelike-игр

Модераторы: Sanja, Максим Кич

ADB

Сообщение ADB » 23 фев 2007, 23:35

Заходите на мой сайт (templer.rlgclub.ru), я выложил свою реализацию, предложенного Максимом алгоритма фрактального генератора ландшафтов (исходник в архиве).
Можете вдоволь поиграться с построением карт, в заисимости от начальных условий, которые вы зададите программе-генератору.

Аватара пользователя
Maelstrom
Мастер
Сообщения: 2062
Зарегистрирован: 26 ноя 2006, 14:19
Откуда: г. Усть-Кирдык
Контактная информация:

Сообщение Maelstrom » 24 фев 2007, 08:45

Больно уж островки получаются корявыми... Наверное, сгладить можно как-нибудь? Интересно, а как в Цивилизации 3 генерация работает?
Айв кнгенгах Йог-Сотот

ADB

Сообщение ADB » 24 фев 2007, 08:56

Было бы интересно, каким образом можно усовершенствовать этот алгоритм... Есть идеи?

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Сообщение Максим Кич » 03 мар 2007, 15:31

Что-то народ поразбежался... Видимо, весна.

А я предлагаю следующий генератор. На этот раз - генератор лабиринтов на основе клеточного автомата. Если кто не в курсе - игра «Жизнь» - один из частных случаев КА.

В моём автомате клетки бывают трёх видов: молодые, детородные и старые.

Подготовка: на поле ставится одна «детородная» клетка.

Итерация КА:

1. «Детородные» клетки «рожают» на соседние по вертикали и горизонтали свободные поля от 0 до 3 молодых клеток

2. «Детородные» клетки становятся «старыми»

3. «Молодые» клетки, соседствующие (по 8 направлениям) более чем с тремя «старыми» клетками «умирают» и исчезают с поля.

4. «Молодые» клетки становятся «детородными»

Конец итерации

Проведя N итераций заменяем «старые» клетки на пустое пространство, а остальные, включая свободные поля - на сплошную породу и получаем карту извилистых подземных коридоров.

Комнаты и монстры - добавить по вкусу.

Иллюстрировать этот процесс достаточно проблематично, поэтому я написал стендовую модель. Прошу обратить внимание: модель использует когнруэнтный генератор псевдослучайных чисел. Генератор откровенно дерьмовый (p=40470, дисперсию не считал, но она, надо полагать, тоже не фонтан), и прилагается для демонстрационных целей.

Собственно говоря, действующий пример (183 Kb)
Dump the screen? [y/n]

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Сообщение Максим Кич » 03 мар 2007, 15:38

2ADB - красивая реализация. А «Кич» - склоняется.

2Maelstorm Улучшить можно интерполяцией и введением особых пограничных тайлов.
Dump the screen? [y/n]

Аватара пользователя
Maelstrom
Мастер
Сообщения: 2062
Зарегистрирован: 26 ноя 2006, 14:19
Откуда: г. Усть-Кирдык
Контактная информация:

Сообщение Maelstrom » 04 мар 2007, 19:29

модель использует когнруэнтный генератор псевдослучайных чисел. Генератор откровенно дерьмовый (p=40470, дисперсию не считал, но она, надо полагать, тоже не фонтан), и прилагается для демонстрационных целей.
Улучшить можно интерполяцией и введением особых пограничных тайлов.
А теперь по-русски...

Раз такая пьянка пошла, завтра, если сумею его откопать, опишу генерацию подземелья типа "муравейник"
Айв кнгенгах Йог-Сотот

ADB

Сообщение ADB » 04 мар 2007, 22:44

Maelstrom писал(а):
модель использует когнруэнтный генератор псевдослучайных чисел. Генератор откровенно дерьмовый (p=40470, дисперсию не считал, но она, надо полагать, тоже не фонтан), и прилагается для демонстрационных целей.
Улучшить можно интерполяцией и введением особых пограничных тайлов.
А теперь по-русски...

Раз такая пьянка пошла, завтра, если сумею его откопать, опишу генерацию подземелья типа "муравейник"
Было бы очень интересно!

Аватара пользователя
Maelstrom
Мастер
Сообщения: 2062
Зарегистрирован: 26 ноя 2006, 14:19
Откуда: г. Усть-Кирдык
Контактная информация:

Сообщение Maelstrom » 05 мар 2007, 15:26

Рассказываю. Всё гениально просто. Начинается всё с точки. Дальше, каждый ход выбирается одно из 4 направлений и копается там клетка. Дело в том, что вероятности разные. Вероятность копать в том направлении, в который копалось в пред. раз, больше стандартной в 6-7 раз. Вероятность противоположного направления в 2 раза меньше обычной, вероятность остальных двух сторон обычная. Получаются вполне сносные подземелья, примеры можно увидеть в лабиринте - уровни "муравейник" и "лес".
Айв кнгенгах Йог-Сотот

ADB

Сообщение ADB » 05 мар 2007, 17:22

1. А толщина стенок лабиринта при этом получается разной или одинаковой?
2. Будут ли происходить ветвления коридоров, тупики и петли?
3. А как насчет залов?

Аватара пользователя
Maelstrom
Мастер
Сообщения: 2062
Зарегистрирован: 26 ноя 2006, 14:19
Откуда: г. Усть-Кирдык
Контактная информация:

Сообщение Maelstrom » 05 мар 2007, 19:09

Толщина стенки - что это такое? Стена - это тайл, как и любой тайл, он занимает одну клетку, и всё. Уровень получается такой, как будто его рыли укуренные тараканы в брачный период. Есть и корявые залы, и узкие запутанные корридоры.
Айв кнгенгах Йог-Сотот

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Сообщение Максим Кич » 05 мар 2007, 19:21

Рассказываю. Всё гениально просто.
Прогнал алгоритм на стенде. Действительно просто. Но это совершенно другая история и совершенно другие лабиринты. Это действительно «муравейник». Желающие ознакомиться могут скачать пример.
1. А толщина стенок лабиринта при этом получается разной или одинаковой?
2. Будут ли происходить ветвления коридоров, тупики и петли?
Собственно говоря, это видно из примеров. В обеих случаях ветвления, тупики и ветки удаются на славу. Клеточный автомат делает более равномерное и плотное заполнение. Но алгоритм получается достаточно громоздким. Муравейник имеет свои плюсы, главные из которых - простота исполнения и, плюс, он действительно напоминает муравейник.
3. А как насчет залов?
Зал можно разместить в произвольную точку карты, имеющую связь с уже сгенерированным лабиринтом.
Dump the screen? [y/n]

Аватара пользователя
Maelstrom
Мастер
Сообщения: 2062
Зарегистрирован: 26 ноя 2006, 14:19
Откуда: г. Усть-Кирдык
Контактная информация:

Сообщение Maelstrom » 06 мар 2007, 12:26

Клеточный автомат делает более равномерное и плотное заполнение.
Главный минус - он попросту не генерует лабиринт. Получается просто "лес" из колонн и небольших стеночек. Хотя, может быть, именно как "Лес" он и подойдёт :)
Айв кнгенгах Йог-Сотот

Аватара пользователя
BreakMT
WANDER Team
Сообщения: 933
Зарегистрирован: 27 ноя 2006, 12:16

Сообщение BreakMT » 06 мар 2007, 13:54

А помоему крайне корявый метод из-за своей не предсказуемости.

Аватара пользователя
Maelstrom
Мастер
Сообщения: 2062
Зарегистрирован: 26 ноя 2006, 14:19
Откуда: г. Усть-Кирдык
Контактная информация:

Сообщение Maelstrom » 06 мар 2007, 15:17

Ну и про какой метод ты это сказал?
Айв кнгенгах Йог-Сотот

Аватара пользователя
BreakMT
WANDER Team
Сообщения: 933
Зарегистрирован: 27 ноя 2006, 12:16

Сообщение BreakMT » 06 мар 2007, 15:29

Про твой

Ответить

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

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