Мы с важной новостью: с 28 февраля 2025 года сервис Хабр Фриланс прекратит свою работу.

Купить услуги можно до 28 февраля 2025, но пополнить баланс уже нельзя. Если на вашем счете остались средства, вы можете потратить их на небольшие услуги — служба поддержки готова поделиться бонусами, на случай, если средств немного не хватает.

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

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

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

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

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