20:31 

Fire burns much brighter when oxygen is the supplier

Green October
Текст раз


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


Совсем недавно я узнал, что помимо вышеперечисленного, у клеточных автоматов есть еще одно применение: с их помощью можно копать. Вернее, с их помощью можно генерировать разнообразный ландшафт — в том числе, пещер.


Исходной точкой здсь по-прежнему служит "Жизнь". Статья на википедии хорошо описывает, что это такое, так что не буду перессказываьт правила. Идея состоит в следующем: взять поле клеток, случайно разбросать начальное распределение живых и мертвых клеток, а потом провести несколько итераций клеточного автомата. Параметрами такого автомата будут порог смерти (минимальное число соседей, необходимое для поддержания жизни в клетке), порог рождаемости (минимальное число клеток, необходимое для рождения новой клетки), и вероятность оказаться живой в начальном распредлении. На следующих картинках живые клетки будут черными, мертвые — жёлтыми.


Оказывается, такие автоматы умеют неплохо генерировать пещеры. Вот, например, начальное распределение и первые семь итераций автомата (3,4,0.4):



Начальное распределение, как видно, представляет собой обычный белый шум, однако уже первая итерация заметно "упорядочивает" его. На третьей-четвертой итерации процесс стабилизируется, и каждая новая итерация выдаёт новую случайную "пещеру". Я просмотрел 100-200 итераций — каждая даёт новую пещеру.


Изменение вероятности начального выживания делает всю пещеру более или менее просторной. Вот примеры того же автомата для вероятностей 0.35, 0.4. 0.47:



Задание разных порогов рождаемости и смерти позволяет получать качественно другие пещеры. Вот, например, седьмая итерация автомата (2,4) для вероятностей 0.3, 0.35, 0.4 и 0.42:



Автомат (3,6) даёт несколько более "рваные" пещеры (вероятности 0.48, 0.50, 0.52, 0.60):



Автомат (5,6) даёт существенно другую картину с гораздо большими "островами" (вероятности 0.7, 0.75, 0.77, 0.80):


По всей видимости, для любого автомата можно указать интервал начальных вероятностей (обычно длинной в 0.1), для которых последовательность порождает интересные (не слишком пустые и не слишком заполненные) пещеры.

По слухам, этот метод используется для генерирования пещер в рогаликах и не только.


@музыка: Steam Powered Giraffe --- Fire Fire

@темы: простойный пост, в мире интересного, Точный мир чисел

URL
Комментарии
2017-12-13 в 13:14 

Andaushi
don't trouble trouble until trouble troubles you
По слухам, этот метод используется для генерирования пещер в рогаликах и не только.
я все же уступлю любопытству и спрошу - рогалики? это какой-то сленг?

2017-12-13 в 18:59 

Green October
Текст раз
Да, сленг. Это такой жанр игрушек.

URL
2017-12-14 в 23:16 

Andaushi
don't trouble trouble until trouble troubles you
Спасибо

     

Дневника название

главная