House of Bonsai · Development update

Buds that fight for light, and a cherry saved by a pot.

Sixteen days, and the trees feel more alive than they ever have. Buds now fight over the light their shoot gathers, and that's switched on for everyone. The whole growth model moved into Rust, so a dense tree's day runs 46 times faster. Every species now has a way to thicken its trunk and hold a wire, and junipers can finally build real pads. The cherry's stubborn trunk was fixed by a big plain pot. Then I set myself a challenge I couldn't resist: grow two trees into the shape of real bonsai photographs, with nothing but the tools a player has.

Results

Bud fate is the game's default on main and passes all seven grower targets (run 20261029-234118); the three trees with a history were regrown under it and match their saved fixtures. The growth-paths fixes went in with 8 of 8 checks on the merged main (20261030-032315), and the pot-bound rule with 14 of 14 (20261101-085037, with history-start rerun as 20261101-090952 after the display server dropped). Everything ran on a cloud machine with software rendering; the release suite, bench timings and the Windows fixture match wait for the development PC. The reference shaping, pad droop and photo bark all live on branches for now.

Development capture, 30 October: a young juniper at the bench in the courtyard just after Trim branch (Shift+C), four shoots trimmed and eight buds waking behind the cuts.
Development capture, 30 October: a young juniper at the bench in the courtyard just after Trim branch (Shift+C), four shoots trimmed and eight buds waking behind the cuts.

What a cut says back

First, the thing I promised last time. Make a cut and the tree now tells you what happened next. The green marks stay on the buds you woke until each one has a leaf, and the plaque speaks up when a stub dies back and when a wired bend is 95 % set. There's a new watch span too, Until it answers. It runs at the game's own pace and drops you into the same-camera comparison the moment the tree responds. On a nursery ficus the first bud broke 9.9 days after the cut, and a stub on new wood died back right on day 21.

My favourite surprise came from the wire. On a summer ficus it starts to bite on day 57.8, and the bend is set on day 59.9. That's the exact order growers work to, so the watch now stops for the bite and tells you how far the wire has set. Zooming in to three centimetres also caught something embarrassing: every juniper twig was drawn as brown bark from its very first millimetre. A real shimpaku shoot is green, wrapped in its own scale leaves. Now it's drawn green for as long as its leaf lives, browning into bark as the stem passes 2 to 3 mm.

Trees with a past

Next up, trees that arrive with a story. My one rule: nothing gets faked. Every history is a program grown from the nursery's own sapling, cut, wired, chopped or neglected on its dates, and its last day becomes the save that ships. There are three of them. An abandoned ficus. A juniper snapped by a late snow, which meant breaks finally had to look like breaks. The tension side tears into a brush of fibres, a tongue of wood is left where the compression side gave last, the splinters are thin leaning ribbons, and the fresh face dries from cream to straw and goes grey over a year. And a ficus someone forgot on a windowsill.

That windowsill ficus exposed a hole in the model straight away. Ten days without water took a quarter of its vitality and didn't drop a single leaf! So dry spells now shed leaves, oldest first, mostly in the days after the soil is wet again, which is exactly what figs do. The buds in those leaves' axils push new shoots one to three weeks later. Then bud fate went on (more on that below) and the neglected ficus came back bushier and much weaker, because three times the leaves drink the bowl dry faster. Its last twelve dry days nearly killed it. With eleven, you meet it at a vitality of 0.43: struggling, with a real chance of coming back.

A thin ficus on the exhibition stand with pale stems and sparse yellowing leaves.
The neglected ficus: as you meet it, regrown with bud fate on and fighting its way back.
A leggy ficus on the exhibition stand with long untrimmed shoots and scattered leaves.
The abandoned ficus: grown from the nursery sapling and left to its own devices.

The model moves into the game

This one is invisible, and I'm thrilled about it. For two weeks a Rust copy of the growth model had sat beside the GDScript one, matching it value for value, and only my growth slider ever used it. Now the game does. The tree still rests as a GDScript dictionary, so every tool, the view, saves and undo work exactly as before. The moment time starts, Rust takes the tree, and it hands it back when time stops. It went in over four phases. Each time I grew the same trees both ways and compared every value, and every single comparison came back identical.

