In this chapter
In this chapter
Keep the arrangement you like
The composition library in the last chapter could produce a garden in a test scene. Next came a way to choose another arrangement: select a group and reroll it. The chosen arrangement then needed to survive moving the group or saving the scene.
The answer was a seed override stored on the group’s lowest-numbered member. Moving the group keeps its choice, and rerolling is one undoable edit. Old scenes need no new field. Deleting the member that owns the seed loses the curation, though, and copying or splitting a group does not carry it over. Those are the boundaries of this first version.
The live editor first showed markers for the anchor and the smaller pieces. Once actual props replaced those markers, they had to fit around the buildings and keep up when something moved.
The crates were missing for a reason
The first clutter library had seven problems to fix after review. Later passes wired it into the world and exposed less obvious problems. An attached part’s local position had been treated as its world position, so the cache could confidently reuse the wrong answer.
Another failure was almost comic: the area offered to a packing routine sat inside its own keep-clear band. It had been asked to place objects in a space that its rules forbade. Widening the search sideways gave it somewhere legal to put them.
The repaired dressing reads all the openings. Doorways need room to walk through; a styled facade with no drawn door should not reserve space for an imaginary one. Window zones can take over there. Crate and plank stacks also gained actual tilted meshes, with lean accumulating up the stack, so the silhouette carries the looseness.
During a drag, the last dressing stays in place except for pieces owned by the thing being changed, which are hidden. A full sync on release rebuilds the answer. The cache signature includes geometry and terrain context, and a separate drawn hash makes sure a correct calculation cannot leave an old mesh on screen.
Things that need two neighbours
Laundry asks for upper windows facing each other, two to six metres apart. Lights can run between lamps, and a flag can invite bunting. These details belong to the gap between buildings, so each object has an undoable links toggle when the automatic result is too much.
Chimneys check the roof around them, including dormers. When there is too little space for a chimney, a copper vent can fit instead. A lamp on the ground gets a post, and a nest looks for the meeting of roof and wall. Each rule gives a small prop a reason to be where it is.
Plants read the room
Foliage began using a cheap estimate of its surroundings. Sixteen directions sample how open the sky is; nearby geometry provides shade, and distance to water gives a wetness hint. Trees lean into openings while their feet stay put. A review expanded the available shapes to thirty-six variants, with differences in fullness and colour.
Ground contact matters. Buildings lifted more than five centimetres lose their base growth, and doorways and clutter keep their clear space. The Flowers brush stores density in the scene; the individual flowers are derived. Reeds favour soft shorelines, while lily pads occupy the water.
Ivy follows wall columns spaced forty centimetres apart. A spatial hash helps it find nearby surfaces, and forbidden areas keep it out of windows, signs and other props. It has to start where it can reach the ground. Moss draws on damp and shelter rather than a random green wash.
These plants are generated again on load. Saving every leaf would make the document enormous and tie it to a particular rendering. The scene records the choices the player made, while the surroundings decide what can grow from them.
From the project notebook
This chapter draws on the project’s records as they stood on 24 September 2026.
- docs/visual-handoff.md · B0b, B3 review repairs and B3b
- docs/visual-handoff.md · B4a, B4b and B4c
- Frozen excerpts captured 24 September 2026; implementation through B4c

