Growing buildings in a daylight field

The Software Overview mentions a “sky occlusion field” as one line among many. It deserves more than that: it’s the mechanism that makes it possible to evolve more than one building at a time and have them actually respond to each other, rather than each pretending to be alone on an empty site.

A feedback loop, not a fixed input

Every building in a project sits inside a daylight field calculated from everything actually around it — neighbouring plots, the buildings already standing on them, the sky itself. As a building evolves, it adapts to fit that field, exactly the way it adapts to any other pattern in the fitness calculation. But the field isn’t fixed: the building being evolved is itself an obstruction, so as it changes shape, it changes the daylight field for every other building nearby. Those buildings adapt in turn, changing the field again. Run this for long enough and every building on a block is shaping, and being shaped by, all its neighbours at once — closer to trees competing for a share of the canopy in a forest than to a single building optimised in isolation.

None of the resulting variation is arbitrary or added for picturesque effect. The only genuinely arbitrary input to the whole process is where the plot boundaries happen to fall; everything else — massing, floor heights, which walls step back and where — comes from buildings adapting to best fit the pattern language and the daylight field it depends on.

A narrow gap between buildings of visibly different heights and massing, evolved to fit the site around them

Figure: Buildings of different heights and massing negotiating a shared gap — none of this shape was drawn by hand

A street-facing elevation with varying window and floor arrangements, generated by the same daylight-driven process

Figure: A finished elevation from the same daylight-driven evolution

An unplanned detail

The most interesting thing about this mechanism is something nobody actually asked it to do. Watching the results, floor heights kept coming out uneven in a specific, consistent way: lower floors were ending up with taller ceilings than the floors above them. There is no code anywhere in the system intended to make that happen — no rule that says “give the ground floor more height.” It’s an emergent consequence of buildings competing for daylight at street level, where the surrounding obstructions bite hardest, discovered by watching the output rather than designed into the fitness function.

That’s worth sitting with for a moment, because it’s a small, concrete instance of the exact case The myth of architectural creativity argues in the abstract: nobody had to be clever enough to think of “give lower floors more height near tall neighbours” as a design move. It fell out of an evolutionary process finding whatever worked, the same way life finds what works without a designer behind it.

An open question: should the trees be polite?

Push the forest analogy one step further and an uncomfortable question shows up. In an actual forest, trees don’t cooperate — they compete for canopy access, and some grow absurdly tall doing it. Right now, that’s closer to how this works too: each building maximises its own fitness against the current daylight field, with no explicit courtesy term toward its neighbours anywhere in the calculation. A hard four-storey limit exists (21 FOUR STORY LIMIT, verified in the current source), and it’s the only thing standing in the way of the same runaway height competition a real forest shows.

There’s a genuine, untested question here, not a rhetorical one: would adding an explicit “golden rule” — something that actually costs a building fitness for shading a neighbour more than some threshold, rather than only ever rewarding a building for grabbing daylight for itself — produce better streets, once every building is playing the same fairer game? Or does the current every-building-for-itself version actually produce better results precisely because it isn’t constrained that way? Nobody’s run that comparison. It would be a real controlled experiment: evolve the same site both ways and see which population of buildings actually scores higher and looks better lived-in, rather than assuming either answer because it sounds more virtuous.

Creative Commons License

© 2026 Bruno Postle (mail: bruno at postle dot net). This work is licensed under a Creative Commons Attribution 3.0 Unported License.