Insisting on identical trees flushed out two old bugs. A run that started partway through an hour reused a cache the other copy never had, so a reloaded tree grew a hair differently. Every run now rebuilds its caches first. The sneakier one dated back to 17 October. A wire's held angle came back from a save a millionth of a millionth of a radian off, the comparison demanded an exact match, and so every load treated every wire as freshly bent and the plaque restarted its count. Both are fixed.

The same tree, the same workGDScriptRust
A dense tree's day7.4 s0.16 s
A tended watch4.6 s0.25 s
Two days of growth testing at 10 times43 s4.4 s

Buds that fight for light

Here's the big one. It's the change the early-access build was waiting for, and it's now on for everyone. Every dormant bud on a branch competes for the light its shoot gathers and the vigour of the wood under it, and the winners break. The topmost bud gets a head start, as on a real shoot, and a cherry's buds on this season's growth set and wait for spring.

Before tuning anything I wrote down targets from growers' and researchers' numbers. An unpruned one-year cherry shoot breaks one or two buds below its tip each spring. Mine broke three to eight, at every one of 72 settings! The culprit was the ranking. As soon as the top bud broke, the one below it inherited the head start, then the next one down, and so on. Once the shoots that had already broken counted in the ranking, holding back the buds below them the way real tips do, it broke two. Each species then got its own thresholds, and the juniper had its own calibration pass before the switch went on, so two years of scissor work still builds about the same juniper. All seven targets pass. Look at the ficus below: nearly five times the organs from the same program.

Two years, day 730Bud fate offBud fate on
Cherry, develop program116 organs, branch order 1155, order 2
Ficus, refine program218 organs, order 31,015, order 4
Juniper, never pruned156 organs194
Juniper, two years of scissors189 organs, order 3190, order 2
A two-year cherry in the training bowl with a few long shoots.
Cherry, bud fate off: two years of the develop program, 116 organs.
The same cherry program with bud fate on: a fuller, more branched crown.
Bud fate on: the same program, 155 organs.
A two-year ficus with a thin trunk and sparse shoots.
Ficus, bud fate off: two years of the refine program, 218 organs.
The same ficus program with bud fate on: a dense rounded crown.
Bud fate on: the same program, 1,015 organs.

A pot that saved the cherry

Next I wanted the basics solid on every species: a clear way to thicken the trunk, to wire it, and on a juniper to build dense pads. The ficus already did all three. The juniper and the cherry barely seemed to care what you did to them. My first idea was more vigour, and it backfired badly. Four to eight times the shoots, and the densest foliage ended up on the tree nobody trimmed.

The cherry pointed at the real culprit. Its roots had packed the training bowl within two years, and after that nothing happening above them made any difference. Growers fatten trunks in the ground or in big containers, so the game now has a plain grow pot holding 6.6 litres of soil (the training bowl holds 2.1), in the nursery and at any repot. A two-year cherry in it adds 1.6 times as much trunk. The ficus and the juniper aren't root-bound yet at two years, so they'll feel the pot later on.

Cherry, two years from the nurseryTrunk at the baseOrgans
Training bowl10.6 mm162
Grow pot14.1 mm317
A two-year cherry in the training bowl.
Training bowl: two years, roots packed.
A two-year cherry grown in the grow pot, larger and leafier, shown in the display bowl.
Grow pot: two years, drawn in the display bowl.

Wire sized to the wood, and scissors

Wire came in one gauge, which meant a trunk four times its nursery thickness kept just 3 % of its bend. Now the wire is sized to whatever wood it goes on. A thick trunk holds a bend as firmly as a young branch does, and it still sets over about two growing months.

Pads needed the tool every grower reaches for: scissors. Press Shift+C, or Trim branch, and every shoot on the branch, or on the whole tree, is trimmed by the species' rule. A juniper's runners go back to three foliage clusters. Five years of that gave the juniper branch order 7 and the densest foliage of all three runs, and it cost some trunk, just as growers say it does. Each species' Shaping page in the manual now explains how that tree thickens, takes wire and gets trimmed.

