|Vertical (downwards) dependency = Good :)|
Horizontal (sibling) dependency = Bad :(
Circular dependency = Really Bad :( :(
The Price We Pay
|Bounds of our 10 km x 10 km x 200 m city|
- If too small to subdivide, instance a zone and return.
- If we aren't forced to subdivide (because we are too big), optionally instance a zone and return.
- If we are too small in one direction then subdivide in the other direction, otherwise choose a direction.
- Choose a split point such that no sub-regions are too small to instance.
- Split into two parts and recurse into each part in turn.
|Recursive city zone subdivision procedure|
- 1 business zone (offices, skyscrapers)
- 1 commercial zone (shops, restaurants, tourist attractions)
- 1 industrial zone (chimneys, factories, and storage facilities)
- 1 space port zone (space ship docking and handling)
- Leisure zones (parks, monuments, and recreation areas)
- Residential zones (housing)
- Distance from each district centre.
- Size of each district.
- Weightings of the non-centralised district types.
- A random factor to introduce variation and avoid clean district boundaries.
|Main zone type calculation procedure|
|Zone design parameters wrapped in their own procedure|
|Distribution evaluation via chained tests|
|Individual distribution test procedure|
|City zones classified into district types|
|Varying the seed to produce different cities with similar structure|