Статья описывает Labyrinth Procedural Generator — алгоритм процедурной генерации 3D‑данжей, созданный Райаном Карпентером в Unity для шутера от первого лица. Изначальный университетский проект был переработан и за два года доведён до рабочей веб‑демки.
Алгоритм вдохновлён планировкой уровней The Binding of Isaac (рогалик с комнатами‑аренами и ветвящейся структурой), Enter the Gungeon (bullet hell‑рогалик с комнатами и лутом), а также взаимосвязанными мирами игр серии Zelda и Dark Souls (эксплорейшен, нелинейные связи локаций). Цель — сочетать структурированность RPG (чёткая прогрессия, типы комнат, логика прохождения) с случайностью и реиграбельностью рогаликов.
Ключевая особенность — поддержка полностью связной карты при генерации тысяч комнат: обычные комнаты, боссы, магазины, комнаты с предметами и т.п. При этом разработчик получает контроль над общим лейаутом и стилем прогрессии (расположение ключевых комнат, путь игрока, распределение контента).
Блюпринты как основа алгоритма
Основой генерации служат блюпринты — разметка сетки одиночными ячейками‑маркерами, которые указывают, где потенциально может появиться комната. Это абстрактный план данжа без конкретной геометрии.
Процесс двухшаговый:
- Сначала генерируется сетка блюпринтов с маркерами возможных комнат.
- Затем второй проход парсит блюпринты и создаёт реальные комнаты по набору заранее заданных правил (тип комнаты, связи, ограничения по структуре и т.д.).
Алгоритм реализован в Unity 3D, но его можно переписать под любой игровой движок. Автор планирует развивать проект и выпустить его как скачиваемый Unity‑пакет, чтобы другие разработчики могли интегрировать генератор в свои игры.
Доступны подробный блог‑пост о Labyrinth Procedural Generator и веб‑демо, позволяющее опробовать систему на практике.
Выводы
- Labyrinth Procedural Generator генерирует связные 3D‑данжи с тысячами комнат и разными типами помещений.
- Цель алгоритма — совместить структурированную RPG‑прогрессию с рогалик‑рандомизацией и реиграбельностью.
- Система опирается на блюпринты: сетку маркеров и второй проход с правилами для превращения их в реальные комнаты.
- Решение реализовано в Unity, но концептуально переносимо на любые движки и планируется к выпуску как Unity‑пакет.