Juniper, five yearsTrunkBranch orderDensest 10 cm
Left to grow19.6 mm265 leaves
Old scissors program18.2 mm553 leaves
Bench trim, Shift+C15.6 mm783 leaves
A five-year juniper left to grow: tall and open.
Left to grow: five years.
A five-year juniper under the old scissors program: airy sprays.
Old scissors: five years.
A five-year juniper trimmed at the bench from year two: dense foliage clusters.
Bench trim: five years, from year two.

Grown toward a photograph

With all of that in place I gave myself a challenge. Start from a nursery sapling and grow a tree into the shape of a real bonsai photograph, using only what a player has: wire, cuts, trims, jin and shari, care and time. No edited models, no added assets. Wherever the game couldn't get there, I'd write down why.

The juniper's reference is a shohin shimpaku from my research folder. The photo belongs to someone else, so you're only seeing the game side here. My first tree hit an outline match of 0.81 once its pad was cleaned up. Its trunk line had been set too late, though, and a 25 mm trunk only takes a few degrees of bend. So I regrew one from the stock with the photo's line wired in early, jinned the stubs at the turn and ran two strips of shari up the trunk. That one has the photo's trunk line, white deadwood and all. It scores 0.77, a touch lower, because its pad sits on top of the branch where the photo's hangs down. A pad droop rule, where loaded young wood sags and sets, pushed it to 0.79. It also shortened a young cherry's first summer below that check's floor, so droop lives on its own branch for now.

Grown toward a photoOutline matchTrunk at the base
Juniper, first tree reshaped0.8125.2 mm
Juniper, regrown with deadwood0.7727.7 mm
Same, with pad droop (branch only)0.7927.7 mm
Ficus from the nursery0.7328.1 mm
A wired juniper stock grown out wildly, wire removed.
Grown out: the first juniper's wired stock let run, wire off.
The same juniper cut back to a single arching branch.
Cut back: to the branch that becomes the pad.
A juniper with a white jinned trunk and a dense arching pad on the exhibition stand.
Reshaped, 0.81: the first tree, its pad cleaned up.
A second juniper with a curving white trunk and an arching branch ending in a pad.
Regrown, 0.77: the photo's trunk line wired in early, with jin and shari.

A ficus, and the room a tree has

For the ficus I found a lovely reference: a Ficus retusa at the Krohn Conservatory in Cincinnati, photographed by Daderot and released into the public domain. One trunk wire, daily trims to the photo's outline and a few rounds of branch wiring toward the gaps took a nursery sapling to 0.68. Then it simply stopped growing. A tree in the game has room for 2,048 organs, and this one had filled every slot, so the low right pad never formed and the trunk crawled along at under a tenth of a millimetre a day. I cut it hard back to six organs a shoot and regrew it a day at a time. The gap between the apex and the right pad opened up, and it climbed to 0.73 with a 28 mm trunk (the photo's is around 30).

What's left makes a great to-do list. The photo's tree stands on a broad, pale base of fused aerial roots, and the game can't grow aerial roots yet. The open space under its pads fills with leaves on the inner wood, which no trim can reach. And its fresh leaves came out yellow-green. That last one was my own doing. I'd grown it at the testing rate, which speeds up the carbon and leaves the calendar alone, so a tree with years of growth in it was wearing leaves a few days old. Grown on at the normal pace, the leaves darken and the trunk keeps thickening, about 3 mm a year.

A Ficus retusa bonsai with a pale fused root base in a blue pot, in front of a shoji screen in a conservatory.
Reference: "Ficus retusa bonsai, Krohn Conservatory" by Daderot, CC0 1.0, from Wikimedia Commons.
The game's ficus on the exhibition stand, an informal upright with several rounded pads.
The game, 2 November: a nursery ficus shaped with the player's tools, outline match 0.73.

A pot-bound trunk slows down

