Repolode
mxgmn

mxgmn/WaveFunctionCollapse

Программа на C#, которая локально генерирует битмапы и тайловые карты, похожие на один исходный пример, с помощью алгоритма Wave Function Collapse.

Звёзды
25,410
Форки
1,368
Открытые issues
10
Последний коммит
3 дня назад

Что это?

WaveFunctionCollapse создаёт новые битмапы или тайловые карты на основе одного образца изображения или набора тайлов. В результатах встречаются только пиксельные паттерны размером NxN, которые есть во входных данных: поэтому они локально похожи на пример, но образуют новые глобальные композиции. Название отсылает к идее суперпозиции возможных состояний, схлопывающейся в одно определённое, хотя алгоритм использует вещественные коэффициенты, а не настоящую квантовую механику.

Алгоритм снова и снова выбирает ненаблюдаемую область с наименьшей энтропией, схлопывает её в определённое состояние с учётом частот паттернов во входных данных и распространяет полученные ограничения по всему результату. Если для какой-либо ячейки исключены все варианты, возникает противоречие и выполнение завершается ошибкой; авторы проекта отмечают, что на практике такое случается редко. В репозитории есть перекрывающаяся модель для пиксельных образцов и простая тайловая модель для наборов тайлов с правилами смежности, а также система симметрий, позволяющая сократить списки смежности тайлов.

Проект представляет собой консольное приложение на .NET, настраивается через samples.xml и сохраняет результаты в папку output. Его широко используют для процедурной генерации уровней и текстур в играх и пиксель-арте; у проекта также есть множество портов на другие языки.

Ключевые возможности

  • 01Генерирует битмапы, содержащие только паттерны NxN, которые встречаются в одном исходном изображении.
  • 02Поддерживает перекрывающуюся модель для пиксельных образцов и простую тайловую модель для наборов тайлов.
  • 03Использует выбор по минимальной энтропии, чтобы определить, какую область схлопнуть следующей.
  • 04Включает систему симметрий тайлов, сокращающую списки смежности.
  • 05Работает как консольное приложение на .NET, настраиваемое через samples.xml.

Сценарии использования

  • Генерация игровых уровней или планировок подземелий на основе созданных вручную наборов тайлов.
  • Создание карт или текстур в пиксель-арте, похожих на образец изображения.
  • Создание прототипов процедурной генерации с ограничениями, заданными дизайнером.
  • Изучение алгоритма Wave Function Collapse или обучение работе с ним.

Темы

Частые вопросы

Что такое WaveFunctionCollapse?
Программа на C#, которая локально генерирует битмапы и тайловые карты, похожие на один исходный пример, с помощью алгоритма Wave Function Collapse. WaveFunctionCollapse создаёт новые битмапы или тайловые карты на основе одного образца изображения или набора тайлов. В результатах встречаются только пиксельные паттерны размером NxN, которые есть во входных данных: поэтому они локально похожи на пример, но образуют новые глобальные композиции. Название отсылает к идее суперпозиции возможных состояний, схлопывающейся в одно определённое, хотя алгоритм использует вещественные коэффициенты, а не настоящую квантовую механику.
WaveFunctionCollapse можно использовать бесплатно? Какая у него лицензия?
WaveFunctionCollapse распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
WaveFunctionCollapse всё ещё поддерживается?
Активно поддерживается. Последний коммит в WaveFunctionCollapse — 15 окт. 2026 г..
Для чего можно использовать WaveFunctionCollapse?
Генерация игровых уровней или планировок подземелий на основе созданных вручную наборов тайлов. Создание карт или текстур в пиксель-арте, похожих на образец изображения. Создание прототипов процедурной генерации с ограничениями, заданными дизайнером. Изучение алгоритма Wave Function Collapse или обучение работе с ним.
Где скачать WaveFunctionCollapse?
Исходный код и инструкции по установке — на GitHub: https://github.com/mxgmn/WaveFunctionCollapse

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты