Document GP-DOC-05: Genetics
Terrain × Morphology
A stat is only worth what the track pays for it. Each of ten engine biomes modifies a
segment's cruise speed and energy cost, and applies penalties or hazards keyed to
specific stats. This is the systematized version of "ice rewards tripods": there is no global
optimum, only optima conditional on the circuit, and circuits rotate every hour. *_n
denotes a stat normalized to [0,1] across the population (see
Stats & Morphology).
The gate form
Speed on a segment is the flat-ground cruise speed multiplied by a terrain gate:
v_flat = SPEED_SCALE * SPD * (0.8 + 0.2*EFF_n)
cost_flat = COST_SCALE * (1/EFF) * (0.7 + 0.3*mass)
v = v_flat * gate(stats)^BITE [* BASE_MULT] // gate = Π (FLOOR + GAIN * stat_n)
The gate is a product of (FLOOR + GAIN·stat_n) factors. The BITE exponent (≥ 1) is
renormalized to preserve the top and collapse the bottom: a specialist at stat_n ≈ 1
loses nothing, while a low key stat drops speed toward a crawl. BITE=1 is the plain,
unexponentiated path. On MUD and INCLINE a COST_BITE hardens the energy cost as
1 / gate^k, so builds without the key stat both slow down and burn out.
The ten biomes (v0.3.0 constants)
Values below are the committed BALANCE.TERRAIN set (BALANCE_VERSION = v0.3.0), tuned by the
harness (see Balancing):
| Terrain | Driven by | Key constants | Punishes most |
|---|---|---|---|
| FLAT | SPD, EFF | reference (no speed gate) | nobody (pure speed) |
| ICE | TRC (STB residual) | TRC 0.55+0.50·n · STB 0.70+0.05·n · BITE 3 | biped sprinters |
| MUD | ptw, TRC | ptw 0.50+0.50·n · TRC 0.80+0.20·n · BITE 1 · COST 1.5/ptw², COST_BITE 2 | light without power |
| SAND | TRC, mass | TRC 0.55+0.45·n · MASS_PENALTY 0.25 · BITE 5 · COST 1.3 | the heavy |
| INCLINE ↑ | ptw | ptw 0.40+0.70·n · BASE 0.85 · BITE 1 · COST 1.4/ptw, COST_BITE 1 | heavy + fast fiber |
| DECLINE ↓ | STB, AGI | STB 0.60+0.40·n · AGI 0.80+0.20·n · BASE 1.05 · BITE 5 · COST 0.9 · fall | speed demons |
| TURNS | AGI | AGI 0.50+0.50·n · BITE 5 · +TURN_PENALTY 0.25·(1-AGI_n) | long torso + heavy |
| GAP | JMP | difficulty 0.5 · FALL_PENALTY 2.0 · clear-time 0.15 | builds with no jump |
| ROUGH | STB (TRC residual) | STB 0.50+0.50·n · TRC 0.70+0.05·n · BITE 5 · COST 1.2 | fragile (supple JNT, high STA) |
| WATER | web, mass | web 0.40+0.50·b · no-web 0.4 · MASS_PENALTY 0.30 · BITE 1 · COST 1.3 | heavy + multi-legged |
Note the deliberate orthogonality: ICE keys on traction, ROUGH on stability, TURNS on agility, DECLINE on both stability and agility, WATER on the webbed foot. Spreading each biome across a different stat vector is what makes the meta rotate instead of collapsing onto one build. FLAT and GAP carry no speed gate: FLAT is the reference, GAP is a pure jump obstacle.
Physical constants
Some biomes are physical, not analytical: the Rapier sim resolves them through real foot/ground contact:
TERRAIN_FRICTION ICE 0.12 SAND 0.80 WATER 0.55 MUD 1.25 (others 1.0)
FOOT_GRIP_LEGS 2 → 1.00 3 → 0.55 4 → 0.45 6 → 0.38
COURSE GRADE 0.12 GAP_WIDTH 0.7 + difficulty·1.0 PIT_DEPTH 1.4
START_PAD 30 TAIL_PAD 30 (meters)
Ice slips through the physics: the per-archetype foot-friction factor drops the whole
contact below the propulsion threshold, so even a quadruped can no longer accelerate on ice
the way a naive multiplier would allow. The slope is real geometry: steep enough that
INCLINE bites, shallow enough that the gait does not stall mid-hill. Non-friction effects
(mud draining stamina, hills costing energy) route through the cost model above, keeping one
source of truth.
Energy and piloting
Stamina is a budget spent per segment, not a decoration. On each segment the pilot chooses
an effort e (throttle); pushing harder costs super-linearly:
v = v0 * sqrt(e) energy = e0 * e^1.5 budget S = STM
exceed S → winded: speed * 0.5 for the rest of the race
The optimal effort has a closed form, e_i ∝ 1 / sqrt(v0_i * cost_i) scaled to saturate the
budget, so an efficient pilot pushes where it pays and conserves elsewhere. This makes circuit
length a meta lever: on a long map a stamina build runs flat out while a sprinter must
ration and loses; on a short map, the reverse.
Skill is then applied deterministically, with no RNG in the outcome:
pilot_time = optimal_time * (1 + (1 - skill) * K_EXEC) + missed_obstacle_penalties * (1 - skill)
Two identical specimens: the better pilot posts the better time, every time. K_EXEC is
calibrated so that skill matters without the draw ever deciding a race (see
Balancing).
Circuit and meta rotation
A circuit is an ordered list of (terrain, length) segments generated from the hourly
on-chain seed (Switchboard). The map is revealed before entry, so choosing which specimen
from your stable to run is itself a layer of skill (roster strategy). Because each biome favors
a different build, the "freaks" (a tripod on ice, a webbed amphibian on water) have real
value for the one hour a day their biome comes up. There is niche demand on the market rather
than a single dominant meta.
Next: how these outcomes are scored and rated, in IGC and Race Format. To breed toward a target biome, see Breeding.