2D companion of the 3D lab. Pick a feed chip, tap an animal on the map to feed it. Rings show each animal's energy reserve (green = in the earning zone). Same physiology as the 3D view.
Tap an animal with no feed selected (or tap the selected chip again to deselect it).
Compares the code with closed-form results: log-log slope, a hand-computed value, a 24 h energy balance and an analytic starvation curve.
The science
Kleiber's law. Basal metabolic rate scales with body mass to the power ¾, not 1:
BMR = 70 · M^0.75 [kcal/day, M in kg]
On the log-log plot this is a straight line of slope 0.75. A 600 kg cow needs ~8,500 kcal/day at rest, a 2 kg hen ~118 kcal/day; per kilogram the hen burns ~7× more.
Daily requirement (metabolisable energy, ME):
R = BMR · kspecies · production · (1 + 0.02 · max(0, 5 − T))
kspecies (1.5–2.0) lumps activity and maintenance above basal; production covers milk, eggs or growth; the cold factor adds 2 % per °C below a lower critical temperature of 5 °C (a simplification). The budget bars split R into exactly these parts.
Feed. Each feed has an energy density (kcal ME per kg as fed) and each species uses it with a utilisation factor u (0 = refuses). Net energy per scoop = kg · ME · u. Hay suits ruminants and horses but not hens; silage must never be fed to horses.
Energy store. Reserve S loses R/24 kcal each hour and gains scoops. If S < 0 the animal burns body tissue at ~7,700 kcal/kg, so mass and (since R ∝ M0.75) the requirement fall. Reserve above 100 % R is slowly stored as tissue at 50 % efficiency; the gut limits stuffing to ~160 % R.
Honest simplifications: one pooled energy store instead of rumen/gut kinetics, constant k, no protein or mineral balance, no digestive upset; feed prices and incomes are invented game values; map positions and animal movement are schematic. Not affiliated with any farm brand; educational, not veterinary advice.
Art. The grass backdrop is the Blender 5.2 baked texture from the 3D lab; everything else is drawn live on a 2D canvas.