God, this is true and I didn't even think of it.
Cities do not grow up because people live there. Rather, They grow ABOUND something, like a church or market or temple. Maybe we even get small towns growing around Inns and Mead halls.
If there were multiple centers of growth in a town, it would adequately simulate the "district" idea above.
Possibly the relative "density" of the town could be simulated like the caverns are now, with varying "alley density" and "market square openness". And if two towns were nearby, a sort of "metablob" effect could occur.
A mockup of what I mean:
This "Border wall map" was generated simply with overlaying gradients, then taking a threshold. The black is the city area. White is the countryside. Blue dots are centers of interest, and brown are main roads, connecting between points of interest at the smallest distance each time. See how the smaller centers of interest outside the town are connected with big roads. When entering or exiting the "wall zone" there would be gates.
Just something I whipped up in 10 minutes that a computer could do in 3 seconds.
edit:
Possibly we could have pre-defined objects, defined much like custom workshops, as points of interest that the procedural city could grow around.
I already said something about this in the FotF thread, so I'll just quote it...
Anyway, as someone said before, many cities start out as a military outpost where the city grows as services to the military that is stuck in that one point. Other cities, like London, grow around a port (See Jiri's map again) and then fan out from there.
There is a reason for this - many of the industries that grow a city are fairly flexible - you can set up a clothier's shop anywhere you can ship cloth or fabric. The "seeds" of cities are typically things you can't move, but which attract people to live near them to perform industrial activities there. Either it's because the government moved a military base there, and the people live near the military base, or because the river is there, and you can't move the river, or because some natural resource only occurs in regions like that one, and the industry based on that resource cannot be moved very far away from that sort of resource because it is difficult to ship properly. [...]
In a time before good transportation, cities developed packed together, even though it made for terrible living conditions, only because they had to live within walking distance of their jobs and all their services. As soon as people had access to personal cars or public mass transit systems, people started spreading out from cities, and living in the suburbs around cities.
Hence, if you want to accurately model cities, you need to start with a city centered on some sort of industry that acts as a source of jobs that attract people to live there, preferably one that has to be in that one specific location for some reason (rivers, major iron foundries on sites where there is both iron ore and fuel for the iron industry, major military outposts, major trade crossroads, etc.). All the first houses crowd around that job center, and then commercial districts and support industries pop up around the initial wave. These smaller, more movable industries can be placed anywhere there is a market of people to support them. (This is something like clothiers or leatherworkers or small-time blacksmiths or metalsmiths. Things that can set up anywhere their market goes.) These act as job centers on their own, creating a fractal effect as each smaller, minor job center pops up off of the outskirts of the other job centers, causing the city to spread out radially along more and more individual points.
Rivers, especially the mouths of major rivers are historically THE place where cities formed, however - rivers are trade hubs, sources of water, destinations of sewage, and, with fishing fleets, even a source of food. (It's your highway, sewer, drinking fountain, and sushi bar, all-in-one!)
As a trading crossroads, all the towns upriver of the mouth of a river could easily send goods down to the mouth of the river by river barge, but then had to change over to ocean-going vessels, where they had access to the rest of the world (and it was easier to ship large volumes of trade goods halfway around the world by ship than to the next town over by wagon), meaning that almost all the trade in the entire region had to take place at the ports at the mouths of the nearest major river. This, in turn, is where the wealth of the nations gravitated.
EDIT:
Oh, and shipyards - docks are their own job center, but so are shipyards, and if you have forests upriver from a city with a port, you're going to have a separate industry built around some sort of shipyard, as well. And those are even more major industrial centers.
Basically, if you take that idea of multiple city centers, you could also put a "weight" on each of them, where each one claims greater areas around itself, depending upon how many jobs it creates, and how much people want to live clustered around them.
Then, you start building up your support centers based upon having a certain density of population around them - a social center like a local coffeehouse or bar or theater will only spring up around enough people to support them, as will other commercial entities, like food marketplaces or other stores offering goods and services that can thrive on dense population centers.
If enough clothiers move into town, a clothing industry might start up nearby to act as a support industry - New York near the turn of the century had a very famous clothing industry (leading up to the
triangle shirtwaist factory fire) because it got so many immigrants that both needed clothes and had experience with working in the clothing industry (especially Jewish immigrants, which due to some specific social issues, were largely confined to cities and had experience with the clothing industry from the old world). This can act as the next little dot on that map, the next job center that attracts its own labor force, and its own support industries to pull in more workers.
When making that, however, unless there's a reason to put the industry far away, the industry will probably spring up as close to the outskirts of the other job centers as possible - cities are clustered in tight bunches by their very nature, so there shouldn't be small areas that are flung away from the city unless there is a specific reason for that - either a fortress built up on a hill to overlook the city, or an industry that HAS to be separate from the rest of the city. (Leatherworks were thrown far from city centers because it involved using urine and feces to treat the leather, which was obviously quite horrid to be near.)