This week I’ve been filling out Borough’s tram-arrival scene and giving its plants a bit of life. The grasses, shrubs and hanging vines are now in the development demo, with wind and local interactions starting to tie them to what’s happening around them. I’ve also been building up Sage’s animation library and refining how I add painted detail to the models.
Fuller planting and more natural placement
The first grass pass was too sparse compared with the 2D reference. Adding more clumps helped, but varying their scale made a real difference too. Larger patches break up the fine blades, especially near the camera, while the tracks and platform stay clear.
I took a similar approach with the shrubs: fuller leaves, varied sizes and groups that frame the opening shot rather than compete with the tram. The leaf artwork is deliberately simple. Flat colour and a readable silhouette are doing more useful work here than lots of tiny painted marks.
The hanging vines needed a different kind of adjustment. After varying their sizes, I moved their attachment points into the bridge’s grout lines. That small placement change makes them feel as though they’re growing from the masonry instead of being pinned onto its face. The wall-climbing and corner variants still need their own placement work.

Wind that responds to the scene
I started the wind system with one existing grass, shrub and tree in a separate test scene. That let me compare calm weather, a breeze and stronger gusts before carrying the approved motion into the demo’s foliage shaders.
Godot’s global shader parameters give the foliage a shared wind direction and strength. The weather drives those values, so the plants respond together without needing to adjust every material separately. The bases and attachment points stay anchored while the exposed parts move.
On top of that weather wind, the passing tram now creates a local gust and a short trailing wake. Nearby grass bends as it goes by, then settles. Foot-contact bending is also integrated after the standing test: the grass gives way underfoot and recovers when the pressure is gone. Walking and running still need closer visual checks, but the interaction is working alongside the wind rather than replacing it.
Painted details fitted to the model
I’ve been refining the texturing process around smaller, generated hand-painted components. Instead of spreading the same detail everywhere, I fit selected pieces to the actual model: bark around a fork, marks along a rock face, or wear at a contact point.
The important part is the blending. Those details need to sit inside the existing palette and leave quieter areas alone. I then check seams, lighting and outlines in Godot, where a texture that looks good on its own can read very differently on the assembled asset.

The rock textures have passed review and placement has begun around the arrival area. I’m building up the shoreline next. The fuller tree is also in the demo for an in-scene visual check, rather than treating its close-up geometry cleanup as finished.
More movement for Sage
Sage now has her normal idle, run and flirt idle in the demo animation library. Her approved eyes and painted appearance are preserved, with blinking and gaze working alongside the animations.
Her walk still needs review before I build the idle, walk and run blend space. Having the individual clips in place is a useful step, but it isn’t the same as having the whole movement system finished.
What’s next
Next I’m continuing the shoreline dressing, checking the tree from the game cameras and working through the remaining vine placements. Sage’s walk and the player’s seated shorts fit are also still on the list. The clothing tests are staying separate from the demo while I work out a drape that behaves through the transition, not just in one pose.
It’s good to see the arrival scene filling out. The next job is to make these pieces feel as though they belong together when the camera and characters are moving through it.
