Repolode
mxgmn

mxgmn/WaveFunctionCollapse

Programa en C# que genera localmente bitmaps y tilemaps parecidos, a escala local, a un único ejemplo de entrada mediante el algoritmo Wave Function Collapse.

Estrellas
25,410
Forks
1,368
Issues abiertos
10
Último commit
hace 4 días

¿Qué es?

WaveFunctionCollapse genera nuevos bitmaps o tilemaps a partir de una sola imagen de muestra o de un conjunto de tiles. Sus resultados solo contienen patrones de píxeles de NxN que aparecen en la entrada, por lo que se parecen localmente al ejemplo, pero forman nuevas distribuciones globales. El nombre alude a la idea de una superposición de estados posibles que colapsa en uno definido, aunque el algoritmo usa coeficientes de valores reales y no mecánica cuántica propiamente dicha.

El algoritmo elige repetidamente la región no observada con menor entropía, la colapsa a un estado definido según la frecuencia de los patrones en la entrada y propaga las restricciones resultantes por toda la salida. Si se eliminan todas las opciones de alguna celda, se produce una contradicción y la ejecución falla; el proyecto señala que esto rara vez ocurre en la práctica. El repositorio incluye tanto un modelo de solapamiento para muestras basadas en píxeles como un modelo de mosaico sencillo para tilesets con reglas de adyacencia, además de un sistema de simetría que acorta las listas de adyacencia de los tiles.

El proyecto es una aplicación de consola basada en .NET, se configura mediante samples.xml y guarda los resultados en una carpeta output. Se usa ampliamente para generar niveles y texturas de forma procedural en juegos y pixel art, y cuenta con muchos ports a otros lenguajes.

Funciones clave

  • 01Genera bitmaps de salida que solo contienen patrones de NxN presentes en una única imagen de entrada.
  • 02Admite un modelo de solapamiento para muestras de píxeles y un modelo de mosaico sencillo para tilesets.
  • 03Usa la selección de mínima entropía para elegir qué región colapsar a continuación.
  • 04Incluye un sistema de simetría para tiles que reduce el tamaño de las listas de adyacencia.
  • 05Se ejecuta como una aplicación de consola de .NET que se configura mediante samples.xml.

Casos de uso

  • Generar niveles de juego o diseños de mazmorras a partir de tilesets hechos a mano.
  • Crear mapas de pixel art o texturas que se parezcan a una imagen de muestra.
  • Crear prototipos de generación procedural con restricciones definidas por un diseñador.
  • Estudiar o enseñar el algoritmo Wave Function Collapse.

Temas

Preguntas frecuentes

¿Qué es WaveFunctionCollapse?
Programa en C# que genera localmente bitmaps y tilemaps parecidos, a escala local, a un único ejemplo de entrada mediante el algoritmo Wave Function Collapse. WaveFunctionCollapse genera nuevos bitmaps o tilemaps a partir de una sola imagen de muestra o de un conjunto de tiles. Sus resultados solo contienen patrones de píxeles de NxN que aparecen en la entrada, por lo que se parecen localmente al ejemplo, pero forman nuevas distribuciones globales. El nombre alude a la idea de una superposición de estados posibles que colapsa en uno definido, aunque el algoritmo usa coeficientes de valores reales y no mecánica cuántica propiamente dicha.
¿WaveFunctionCollapse es gratuito? ¿Qué licencia tiene?
WaveFunctionCollapse es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿WaveFunctionCollapse sigue mantenido?
Mantenimiento activo. El último commit de WaveFunctionCollapse fue el 15 oct 2026.
¿Para qué puedo usar WaveFunctionCollapse?
Generar niveles de juego o diseños de mazmorras a partir de tilesets hechos a mano. Crear mapas de pixel art o texturas que se parezcan a una imagen de muestra. Crear prototipos de generación procedural con restricciones definidas por un diseñador. Estudiar o enseñar el algoritmo Wave Function Collapse.
¿Dónde consigo WaveFunctionCollapse?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/mxgmn/WaveFunctionCollapse

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados