Each plant species has a bloom season centred on a month with a spread (a von Mises / wrapped-Gaussian curve on the 12-month cycle), so intensity rises and falls smoothly and wraps correctly from December into January. Visible flower density and colour saturation in each patch track that curve directly.
bloom(species, month) = exp(-0.5 · (circDist(month, peak) / spread)²)
income = Σ bees_arriving · bloom(species, month)
store += income − consumption·dt (clamped 0–100)
- Month — scrubs the calendar; every species' bloom intensity, and therefore how many bees can find forage, updates instantly.
- Time speed — how fast the month advances while playing.
- Species in scene — trims the plant list, letting you see how forage diversity (or its absence) changes the hive's nectar balance.
- Dearth — when combined bloom intensity across all active species drops too low, bees return empty-handed more often than not and the hive's stores fall — visible around the "June gap" and again in winter.
Real-world relevance: beekeepers plan apiary sites and supplementary feeding around exactly this curve — a garden or landscape with continuous overlapping bloom keeps a colony fed; one with big seasonal gaps forces intervention.