Engine pointer -> bc18db5: brings in the organism-agnostic gene foundation (GeneDef, managed Genome, Phenotype trait computation) plus a parallel MrGameEng.Net library the game does not use. Game wiring: register the "Gene" def type and ship Mods/Core/Defs/ genes.json — a full gene set covering the plant phenotype dimensions (environment optima/tolerances, vigor, lifecycle, reproduction) plus a discrete morph gene, each declaring its trait effects as formulas. A dev-console 'gene [seed]' command generates a genome from these defs, prints its alleles, expressed values and computed traits, then breeds a child — demonstrating the whole pipeline end to end. These genes seed the G3 migration of plants onto traits. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
54 lines
3.7 KiB
JSON
54 lines
3.7 KiB
JSON
{
|
|
"type": "Gene",
|
|
// Организм-агностичные гены: каждый ген задаёт, как генерируются/мутируют аллели и как ген
|
|
// вкладывается в признаки (effects: имя признака → формула; value — выраженное значение гена).
|
|
// Этот набор покрывает измерения генома растения (его используют системы роста/жизненного цикла).
|
|
"defs": [
|
|
{ "defName": "BaseNumericGene", "abstract": true, "kind": "Numeric",
|
|
"spread": 0.08, "mutationChance": 0.05, "mutationMagnitude": 0.12 },
|
|
|
|
{ "defName": "GeneOptimalLight", "parent": "BaseNumericGene", "label": "gene.optimalLight",
|
|
"default": 0.6, "min": 0.0, "max": 1.0, "tags": ["environment", "light"],
|
|
"effects": { "optimalLight": "value" } },
|
|
{ "defName": "GeneLightTolerance", "parent": "BaseNumericGene", "label": "gene.lightTolerance",
|
|
"default": 0.5, "min": 0.05, "max": 1.0, "tags": ["environment", "light"],
|
|
"effects": { "lightTolerance": "value" } },
|
|
{ "defName": "GeneOptimalTemperature", "parent": "BaseNumericGene", "label": "gene.optimalTemperature",
|
|
"default": 14, "min": -20, "max": 45, "tags": ["environment", "temperature"],
|
|
"effects": { "optimalTemperature": "value" } },
|
|
{ "defName": "GeneTemperatureTolerance", "parent": "BaseNumericGene", "label": "gene.temperatureTolerance",
|
|
"default": 16, "min": 2, "max": 40, "tags": ["environment", "temperature"],
|
|
"effects": { "temperatureTolerance": "value" } },
|
|
{ "defName": "GeneOptimalFertility", "parent": "BaseNumericGene", "label": "gene.optimalFertility",
|
|
"default": 1.4, "min": 0.1, "max": 3.0, "tags": ["environment", "soil"],
|
|
"effects": { "optimalFertility": "value" } },
|
|
{ "defName": "GeneFertilityTolerance", "parent": "BaseNumericGene", "label": "gene.fertilityTolerance",
|
|
"default": 0.9, "min": 0.1, "max": 3.0, "tags": ["environment", "soil"],
|
|
"effects": { "fertilityTolerance": "value" } },
|
|
|
|
{ "defName": "GeneVigor", "parent": "BaseNumericGene", "label": "gene.vigor",
|
|
"default": 1.0, "min": 0.1, "max": 3.0, "tags": ["growth"],
|
|
"effects": { "vigor": "value" } },
|
|
{ "defName": "GeneLifespan", "parent": "BaseNumericGene", "label": "gene.lifespan",
|
|
"default": 160, "min": 5, "max": 500, "tags": ["lifecycle"],
|
|
"effects": { "lifespan": "value" } },
|
|
{ "defName": "GeneDispersalRange", "parent": "BaseNumericGene", "label": "gene.dispersalRange",
|
|
"default": 2, "min": 1, "max": 8, "tags": ["lifecycle", "reproduction"],
|
|
"effects": { "dispersalRange": "value" } },
|
|
{ "defName": "GeneReproduceInterval", "parent": "BaseNumericGene", "label": "gene.reproduceInterval",
|
|
"default": 14, "min": 1, "max": 60, "tags": ["lifecycle", "reproduction"],
|
|
"effects": { "reproduceInterval": "value" } },
|
|
{ "defName": "GeneSelfPollination", "parent": "BaseNumericGene", "label": "gene.selfPollination",
|
|
"default": 0.2, "min": 0.0, "max": 1.0, "tags": ["reproduction"],
|
|
"effects": { "selfPollination": "value" } },
|
|
{ "defName": "GeneMutationRate", "parent": "BaseNumericGene", "label": "gene.mutationRate",
|
|
"default": 0.05, "min": 0.0, "max": 1.0, "tags": ["reproduction"],
|
|
"effects": { "mutationRate": "value" } },
|
|
|
|
// Дискретный ген морфы: вариант 0 доминирует, 1 (рецессивный) виден только в гомозиготе.
|
|
{ "defName": "GeneMorph", "kind": "Discrete", "label": "gene.morph",
|
|
"variants": 2, "variantWeights": [0.82, 0.18], "mutationChance": 0.05, "tags": ["morphology"],
|
|
"effects": { "variant": "value" } }
|
|
]
|
|
}
|