Is this idea viable/has it been attempted: Meta-procedural generation.
Headline version: Procedural generation of a procedural generator. It figures out the "rules" based on you approving, correcting, or discarding it's attempt to match your criteria.
Here's a rough idea of the process for a level generator:
- The interface is like a split-screen game. Your side on the left, the systems output on the right.
- You create a box on the left side
- It generalises what you did, and presents a different box on the right side of the interface
- If the box it generates does not 'fit your criteria' then you modify it or delete it. EG if it generates a box too thin, you stretch it out or simply discard it's attempt
- You repeat this a few times, on successes or fails or corrections it will regenerate a follow-up attempt
- It continually refines it's rules based on what you accept/discard/change.
- You now have a box generator that generates boxes to your liking
- You then add a corridor box, it attempts it, messes it up by overlapping it with box#1, you correct it or discard, etc. It gradually learns the rule that the corridor box should share an edge with box#1.
- It converges on a ruleset which matches what you want to see over time.
This could apply to any proc gen. EG object placement. You place a chair in a room, it attempts it but places it floating in the air, you move it down to the ground, and it loosely infers that "chairs are on the ground" and tests that criteria with you a few times.
So basically in these examples it would be figuring out the parameter space for size, position, and relative positions of multiple things. Likewise could be generating a landscape or whatever else by the same sort of system.
Implementation would be complex, but might be viable as a handy tool for making procedural generation in a more user-friendly/codeless way.