SpeciesDescriptor Reference
SpeciesDescriptor is the main configuration object passed to handle.RegisterSpecies(). It controls everything about how a species participates in the simulation.
Core identity
| Field | Type | Description |
|---|---|---|
SpeciesId | string | Unique identifier, e.g. "fauna:wolf". Must be globally unique. |
VsEntityCodes | string[] | VS entity codes this species maps to, e.g. ["game:wolf-male", "game:wolf-female"]. Supports wildcards: "game:wolf-*" |
Tier | SimulationTier | Simulation fidelity tier (see below) |
TrophicLevel | TrophicLevel | Position in food web |
Simulation tiers
| Tier | Description |
|---|---|
Standard | Full lifecycle simulation — spawning, breeding, aging, death |
Navigating | Standard + pathfinding to home locations |
Persistent | Navigating + individual entity persistence between sessions |
Abstract | Population-only, no individual entities materialized |
Population model
| Field | Type | Description |
|---|---|---|
BaseCarryingCapacity | int | Max population per habitat patch at full quality |
GrowthRatePerDay | float | Logistic growth rate (0.05 = 5% per in-game day) |
InitialPopulationFraction | float | Starting population as fraction of carrying capacity |
Habitat affinities
HabitatAffinities maps habitat type names to affinity scores (0.0–1.0). Species only spawn in habitats with affinity > 0.
csharp
HabitatAffinities = new Dictionary<string, float>
{
{ "ColdForest", 1.0f }, // ideal
{ "TemperateForest", 0.7f }, // suitable
{ "ColdGrassland", 0.3f }, // marginal
}Available habitat types: TropicalRainforest, TropicalDryForest, WarmForest, TemperateForest, ColdForest, WarmGrassland, TemperateGrassland, ColdGrassland, HotDesert, ColdDesert, Tundra, Wetland, Coastal, Riparian, Mountain, Taiga
Predation
csharp
PreySpeciesIds = new[] { "fauna:hare", "fauna:deer" },
PredationVulnerability = 0.8f, // how easily this species is killed (0=invincible, 1=very vulnerable)Lifecycle
csharp
BreedingMonthStart = 2, // February
BreedingMonthEnd = 3, // March
GestationDays = 60,
LitterSizeMin = 1,
LitterSizeMax = 4,
JuvenileMortalityRate = 0.3f,
MaxAgeDays = 3650, // 10 in-game years