AIR / 328 · ATmega328P
Room Terra / Arduino UNO Mini
A shared ecosystem running on an Arduino UNO Mini. Plants, herbivores and predators respond to readings from room sensors. The board advances the world and serves its website, including when no browser is connected.

Arduino UNO Mini
ATmega328P · 16 MHz
2 KiB SRAM · 32 KiB Flash
Room sensors
Temperature, humidity, light, CO₂ and pressure reach the board over I²C and PWM.
World on the board
Integer calculations, a 10-second step and up to 128 animals. Work is split into small operations so sensors and HTTP can keep running.
Website over Ethernet
W5500 handles TCP. The Arduino sends compressed HTML, CSS and JavaScript from Flash; the browser draws a 480-byte world snapshot.
World rules and technical details
Plants
Four biomass levels per cell. Light, moisture and temperature affect growth; grazing removes food from the map.
Herbivores
Choose safer cells with food. Eating restores energy; metabolism consumes it. Four shelters protect them from predators.
Predators
Hunt nearby prey when hungry. Reproduction requires energy, space and enough prey; starvation can eliminate a population.
Environment and terrain
The 32 × 32 map wraps at its edges. A 24-cell pond blocks movement and moistens its banks. Soil moisture gradually follows room humidity; CO₂ and pressure also affect growth. These are game rules, not a biological forecast.
Night follows the light sensor: 3 minutes at 25 lx or less switches to night; 3 minutes at 41 lx or more restores day. Readings between the thresholds keep the current mode.
One world for every visitor
Planting costs 1 credit, adding a herbivore 3 and a predator 8. Everyone shares a reserve of 12, replenished by 1 every 10 minutes. A successful action starts a shared 60-second cooldown.
Actions are checked and applied at a world-step boundary; failed actions cost nothing. Populations have no automatic rescue. The world lives in RAM and restarts when the board reboots.
Memory and delivery
Plants occupy 256 bytes: 2 bits per cell. Each animal fits in a 16-bit record. Four HTTP connections share a 512-byte workspace; compressed interface files stay in program memory.
The public site connects directly to the board over HTTP on port 8080. Source code, build instructions and simulation rules are on GitHub.



