This proof-of-concept is a lightweight 2D plant simulator designed to make branching behavior obvious and controllable in real time. It runs entirely in a single canvas scene (sky + soil), with a simple HUD that lets you push the system into different growth regimes.
What you are looking at
- Main stem: grows upward in internodes (segments). Each time an internode completes, a new node is added.
- Stem branches: lateral axes that diverge from specific nodes on the main stem. They grow faster than the main axis so branching is visually clear.
- Roots: an actively branching root network rendered inside the soil. Roots start with multiple tips immediately and continue splitting “early and often.”
- Leaves: paired at nodes on the main stem and stem branches (roots do not generate leaves). Leaves can droop under stress.
Core behaviors implemented
- Phototropism (shoots): the stem biases toward the “sun direction” slider.
- Hydrotropism (roots): root tips bias toward a moving “water pocket” that shifts with the Water slider.
- Root branching (aggressive): root tips split frequently from the start, scaling with Branching and Nutrients.
- Stem branching (early + frequent): deterministic early branch points plus probabilistic extra branching driven by the Branching slider.
- Leaf response: leaves unfurl over time and droop when Water/Nutrients are low.
Controls (what they actually do)
- Light intensity: strengthens the shoot’s pull toward the sun and speeds leaf unfurling.
- Water availability: moves the underground “water pocket” and affects leaf droop (low water = more droop + more root searching).
- Nutrients: increases overall vigor and increases root branching frequency.
- Sun direction: sets the horizontal pull direction for the main stem (left/right).
- Growth rate: scales how quickly stem, branches, and roots extend.
- Wind: adds gentle sway to the above-ground structure.
- Branching: increases both stem branching probability and root split frequency.
- Internode length: sets segment length (shorter = denser nodes/leaves; longer = leggier growth).
Buttons
- Reset: restarts the simulation.
- Force Stem Branch: spawns an additional stem branch from an available node (useful for quick testing).
This POC is intentionally kept stable and readable: it prioritizes clear structural growth (nodes/internodes, branching axes, visible root splitting) over botany-perfect physiology, so you can iterate on mechanics and visuals without the system collapsing into randomness or nothing happening.