ГоловнаСтаттіРозробка ігор

Згортання хвильової функції: процедурна генерація, керована обмеженнями

Чому метафора квантової механіки стала найяскравішим інструментом для створення карт тайлів, текстур і 3D світів, які виглядають як створені вручну, а не випадковими.

mysimulator teamОновлено — червень 2026≈ 8 хв читання▶ Відкрити симуляцію

Суперпозиція: Метафора суперпозиції

Функція хвилі (WFC), впроваджена Максимом Гуміним у 2016 році, представляє процедурне генерування як задачу пошуку шляхів, запозичену з квантово-механічної метафори. Уявіть собі сітку, де кожен елемент все ще може бути будь-яким із T типів плиток — його «суперпозиція» можливостей. Мета полягає у призначенні точно однієї плитки кожному елементу так, щоб будь-яка пара сусідніх плиток задовольняла правилу суміжності, подібно до того, як «спостереження» колапсує квантовий механізм в єдиний власний стан і цей вибір поширюється на взаємопов'язаних сусідів.

Ентропія обирає наступну клітинку

Алгоритм ніколи не розв’язує клітин у фіксному порядку. Замість цього він завжди стискає найменш стиснуту клітину, тобто з найменшою кількістю доступних варіантів плиток, враховуючи їхню поширеність:

H(x,y) = −Σₜ p(t)·log₂ p(t), p(t) = вага[t] / Σ ваг[t′] Стиснута клітинка → H = 0. Всі ваги рівні → H = log₂(|можливостей|) Вирішення найобмеженішої клітинки першим є такою ж жадібною евристикою, що й у загальних розв’язувачах CSP — це мінімізує ймовірність того, що генератор буде загнаний в кут пізніше.

H(x,y) = −Σₜ p(t)·log₂ p(t),  p(t) = weight[t] / Σ weight[t′]
Collapsed cell → H = 0.  All weights equal → H = log₂(|possibilities|)

Распространение и обратный отсчёт

Как только ячейка схлопывается до одной плитки, её соседи могут больше не поддерживать определённые плитки своего набора. WFC удаляет эти неподдерживаемые варианты в ширину-первый проход, похожий на алгоритм AC-3 арк-последовательности из теории CSP, заставляя любого соседа, чьи набор возможностей уменьшился, переходить в очередь до тех пор пока очередь не опустеет. Если набор возможностей ячейки когда-либо полностью пуст — противоречие — оригинальная версия Gumin's перезапускается с нуля с новым семенем; более продвиженные реализации сохраняют стек снимков и отступают по хронологии вместо того, чтобы выбрасывать весь прогресс.

жива демонстрація · пов'язана симуляція● LIVE

Тілесна модель проти перекритної моделі

Існує два способи визначити правила суміжності. Тілесний зразок використовує явний, вручну створений набір плиток із визначеним парним суміжністю — швидкий, повністю контрольований і стандартний вибір для більшості генераторів рівнів ігор. Перекритний зразок замість цього навчається невеликих N×N шаблонів безпосередньо з зображення з вибірки: кожне вікно N×N у згенерованому виході повинно було бути присутнім десь у вхідних даних. Він потребує нульового ручного авторства правил і виробляє текстури, які статистично нагадують приклад, але це відбувається за рахунок швидкості та контролю творчого процесу. Обидва природним чином розширюються до 3D з шістьогранних сусідів (±X ±Y ±Z) для світів вокселів.

Области применения

WFC и его наследники генерируют планировки подземелий и городов с последовательным визуальным стилем, бесшовные бесконечные текстуры для рельефа и растительности, 3D фасады зданий и структуры из вокселей (предваряя академическую работу Пола Меррелла 2007 года на ту же тему), а также музыкальные последовательности нот, ограниченные правилами гармонии и ритма. Недавние расширения включают ограничено-ориентированную WFC, где дизайнер рисует ячейки «должно быть вода» или «должно быть стена» перед началом генерации, иерархическую WFC, которая сначала генерирует планировку комнаты, а затем заполняет каждую комнату независимо.

Frequently asked questions

Як Wave Function Collapse обирає наступну клітинку для розв'язання?

Воно завжди обирає нерозв’язану клітинку з найнижчим Шеннонівським ентропією – ту, що має найменшу кількість можливих плиток. Розв’язування найбільш обмеженої клітинки першим мінімізує ймовірність подальшого суперечництва, використовуючи ту ж жадібну евристику, що й у розв’язувачах задачі обмежень.

Що відбувається, коли Wave Function Collapse стикається з суперечністю?

Суперечність виникає, коли пропонуюче розповсюдження обмежень вичерпує набір можливостей клітинки до нуля плиток. Оригінальний алгоритм Гуміна просто перезапускає процес з нуля з новою випадковою початковою величиною; більш просунуті реалізації зберігають стовпчик попередніх виборів і відкочуються назад за часом, намагаючись повторно вибрати наступну найкращу плитку замість того, щоб відкинути весь прогрес.

Яка різниця між моделью з плиток та перекритною моделлю?

Модель з плиток використовує явний, вручну створений набір плиток із визначеними правилами сусідства – швидкий і повністю контрольований, і є стандартним вибором для генерації рівнів гри. Перекритна модель замість цього навчається невеликих квадратів N×N закономірностей безпосередньо з вибіркового зображення, що потребує нульового ручного авторства правил, але працює повільніше і лише відтворює статистику прикладу, який їй було показано.

Спробуйте наживо

Усе, що вище, працює прямо у вашому браузері — відкрийте the simulation і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.

▶ Відкрити симуляцію the simulation

Що ви знайшли?

Додати кроки відтворення (опційно)