Skip to content

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

FieldTypeDescription
SpeciesIdstringUnique identifier, e.g. "fauna:wolf". Must be globally unique.
VsEntityCodesstring[]VS entity codes this species maps to, e.g. ["game:wolf-male", "game:wolf-female"]. Supports wildcards: "game:wolf-*"
TierSimulationTierSimulation fidelity tier (see below)
TrophicLevelTrophicLevelPosition in food web

Simulation tiers

TierDescription
StandardFull lifecycle simulation — spawning, breeding, aging, death
NavigatingStandard + pathfinding to home locations
PersistentNavigating + individual entity persistence between sessions
AbstractPopulation-only, no individual entities materialized

Population model

FieldTypeDescription
BaseCarryingCapacityintMax population per habitat patch at full quality
GrowthRatePerDayfloatLogistic growth rate (0.05 = 5% per in-game day)
InitialPopulationFractionfloatStarting 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

Released under the MIT License.