Procedural generation through constraint propagation
1. Initialize: Each cell can be any tile (maximum entropy).
2. Observe: Find cell with minimum non-zero entropy (most constrained).
3. Collapse: Randomly pick one valid tile for that cell.
4. Propagate: Remove invalid options from neighbors based on adjacency rules.
5. Repeat: Continue until all cells collapsed or contradiction occurs.
Simple Tiles: Colored squares with adjacency rules.
Step Mode: Watch algorithm collapse one cell at a time.
Pipe Tileset: Connected pipes with proper connections (│ ─ └ ┘ ┌ ┐ ┼).
Terrain: Land, water, and coast tiles forming natural landscapes.