Metropolis: a city that draws itself

2023
Details
Metropolis
Giclée prints on archival paper
Sizes vary by work

Nobody planned the streets in this picture. A single point sits in the middle of a blank sheet. Then a short set of rules runs over and over again until there is no room left to build. What you end up with looks like a city plan, with long main roads, small lanes and neighbourhoods that each have their own character, even though nothing in the rules mentions any of them.

Where it started

The idea comes from Marcus Volz's generative city. My first version was written in R, in black ink on white:

metropolis-original-sketch
metropolis-original-sketch

The original sketch, from R: one ink, one density, and the same texture everywhere.

I liked how much it looked like a map. But from a distance it reads as one even grey, because every part of the city is built the same way. This year I rewrote it in Processing, and that let me give the city the things real cities have: a crowded centre, quieter edges, and districts you can pick out.

The algorithm

The rules are short enough to list:

  1. Start with one point in the centre of the field.
  2. Pick a point that is already there.
  3. Take a short step away from it, roughly in the direction its own street is heading, with a small random turn. That small turn is what makes a long street bend gently instead of running perfectly straight.
  4. Sometimes turn 90 degrees instead. About one step in ten does this, and it opens a side street. Side streets take shorter steps than the road they came from, so main roads stay long and the later lanes break the space into small blocks.
  5. Keep the new point only if it has room. If it would land too close to a street that already exists, it is thrown away. This is the most important rule. It works like a minimum plot size, and it stops the drawing from filling in solid.
  6. Draw the step as a line, and go back to step 2.

When new points keep getting rejected because there is nowhere left to build, the city is finished.

One more detail makes the result look like a city and not like noise. New points are usually picked from among the most recently built ones. So the city grows one area at a time: a neighbourhood fills up before building starts somewhere else. Only when an area is full does the growth move on and start a new front.

What changed for the final piece

Three changes turn the original sketch into the piece below.

A dense centre. The minimum spacing between streets is no longer the same everywhere. At the centre, streets can sit 40% as far apart as they do at the edges, and a gentle noise field makes the boundary of the centre uneven. The middle of the picture becomes a tight, busy old town, and the outer parts open up into wider blocks. The lines are thinner where the streets are closer together, so the centre stays crowded without turning into a dark blot.

Districts in colour. The colours are not decoration added afterwards. While the city grows, each street records which neighbourhood it belongs to. After a neighbourhood reaches a set size, the next road out of it starts a new one, and that new neighbourhood gets the next colour. So each colour shows one phase of the city's growth: the terracotta area grew together, the ochre area grew together, and so on.

A map palette. The palette is a warm cream ground with six inks: slate, terracotta, steel blue, olive, ochre and plum. It is meant to look like an old printed city map, not a screen.

metropolis-41-artwork
metropolis-41-artwork

Metropolis 41. The tight centre is the old town. Each colour is one neighbourhood, laid down in the order the city grew.

Every image can be made again

Each image comes from a random seed and a list of settings, and the file name records all of them. If I give the program the same file name, it grows exactly the same city, street for street. That means I can explore quickly with small previews, and when one is worth keeping, render it at full print size knowing the composition will not change.

The final artwork was rendered at 5197 × 7559 pixels, large enough to print at full size without enlarging it.

The same rules at night

The palette is separate from the growth rules, so the same rules can be drawn in a completely different mood. This one uses a night palette: a deep navy ground with streets in ice, sky and steel blues.

metropolis-night-artwork
metropolis-night-artwork

The night palette. The settings are the same as Metropolis 41, but the seed is different and the canvas is square, so this is a different city.

Because every ink here is a blue, the districts show only as small shifts in tone. What stands out instead is the shape of the whole city. The centre is so crowded that it glows like a city seen from a plane at night, and the light fades toward the quieter edges.