Skip to main content

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:

  1. Recalculate populations per zone per species
  2. Evaluate migration pressures
  3. Update climate state
  4. Apply predation effects
  5. Check extinction thresholds
  6. 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 timeIn-game time
1 month1 year
1 week1 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.