Генерация мира
Модераторы: Sanja, Максим Кич
- Максим Кич
- Администратор
- Сообщения: 1642
- Зарегистрирован: 03 дек 2006, 20:17
- Откуда: Витебск, Беларусь
- Контактная информация:
Что-то народ поразбежался... Видимо, весна.
А я предлагаю следующий генератор. На этот раз - генератор лабиринтов на основе клеточного автомата. Если кто не в курсе - игра «Жизнь» - один из частных случаев КА.
В моём автомате клетки бывают трёх видов: молодые, детородные и старые.
Подготовка: на поле ставится одна «детородная» клетка.
Итерация КА:
1. «Детородные» клетки «рожают» на соседние по вертикали и горизонтали свободные поля от 0 до 3 молодых клеток
2. «Детородные» клетки становятся «старыми»
3. «Молодые» клетки, соседствующие (по 8 направлениям) более чем с тремя «старыми» клетками «умирают» и исчезают с поля.
4. «Молодые» клетки становятся «детородными»
Конец итерации
Проведя N итераций заменяем «старые» клетки на пустое пространство, а остальные, включая свободные поля - на сплошную породу и получаем карту извилистых подземных коридоров.
Комнаты и монстры - добавить по вкусу.
Иллюстрировать этот процесс достаточно проблематично, поэтому я написал стендовую модель. Прошу обратить внимание: модель использует когнруэнтный генератор псевдослучайных чисел. Генератор откровенно дерьмовый (p=40470, дисперсию не считал, но она, надо полагать, тоже не фонтан), и прилагается для демонстрационных целей.
Собственно говоря, действующий пример (183 Kb)
А я предлагаю следующий генератор. На этот раз - генератор лабиринтов на основе клеточного автомата. Если кто не в курсе - игра «Жизнь» - один из частных случаев КА.
В моём автомате клетки бывают трёх видов: молодые, детородные и старые.
Подготовка: на поле ставится одна «детородная» клетка.
Итерация КА:
1. «Детородные» клетки «рожают» на соседние по вертикали и горизонтали свободные поля от 0 до 3 молодых клеток
2. «Детородные» клетки становятся «старыми»
3. «Молодые» клетки, соседствующие (по 8 направлениям) более чем с тремя «старыми» клетками «умирают» и исчезают с поля.
4. «Молодые» клетки становятся «детородными»
Конец итерации
Проведя N итераций заменяем «старые» клетки на пустое пространство, а остальные, включая свободные поля - на сплошную породу и получаем карту извилистых подземных коридоров.
Комнаты и монстры - добавить по вкусу.
Иллюстрировать этот процесс достаточно проблематично, поэтому я написал стендовую модель. Прошу обратить внимание: модель использует когнруэнтный генератор псевдослучайных чисел. Генератор откровенно дерьмовый (p=40470, дисперсию не считал, но она, надо полагать, тоже не фонтан), и прилагается для демонстрационных целей.
Собственно говоря, действующий пример (183 Kb)
Dump the screen? [y/n]
- Максим Кич
- Администратор
- Сообщения: 1642
- Зарегистрирован: 03 дек 2006, 20:17
- Откуда: Витебск, Беларусь
- Контактная информация:
- Maelstrom
- Мастер
- Сообщения: 2062
- Зарегистрирован: 26 ноя 2006, 14:19
- Откуда: г. Усть-Кирдык
- Контактная информация:
модель использует когнруэнтный генератор псевдослучайных чисел. Генератор откровенно дерьмовый (p=40470, дисперсию не считал, но она, надо полагать, тоже не фонтан), и прилагается для демонстрационных целей.
А теперь по-русски...Улучшить можно интерполяцией и введением особых пограничных тайлов.
Раз такая пьянка пошла, завтра, если сумею его откопать, опишу генерацию подземелья типа "муравейник"
Айв кнгенгах Йог-Сотот
Было бы очень интересно!Maelstrom писал(а):модель использует когнруэнтный генератор псевдослучайных чисел. Генератор откровенно дерьмовый (p=40470, дисперсию не считал, но она, надо полагать, тоже не фонтан), и прилагается для демонстрационных целей.А теперь по-русски...Улучшить можно интерполяцией и введением особых пограничных тайлов.
Раз такая пьянка пошла, завтра, если сумею его откопать, опишу генерацию подземелья типа "муравейник"
- Maelstrom
- Мастер
- Сообщения: 2062
- Зарегистрирован: 26 ноя 2006, 14:19
- Откуда: г. Усть-Кирдык
- Контактная информация:
Рассказываю. Всё гениально просто. Начинается всё с точки. Дальше, каждый ход выбирается одно из 4 направлений и копается там клетка. Дело в том, что вероятности разные. Вероятность копать в том направлении, в который копалось в пред. раз, больше стандартной в 6-7 раз. Вероятность противоположного направления в 2 раза меньше обычной, вероятность остальных двух сторон обычная. Получаются вполне сносные подземелья, примеры можно увидеть в лабиринте - уровни "муравейник" и "лес".
Айв кнгенгах Йог-Сотот
- Максим Кич
- Администратор
- Сообщения: 1642
- Зарегистрирован: 03 дек 2006, 20:17
- Откуда: Витебск, Беларусь
- Контактная информация:
Прогнал алгоритм на стенде. Действительно просто. Но это совершенно другая история и совершенно другие лабиринты. Это действительно «муравейник». Желающие ознакомиться могут скачать пример.Рассказываю. Всё гениально просто.
Собственно говоря, это видно из примеров. В обеих случаях ветвления, тупики и ветки удаются на славу. Клеточный автомат делает более равномерное и плотное заполнение. Но алгоритм получается достаточно громоздким. Муравейник имеет свои плюсы, главные из которых - простота исполнения и, плюс, он действительно напоминает муравейник.1. А толщина стенок лабиринта при этом получается разной или одинаковой?
2. Будут ли происходить ветвления коридоров, тупики и петли?
Зал можно разместить в произвольную точку карты, имеющую связь с уже сгенерированным лабиринтом.3. А как насчет залов?
Dump the screen? [y/n]
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 38 гостей