Shaping the juniper turned up a rule the model was missing. Its trunk tracked its pad, so a full pad came with a 35 mm trunk whatever pot it was in, against roughly 21 mm in the photo. Growers count on a refined tree barely thickening in a bonsai pot. So now a pot-bound tree lays less wood per leaf the more its pot squeezes the roots, and the carbon it saves stays in its store. With the new rule the juniper reached the full pad's outline on a 25 mm trunk. It's on main, together with a fix to the watering check it tripped, which now measures what the advice actually costs a tree.

The juniper with a full pad on a thick trunk.
Old rule: the full pad on a 35 mm trunk.
The juniper with a similar pad on a visibly thinner trunk.
Pot-bound rule: a similar outline on 25 mm.

Bark that ages, from photographs

I wanted to know whether bark ages if you keep a tree for thirty or fifty years. Short answer: it didn't. After year two a ficus's or a juniper's bark just stretched as the trunk widened. My first procedural attempt at ageing looked wrong, so now the bark comes from real photographs. Each species gets young, adult and old bark, each rebuilt from photos into a 70 mm tile at true scale. The trunk blends between them by the age of its own wood, and trees kept outdoors gather moss and lichen day by day.

The young juniper and ficus bark comes from my own trees. The older phases come from public-domain and CC0 photographs on Wikimedia Commons. It all lives on its own branch for now. The juniper is the clear win so far, and the old cherry is still being warmed and darkened to match its younger bark.

A close view of a juniper trunk at 50 years with smooth procedural bark.
Before, 50 years: the procedural bark.
The same trunk view at 10 years with grey photo-based bark.
Photo bark, 10 years:
The same view at 30 years: red-brown fibrous strips.
30 years:
The same view at 50 years: deeper red-brown strips with moss in the fissures.
50 years:

Juniper adult and old bark from "Juniperus scopulorum" by Daryl Nolan (CC0) and "JuniperBark" by Mark A. Wilson (public domain); ficus from bonsai trunk photos by Tangopaso (public domain); cherry from "Prunus serrulata" photos by AnRo0002 (CC0).

What's next

  • Ficus growth fixes, underway on a branch: aerial roots that grow as part of the tree, deep-shaded inner shoots shed on every species, and the ficus reshaped at the normal pace.
  • Pad droop: get loaded pads hanging without shortening a young cherry's first summer, then decide whether it goes in.
  • Bark: finish the old cherry, drop in the full-size photographs, then take a look on the development PC.
  • The checks only the development PC can run, the release suite, bench timings and the Windows fixture match, ahead of the early-access build.

What I learned

Find the bottleneck before you tune the engine. Extra shoots could never thicken a trunk whose roots had nowhere left to go, and a bigger pot did it at once. When things compete for rank, count the winners too, or every win just promotes the next bud down. And know exactly what your test speeds up. The testing rate multiplies growth and leaves time alone, so a tree grown at it wears leaves a few days old. The yellow-green I nearly set out to fix came from my own shortcut.

Sources & development context

Based on House of Bonsai's source history and notes from 18 October to 2 November: the development story's chapters 48 to 54, the check runner's records (bud fate targets 20261029-234118; the merged growth paths 20261030-032315; the pot-bound rule 20261101-085037 and 20261101-090952), the growth slider's two- and five-year runs, the reference-shaping and bark-ageing studies, and the model's own measurements of organs, branch order, trunk diameter and outline overlap. Captures are from the game's own views on a cloud machine with software rendering, without the game's screen-space shading, so they read flatter than on a desktop GPU. The juniper's reference photograph is not reproduced. The ficus reference is "Ficus retusa bonsai - Krohn Conservatory - DSC03589.JPG" by Daderot, CC0 1.0. Bark photographs: Juniperus scopulorum by Daryl Nolan (CC0), JuniperBark by Mark A. Wilson (public domain), Ficus carica and Ficus retusa bonsai bark by Tangopaso (public domain), Prunus serrulata by AnRo0002 (CC0), all from Wikimedia Commons. Every number here is a game capture or a model output.

All House of Bonsai posts