A while back, I ported and improved a level generator for the platform game N. It was pretty good. The way it works is to generate tiles based on loose patterns and then plunk a random number of objects and gold onto the map. It then tests that the map is solvable using an A* algorithm and, if it's not, it regenerates. It was fast and generated levels with a playability of about 90% which could have been improved even more if I'd wanted to put a bunch of edge cases in.
But programming edge cases isn't fun. More than that, the levels weren't fun. In order to make a procedurally generated level fun, you have to, amongst other things, ensure that a player has to visit many if not all parts of the map in order to complete it. This is, typically, achieved through pathfinding through nodes and groups of nodes in an RPG or rogue-like dungeon but these maps didn't have anything like that and there wasn't an easy way to work that sort of information into them with the current system.
Thankfully, everyone and their game-developing grandmother has radical new ideas about tiling patterns and random map generation. Two of the most interesting articles I've read recently are a look at using bitmasks to group tiles and a criticism of the Wang tiling system and suggestions for improvements.
I'm wondering if, together, these techniques could provide enough flexibility to be a suitable replacement for how I'm currently generating tiles. I'm sure I could commission some map-makers to create for me some segments, some readymades if you will, that I can categorize and put together in a way that would allow me to ensure that a player must traverse more of the map in order to complete it. It might also increase the playability to 99% or, dare I dream, 100%.