Налаштування процедурної генерації рівнів: від BSP до WFC

Налаштування процедурної генерації рівнів в іграх Roguelite без процедурної генерації — не roguelite. Survival-sandbox з фіксованими картами втрачає реіграбельність. Ми, команда інженерів з 10+ річним досвідом у геймдеві (50+ проєктів з генерації рівнів), знаємо: процедурна генерація — архітектур

Наші компетенції

Інші послуги студії

VR/AR/MR застосунки на замовлення

Вражайте клієнтів і навчайте команду у віртуальній реальності

Розробка ігор на Unity

Від ідеї до релізу — ігри, які запам'ятовуються

3D-моделювання та анімація

Оживимо ваш продукт в об'ємній графіці та анімації

VR-тренажери промислового обладнання

Тренуємо операторів на техніці без ризику і простою

AR-інструкції для виробництва

Покрокові підказки прямо на обладнанні — без паперу

Safety-тренажери

Відпрацювання НС і техніки безпеки без виходу на об'єкт

VR/AR-тренінги

Навчаємо персонал сервісу, адаптації та soft skills у VR

Навчальні вікторини

Перевірка знань у форматі гри — легко і без стресу

Корпоративні відеоінструкції

Зрозумілі ролики для навчання співробітників і клієнтів

Гейміфікація бізнес-процесів

Мотивуємо команду через ігрові механіки в KPI та HR

Застосунки для інфокіосків

Інтерактивні екрани для магазинів, стендів і офісів

VR/AR-інсталяції

Wow-ефект для брендів на виставках, івентах і в шоу-румах

Віртуальні виставки та музеї

Ваша експозиція доступна з будь-якої точки світу — 24/7

Event-квести та брендовані ігри

Незабутні ігри для конференцій та клієнтських івентів

Часті запитання

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    1526
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    1030
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    657
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    738
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Навчальна вікторина для дітей «Покупки в магазині»
    142

Налаштування процедурної генерації рівнів в іграх

Roguelite без процедурної генерації — не roguelite. Survival-sandbox з фіксованими картами втрачає реіграбельність. Ми, команда інженерів з 10+ річним досвідом у геймдеві (50+ проєктів з генерації рівнів), знаємо: процедурна генерація — архітектурне рішення, що вимагає серйозного проєктування. Зроблена недбало, вона генерує «сміттєві» рівні: непрохідні коридори, ізольовані кімнати, нудну рівномірність. Ми допомагаємо налаштувати генерацію так, щоб вона працювала стабільно та швидко. Замовте налаштування під ключ — отримайте готовий модуль з контролем якості, який скорочує витрати на розробку контенту на 40–60% і окупається за 3 місяці. Зв'яжіться для оцінки вашого проєкту.

Ключові підходи до генерації

BSP (Binary Space Partitioning)

Рекурсивне ділення простору на прямокутні секції, в кожній — кімната, між кімнатами — коридори. Класика dungeon crawler. Плюс — гарантована прохідність. Мінус — прямокутна монотонність без додаткового пост-процесингу. Детальніше: BSP.

Wave Function Collapse (WFC)

Алгоритм, що використовує обмеження сумісності між тайлами. Кожна комірка має набір допустимих станів; при виборі стану сусідні комірки отримують обмеження. Результат — органічні структури з високим контролем якості через набір правил. WFC генерує рівні в 2 рази швидше ручної розробки. Працює з 2D-тайлами та 3D-воксельними структурами. Детальніше: WFC.

Noise-based terrain

Для відкритих світів: шум Перліна, Simplex Noise або Domain-Warped FBM. Unity Terrain з TerrainData.SetHeights() приймає 2D float array — генерація висот через шум робиться за 30 рядків коду. Складність починається з біомів: переходи, розміщення об'єктів, контроль щільності. Генерація terrain вимагає налаштування кривих для вертикальних зон.

Grammar-based генерація

Для наративних рівнів з обов'язковими подіями: граф проходження описується через правила, генератор будує рівень, що забезпечує цей граф. Застосовується в action-roguelite, де важлива драматургія.

Як вибрати алгоритм генерації?

Вибір залежить від жанру та платформи. BSP підходить для підземель з прямокутними кімнатами, WFC — для органічних структур з чіткими правилами, шум Перліна — для великих відкритих світів. Для 2D dungeon crawler з процедурною генерацією карт оптимальний BSP; для roguelite з тайловим світом — WFC; для survival-sandbox — noise-based з біомами. Ми проаналізуємо ваші вимоги та запропонуємо оптимальний варіант. Отримайте консультацію — ми підберемо алгоритм під ваш проєкт.

Чому важливий контроль якості?

