Генерация локации (острова)

Добавлено 11 дек 2022 в 02:52
Генерация была написана для игры (rogue-like, 2D, вид сверху) на Unity и переведена на C#. Но тут представлена в изначальном варианте на Python, так мне было удобнее.

Принцип работы основан на делении ребер треугольника.

Сам принцип: Создаем поле 100х100 точек, определяем область генерации первой локации (10х10 в центре) и рандомно , с ограничениями, генерим 3 вершины треугольника. Определяем его центр и центры его граней. От центра в направлении каждой вершины и каждого центра грани проводим отрезки, формируя шестиугольник. И так создаем еще пару локаций увеличивая у каждой количество вершин в 2 раза. Мы отметили и запомнили все вершины будущего острова. Заполним его: начиная с самой большой локации "закрасим" периметры каждой и "зальем" их построчно. Готово!

Алгоритм при небольшой доработке позволит создавать карты разных размеров.
B5afe0e950 02933ae96c 59b1ea9dd0 6130533a99 C342fda417 89fb11947a