Reference

Population settings

How the game tops up the world with generated players, and how strong they may be. Every field is optional; a field left out keeps the game's default. Several mods can supply one: they apply in load order, later fields winning (per tier for tierSizes and levels). See Population.

Content type
population
Files
data/population.json
Shape
One settings object (a file may hold the object itself)
Patch target
population:<id>, for example population:core.population
In the base game
1 record
Guide
Population

Fields#

Indented fields belong to the field above them. [] marks the items of a list. A field that is not required may be left out; the default is used.

FieldTypeRequiredDefaultNotes
ididYesNamespaced id, e.g. "core.player.rory-calder"
tierSizesobjectPlayers per tier, named and generated together (default 32 / 96 / 128 / 128 / 220).
tierSizes.1whole number, 0 to 2000
tierSizes.2whole number, 0 to 2000
tierSizes.3whole number, 0 to 2000
tierSizes.4whole number, 0 to 2000
tierSizes.5whole number, 0 to 2000
levelsobjectOverall level band for generated players per tier, enforced on the final level.
levels.1objectOverall level band for generated players: drawn from N(mean, sd), kept in [min, max]
levels.1.meannumber, 20 to 99Yes
levels.1.sdnumber, 0 to 20Yes
levels.1.minnumber, 20 to 99YesThe final overall level (after attribute noise) never goes below this…
levels.1.maxnumber, 20 to 99Yes…or above this.
levels.2objectOverall level band for generated players: drawn from N(mean, sd), kept in [min, max]
levels.2.meannumber, 20 to 99Yes
levels.2.sdnumber, 0 to 20Yes
levels.2.minnumber, 20 to 99YesThe final overall level (after attribute noise) never goes below this…
levels.2.maxnumber, 20 to 99Yes…or above this.
levels.3objectOverall level band for generated players: drawn from N(mean, sd), kept in [min, max]
levels.3.meannumber, 20 to 99Yes
levels.3.sdnumber, 0 to 20Yes
levels.3.minnumber, 20 to 99YesThe final overall level (after attribute noise) never goes below this…
levels.3.maxnumber, 20 to 99Yes…or above this.
levels.4objectOverall level band for generated players: drawn from N(mean, sd), kept in [min, max]
levels.4.meannumber, 20 to 99Yes
levels.4.sdnumber, 0 to 20Yes
levels.4.minnumber, 20 to 99YesThe final overall level (after attribute noise) never goes below this…
levels.4.maxnumber, 20 to 99Yes…or above this.
levels.5objectOverall level band for generated players: drawn from N(mean, sd), kept in [min, max]
levels.5.meannumber, 20 to 99Yes
levels.5.sdnumber, 0 to 20Yes
levels.5.minnumber, 20 to 99YesThe final overall level (after attribute noise) never goes below this…
levels.5.maxnumber, 20 to 99Yes…or above this.
potentialHeadroomnumber, 0 to 40Most potential a generated player can have above their level (default 28, for teenagers).
genderLevelOffsetobjectAdded to generated players' level by gender, e.g. { "f": -6 }.
genderLevelOffset.mnumber, -30 to 30
genderLevelOffset.fnumber, -30 to 30
womenSharenumber, 0 to 1Share of generated players (and youth intake) who are women, 0–1 (default 0.10–0.15).
refilllist, up to 5 itemsTiers topped back up to their tierSizes with generated players of all ages at each season rollover (e.g. [4, 5]): Q-School promotions drain the lower tiers each winter. Default none.
capToNamedobjectKeep generated players below the named ones: a generated player's level is capped at this percentile of the named players' levels in the same tier (+ margin), and their potential at the cap + growth. Tiers with fewer than minNamed named players use the cap of the nearest tier above.
capToNamed.percentilenumber, 0 to 100Yes
capToNamed.marginnumber, -20 to 200
capToNamed.growthnumber, 0 to 202How far past the cap a generated player can develop (default 2).
capToNamed.minNamedwhole number, 1 to 1003
capToNamed.breakthroughnumber, 0 to 10Share (0–1) of the starting generated players who keep the game's normal potential: they start under the cap but can grow into top players over the seasons (default 0).
capToNamed.youthone of the options"capped"Each season's youth intake: 'capped' (potential bounded by the Tour Card tier's cap) or 'free' (the game's normal potential, so new stars can emerge and win majors). Default 'capped'. Options: capped, free.
archetypesobjectStyles of generated player: points added to each attribute around their level (e.g. a scorer's { "scoring": 5, "finishing": -4 }). An archetype given replaces the game's offsets for it.
archetypes.scorermap (key: value)
archetypes.finishermap (key: value)
archetypes.grindermap (key: value)
archetypes.showmanmap (key: value)
archetypes.nervymap (key: value)
archetypes.balancedmap (key: value)
followersobjectA new player's followers per tier, [fewest, most]: the better they are within the tier, the more.
followers.1pair [whole number, 0 to 100,000,000, whole number, 0 to 100,000,000]
followers.2pair [whole number, 0 to 100,000,000, whole number, 0 to 100,000,000]
followers.3pair [whole number, 0 to 100,000,000, whole number, 0 to 100,000,000]
followers.4pair [whole number, 0 to 100,000,000, whole number, 0 to 100,000,000]
followers.5pair [whole number, 0 to 100,000,000, whole number, 0 to 100,000,000]
reputationobjectA new player's reputation (0–100) per tier, [lowest, highest].
reputation.1pair [number, 0 to 100, number, 0 to 100]
reputation.2pair [number, 0 to 100, number, 0 to 100]
reputation.3pair [number, 0 to 100, number, 0 to 100]
reputation.4pair [number, 0 to 100, number, 0 to 100]
reputation.5pair [number, 0 to 100, number, 0 to 100]
youthobjectEach season's youth intake: how many are gems, and the headroom above their level (ordinary and gem).
youth.gemChancenumber, 0 to 1
youth.headroompair [number, 0 to 60, number, 0 to 60]
youth.gemHeadroompair [number, 0 to 60, number, 0 to 60]
youth.headroomCurvenumber, 0.2 to 5
youth.startingHeadroomnumber, 0 to 2
youth.intakeAgepair [whole number, 10 to 30, whole number, 10 to 30]
youth.startingAgepair [whole number, 10 to 30, whole number, 10 to 30]
youth.juniorAgewhole number, 10 to 30
youth.juniorLevelDropnumber, 0 to 10
youth.clubobject
youth.club.countwhole number, 0 to 400Yes
youth.club.agepair [whole number, 6 to 17, whole number, 6 to 17]Yes
youth.club.levelpair [number, 1 to 60, number, 1 to 60]Yes
retirementobjectAn AI player's chance of retiring at a season's end: young below youngAge, then 1 / (1 + e^−(age − midAge) / spread); + pub in tier 5 past pubAge; + weak below level weakLevel past weakAge; × pros in tiers 1–2. Below youngAge, a player at level primeLevel or above keeps prime of the young rate.
retirement.youngAgenumber, 14 to 99
retirement.youngnumber, 0 to 1
retirement.midAgenumber, 14 to 99
retirement.spreadnumber, 0.1 to 30
retirement.pubAgenumber, 14 to 99
retirement.pubnumber, 0 to 1
retirement.weakLevelnumber, 0 to 100
retirement.weakAgenumber, 14 to 99
retirement.weaknumber, 0 to 1
retirement.prosnumber, 0 to 5
retirement.primeLevelnumber, 0 to 100
retirement.primenumber, 0 to 1
traitslist, up to 40 items
traits[].idtextYesPattern: ^[a-z0-9][a-z0-9-]*$
traits[].namedtrue or falsetrue
traits[].weightsobjectYes
traits[].weights.ambitionnumber, -5 to 5
traits[].weights.professionalismnumber, -5 to 5
traits[].weights.mediamap (key: value)
traits[].weights.temperamentmap (key: value)
traits[].weights.stylemap (key: value)
traits[].effectsmap (key: value)

Example#

A record from the base game’s data/population.json, shortened.

{
  "id": "core.population",
  "traits": [
    {
      "id": "loyal",
      "weights": {
        "ambition": -0.5,
        "professionalism": 0.6,
        "temperament": {
          "calm": 0.35,
          "steady": 0.25
        },
        "media": {
          "humble": 0.35,
          "reserved": 0.3
        }
      },
      "effects": {
        "churn": 0.4,
        "upgrade": 0.5,
        "loyalty": 2
      }
    },
    {
      "id": "mercenary",
      "weights": {
        "ambition": 1.0,
        "professionalism": -0.3,
        "media": {
          "confident": 0.4,
          "showman": 0.25
        }
      },
      "effects": {
        "churn": 1.8,
        "upgrade": 2,
        "loyalty": 0.5
      }
    },
    {
      "id": "tinkerer",
      "weights": {
        "professionalism": -0.4,
        "temperament": {
          "volatile": 0.35
        },
        "media": {
          "confident": 0.2
        },
        "style": {
          "frontrunner": 0.4,
          "showman": 0.3
        }
      },
      "effects": {
        "switch": 2
      }
    },
    /* … 5 more */
  ],
  "archetypes": {
    "scorer": {
      "scoring": 5,
      "finishing": -4,
      "checkoutKnowledge": -2,
      "crowdHandling": 2
    },
    "finisher": {
      "scoring": -3,
      "finishing": 5,
      "checkoutKnowledge": 5,
      "bullAccuracy": 3
    },
    "grinder": {
      "consistency": 6,
      "concentration": 5,
      "stamina": 6,
      "crowdHandling": -4,
      "tempoControl": 3
    },
    "showman": {
      "crowdHandling": 10,
      "composure": -3,
      "consistency": -3,
      "bullAccuracy": 2
    },
    "nervy": {
      "composure": -8,
      "resilience": -6,
      "scoring": 2,
      "finishing": 1
    },
    "balanced": {}
  },
  "followers": {
    "1": [
      60000,
      1200000
    ],
    "2": [
      5000,
      90000
    ],
    "3": [
      600,
      9000
    ],
    "4": [
      150,
      4000
    ],
    "5": [
      20,
      800
    ]
  },
  "reputation": {
    "1": [
      70,
      98
    ],
    "2": [
      45,
      75
    ],
    "3": [
      25,
      50
    ],
    "4": [
      10,
      35
    ],
    "5": [
      2,
      20
    ]
  },
  "youth": {
    "gemChance": 0.09,
    "headroom": [
      9,
      35
    ],
    "gemHeadroom": [
      22,
      31
    ],
    "startingHeadroom": 0.4,
    "intakeAge": [
      10,
      17
    ],
    "startingAge": [
      10,
      23
    ],
    "juniorAge": 18,
    "juniorLevelDrop": 6,
    "club": {
      "count": 120,
      "age": [
        8,
        13
      ],
      "level": [
        6,
        26
      ]
    }
  },
  "retirement": {
    "youngAge": 40,
    "young": 0.004,
    "midAge": 62,
    "spread": 4.5,
    "pubAge": 56,
    "pub": 0.05,
    "weakLevel": 32,
    "weakAge": 35,
    "weak": 0.08,
    "pros": 0.6,
    "primeLevel": 75,
    "prime": 0.1
  }
}

Written for Darts Player Simulator 0.50.32. Built from the game's own schemas and its base pack.