In this chapter
In this chapter
More objects will not fix the empty feeling
Procedural clutter is easy to scatter and hard to arrange well. A perfectly legal pot can block a door, an even spread looks like wallpaper, and ten equally prominent things leave a courtyard with nothing to look at first.
The shared composition layer starts with places people recognise, lanes and small courtyards. It builds a keep-clear field around doors, openings, low windows, gates, stair feet, landings and even the editing handles, plus a separate visual-mass field that estimates where the scene already feels heavy.
For packing, pieces are treated as circles, largest first. Each group gets one anchor, such as a tree, a pergola or a table, and the smaller pieces go around it. If a suitable object is already there, it becomes the anchor, so the layer doesn’t plant a rival next to it.

Slightly off centre
The first version tries thirty seeded layouts for each group. Each piece samples possible positions, and the cost weighs clear space, visual mass, grouping and where the lane or courtyard wants its activity.
The score targets a leftover imbalance of 0.15 of the group radius instead of perfect balance. The slight asymmetry is deliberate. It lets a group feel arranged without looking as if a spreadsheet centred it.
Seeds make the experiments repeatable. The same scene and seed should give the same arrangement whatever the animation clock says, and measurement time is kept out of the deterministic signature, so tests can come back to a visual choice and check it.
Even the empty meadow needed a test
Review found that a small bare patch of ground could count as a courtyard with no building or wall anywhere near it. The system would then dutifully decorate the meadow with a focal point nobody asked for.
A guard now rejects courtyard groups with no members. The regression test uses the same patch twice: bare, it produces no group; with a house next to it, it can qualify. It’s a neat example of turning a visual intention into a precise test.
Some limits remain. A few lane anchors sit outside the chosen camera’s view, tall trees can dominate the imbalance target, and terrace and single-facade groups aren’t derived yet. Those are questions about composition as much as about the algorithm.
And yes, there is a duck
The first creature experiment was a mallard: one low-poly mesh, a small palette, a readable outline and three poses (paddle, dabble and wake). That was enough to ask whether this animal belonged in this world.
The birds in that experiment have to be switched on explicitly. They exist only at runtime and never touch saves or undo. Flock behaviour and other species were still to come.
Richer clutter and foliage, ambient sound, a layered score and softer look profiles were still plans. The next four chapters follow that work through 24 September.
Still in the making
So far, small things have kept turning out to depend on each other. A better brick needed a shared coordinate system, a warm window needed a stable light pool, a friendly placement tool needed candidates to score, and a convincing garden needed to be allowed to leave space empty.
The player should be able to get lost in a little town. Most of the work underneath is finding the rules that let them forget there are any.
From the project notebook
This chapter draws on the project’s records as they stood on 23 September 2026.
- docs/visual-handoff.md · Feel B0a and its review fix
- scripts/composition.gd · Initial shared composition layer
- docs/visual-handoff.md · Feel C1g mallard gate
- docs/tiny-glade-feel-handoff.md · Approved mallard gate and remaining stages

