Skip to content

Root Profiles

A root is the top-level identity assigned to villagers and players. Commands, catalogues, inheritance, and appearance systems all work from that assigned root.

Path: data/<namespace>/root/<path>.json

Schema: townstead:root/v1

Root is the top-level identity concept. A root file references the species, ancestry, and lineage that support the assigned identity rather than sitting below them as a final biological tier.

Root
├─ Species
├─ Ancestry
└─ Lineage

Root fields describe the assigned identity and connect it to the species, ancestry, and lineage data that define its inherited traits.

FieldTypeRequiredNotes
schemastringyestownstead:root/v1.
display_namecomponentnoShown as the root name.
speciesidnoOverrides ancestry/lineage species.
ancestryidyesThe broad ancestry this root belongs to. Should match the lineage’s ancestry.
lineageidyesThe lineage this root belongs to. Lineage genes are layered after ancestry genes.
demonymobjectnoOverrides lineage and ancestry demonym.
backstorycomponentnoOverrides lineage and ancestry backstory.
spawn_biasobjectnoIdentity-specific founder weighting. See Spawn Bias.
{
"schema": "townstead:root/v1",
"display_name": "Moon Elf",
"ancestry": "my_pack:elf",
"lineage": "my_pack:moon_elf"
}

When Townstead resolves a root’s effective genome, it starts from the assigned root and reads the supporting data that root references.

Species, ancestry, and lineage contribute the inherited genes for that root. Put broad body defaults on species, broad population traits on ancestry, and sub-race or branch traits on lineage.