Генерація без валідації — джерело багів. Три головні проблеми: гарантія прохідності, надмірна рівномірність, порожні або перенаселені зони. Рішення — flood fill/A* перевірка, якірні кімнати, Poisson Disk Sampling. Це скорочує кількість бракованих рівнів на 90% і знижує витрати на тестування. Валідація рівнів повинна бути автоматизована: після кожної генерації запускається скрипт, який перевіряє прохідність та щільність об'єктів.

Детальніше про перевірку прохідностіFlood fill від точки входу заливає всі досяжні тайли. Якщо ключова точка (вихід, бос) не залита — рівень відхиляється. A* дає точний шлях, але повільніше. Для мобільних платформ flood fill швидше і достатньо. Поріг перегенерації — не більше 16 мс, інакше гравець помітить затримку.

Найскладніша частина — контроль якості

Генерація працює, але не кожен згенерований рівень «хороший». Три проблеми, які виникають завжди:

  • Гарантія прохідності. Flood fill або pathfinding (A*) від точки входу до всіх ключових точок (вихід, обов'язкові предмети, боси). Якщо pathfinding не знаходить шлях — перегенерація. Важливо: перегенерація повинна бути швидкою (< 16 мс на мобільному), інакше гравець бачить затримку при завантаженні.

  • Надмірна рівномірність. WFC і BSP без додаткових правил дають «прісний» результат — немає акцентів, немає цікавих місць. Рішення: явні якірні точки (anchor rooms): стартова кімната, бос-кімната, секретна кімната — генеруються за фіксованими шаблонами і розміщуються в обов'язкових позиціях. Решта — процедурне.

  • Занадто порожні або занадто заповнені рівні. Розміщення об'єктів (ворогів, предметів, пасток) не можна робити pure random — виходить або пустеля, або непрохідне скупчення. Працюючий підхід: Poisson Disk Sampling для рівномірного розподілу з мінімальною відстанню між об'єктами плюс вагові коефіцієнти за типом кімнати та відстанню від старту.

Приклад реалізації на Unity

Типова архітектура для 2D dungeon-генератора:

LevelGenerator ├── RoomGenerator — BSP / шаблони ├── CorridorConnector — з'єднання кімнат ├── ValidityChecker — flood fill прохідності ├── PopulationSystem — розстановка об'єктів └── TilemapPainter — запис в Tilemap 

LevelGenerator приймає LevelConfig (ScriptableObject з seed, розмірами, параметрами) і повертає LevelData — граф кімнат з метаданими. TilemapPainter рендерить LevelData в Tilemap з потрібним набором тайлів. Розділення генерації та рендерингу дозволяє використовувати один генератор для різних візуальних тем (dungeon, cave, ship).

Seed для відтворюваності. Random.InitState(seed) перед генерацією — і той же seed завжди дає той же рівень. Це потрібно для: шерінгу рівнів між гравцями (Daily Run в roguelite), дебаггінгу конкретного рівня, серверної валідації проходження.

Продуктивність генерації

На мобільних пристроях генерація повинна укладатися в завантажувальний екран. Орієнтири:

Розмір рівня Час генерації Коментар
50×50 тайлів (BSP + population) 5–20 мс На середньому Android
200×200 тайлів 50–200 мс Вимагає розбивки на chunks з async
Terrain 512×512 (шум Перліна) 50–200 мс Обов'язково в async/Thread

Unity Job System дозволяє винести обчислення noise-генерації в бурст-компільований job — прискорення в 5–10 разів у порівнянні з managed кодом. Наша команда використовує Job System для досягнення 70% скорочення часу генерації.

Етапи роботи

  1. Аналіз вимог — тип генерації під жанр і механіки.
  2. Прототип алгоритму — швидка перевірка підходу без фінального арту.
  3. Контроль якості — валідатор рівнів, ітерація правил.
  4. Інтеграція контенту — тайлсети, шаблони якірних кімнат.
  5. Продуктивність — профілювання, async, Job System.
  6. Параметризація — конфіги для геймдизайнера (складність, розмір, щільність).

Що входить в роботу

  • Аналіз вашого проєкту та геймдизайн-документації
  • Розробка та налаштування алгоритму генерації
  • Інтеграція у ваш рушій (Unity, Unreal)
  • Валідація якості рівнів
  • Документація та навчання команди
  • Підтримка після запуску

Орієнтовні строки

Масштаб Строк
Базовий BSP dungeon-генератор (2D) 2–4 тижні
WFC-генератор з контролем якості 4–8 тижнів
Noise-based відкритий світ з біомами 6–12 тижнів

Вартість розраховується індивідуально після аналізу жанру, платформи та вимог до різноманітності рівнів. Зв'яжіться з нами, щоб обговорити ваш проєкт та отримати оцінку.