I just had a thought about this, so I better write it down so I can think about it a bit more. One thing I’ve noticed from looking at code for puzzle games (like Unruly aka. Tohu wa Vohu by Adolfo Zanellati) is that it is often easier to create a game by working backwards from the solution and adding noise or hiding information. In the case of Unruly, the game actually uses a solver to create the problem, thus ensuring that the result is solvable.
Or in the case of Bejeweled or similar match-3 type games. You can create a valid game starting board by first putting in a working solution in a problem space then filling in the area around it with empty spaces or ‘noise’ of randomly selected pieces. Then the challenge to the player is to find that solution, the ‘signal’ in all the random ‘noise’. This bit of inspiration came in really handy in one interview where I was trying to do something very similar.
Maze generation can be like that too. Start by creating a random path from start to finish, then randomly branch off in different directions to create noise and hide that solution.
This works for game design. I’ve often found in puzzle games I enjoy making order out of chaos. Think of how Tetris works by taking random pieces and fitting them neatly together in order. So finding that working signal in all the noise is satisfying.