Ecosystem Simulation
Philosophy
The ecosystem simulates populations and tendencies, not individuals. No Faeral has a persistent individual identity in the simulation — only population densities per species per zone.
This is the correct choice for scalability. Simulating individuals at world scale is infeasible. Simulating populations produces emergent behaviour that feels alive without the overhead.
Tick system
The ecosystem runs on a global tick:
- MVP (Phase 1): Local tick, runs as a Bevy schedule on the client. Frequency TBD (every N real minutes).
- Phase 3+: Server-side tick, authoritative, shared across all players.
Each tick:
- Recalculate populations per zone per species
- Evaluate migration pressures
- Update climate state
- Apply predation effects
- Check extinction thresholds
- Fire ecological events
Spawn Score
When a player encounters a zone, the probability of a species appearing is:
spawn_score =
biome_compatibility
× climate_compatibility
× population_presence
× prey_predator_balance
× player_pressure_modifier
All values are 0.0–1.0 multipliers. A score of 0 means the species will not appear.
Climate system
| Real time | In-game time |
|---|---|
| 1 month | 1 year |
| 1 week | 1 season |
Seasons: Spring → Summer → Autumn → Winter
Climate effects on gameplay:
- Winter → cold-adapted species thrive, tropical species migrate south
- Heavy rain → aquatic species spawn rates increase
- Drought → plant-type species temporarily disappear
- Storms → Fire/Light species avoid affected zones
- Heatwave → Ice/Water species weakened
Migrations
Prey species:
- Flee zones where predator pressure exceeds a threshold
- Move toward zones with compatible biome and climate
Predator species:
- Follow prey populations
- Constrained to compatible biomes
Climate-driven:
- Some species are climate-sensitive and migrate seasonally regardless of predation
Extinction
Local extinction: Population drops below threshold for N consecutive ticks → species disappears from that zone.
Global extinction: All zones simultaneously reach local extinction. Possible but not common. Effects:
- World ecological event broadcast to all players
- Ecological journal entry
- Disruption of food chains in affected regions
- Species becomes globally rare (may be reintroduced)
Reintroduction:
- Players releasing Faerals of a species restores local population
- Requires biome compatibility
- Rate-limited to prevent spam
Player pressure
Repeated capturing of a species in a zone reduces its local population. This is tracked via player_pressure_modifier in the spawn score. The ecosystem will recover over time if pressure is removed.
This creates a natural feedback loop: overcapture a species and it becomes harder to find.
For the full parameter model and the standalone Python simulation tool, see Lifecycle Model.