About

Cities that don't exist.

Procedity is an experiment in procedural 3D city generation. You give it a seed – a number or any word – and it builds a whole town from it: streets, bridges, districts, buildings, then traffic and people on top. Nothing is drawn by hand, and the same seed always gives back the same city.

From a seed to a city

  1. Seed

    A number, or text hashed into one. Every random decision after this point is derived from it, so a city can be rebuilt from its seed alone.

  2. Road network

    The town picks a shape – one centre or several, maybe a river or an old core – and lays out avenues, diagonals and ring roads. The lines are turned into a graph of streets and junctions, with bridges where the banks make sense.

  3. Districts

    Each block between the streets gets a character: dense centre, old town, housing, industry, waterfront or park.

  4. Buildings

    Blocks are split into parcels, and every parcel gets a building that suits its district – towers, row houses, villas, warehouses.

  5. City

    Then it starts moving: cars follow the road graph and stop at traffic lights, people walk the sidewalks, and the day slowly turns into night.

Why make cities that don't exist?

Real towns are the sum of centuries of small decisions – a ford in the river, a market square, a road that still follows an old field boundary. I wanted to find out how much of that character can come out of a handful of rules and one random number.

More than I expected, it turns out, and still less than I'd like. Some seeds give you a tidy town on a river bend; others give you something stranger. That's the part I enjoy most: typing in a word and driving around a place nobody designed.

Everything runs in your browser. There's no server building the city and no stored map – the seed is the whole city.

Project facts

Generation
About a second per city, deterministic from the seed
In the city
Traffic, pedestrians, day and night, driving, photo mode
Built with
TypeScript, three.js and Vite