One of the things I've been thinking about is re-using levels. I've been thinking about this not only in terms of The Machine City (my pet game), but also in terms of other genres. Like an RPG, or an FPS.
As Chris Bateman points out, reusing levels is also an excellent way to cut costs. If you're doing episodic content, then you really only have two choices: reuse levels, or generate them randomly. To create more than one or two new levels for an episode would simply take too much time.
Some people like the idea of "user submitted levels", whether that means levels the user makes for himself, or levels the user downloads from a pool of user-made levels. For example, in the favorite of my game designs, "Spider Space", each player designs his or her own space ship.
But there's a sterile feeling to a level which follows your design entirely, and game designers usually know that. There's a disconnect. So the levels are bombarded by game events. In City of Villains, your lair is continuously tested by heroes. In Animal Crossing, your village has a lot of elements which go on, real-time, outside your control.
There's some serious problems with this, though. Many gamers love the feeling of control. Although I often like a hard game, I also often enjoy an easy game, where I simply explore the gamespace. Having my citadel of doom trashed every ten minutes by a hero would just irritate me (although I'm sure that's not how it happens). Even random characters bugging me to do me favors is often irritating, because the favors are things I don't need, and they often screw up my meticulously designed level.
So the question is, can you design a level system with the following parameters:
A) It must serve a large number of play types, including puzzle, combat, team combat, and social play.
B) It must vary significantly from play to play, without requiring extensive re-coding.
C) It must feel like a living space - IE, there must be an emotional connection between the player and the space.
The only way I can see to do this is to create an NPC engine which makes NPCs inhabit a given level "deeply". For example, if you build a ship, your NPC shipmates live on the ship. They have stuff, they leave signs that they exist, and they talk to each other. So, if you were to search the whole level, you would find detailed tidbits about each NPC - hear them talking, uncover their emails, and so forth. The next time, it would have advanced (and, if they realized you'd been messing with their stuff, further protected).
Hrm. Hrm hrm hrm. That could be loads of fun.