Magical gene / fields and regions
Tidewave
Three long swells running the length of the ribcage, the colour sweeping most of the way round the wheel from nose to tail.
What it can come out as
| Outcome | Carrying |
|---|---|
| Pale tidewave | Tw/Tw · Tw/Twc · Tw/n |
| Coloured tidewave | Twc/Twc |
| Wild type | Twc/n · n/n |
How each one is actually drawn - region by region, and the layers it is built from - is on the coding tab.
Crossing two of them
Finding one
About 1 in 893 wild horses is born showing this. That is the whole of the supply: catch one, or make one with the carrot below. Breeds set their own pools and a breed built around this gene will carry it far more often than the wild population does.
| Wild pair | Shows as | How often |
|---|---|---|
Tw/Tw | Pale tidewave | 0.004% — 1 in 25,000 |
Tw/Twc | Pale tidewave | 0.016% — 1 in 6,250 |
Tw/n | Pale tidewave | 0.076% — 1 in 1,316 |
Twc/Twc | Coloured tidewave | 0.016% — 1 in 6,250 |
n/n | Wild type | 99.888% |
Its gene carrot
The file
common/src/main/resources/horsegenetics/genes/tidewave.json — a
data-driven gene, not a Java class. It is listed in the
index.json beside it and registered by Genes' class
initialiser at startup.
| Key | horsegenetics.tidewave |
|---|---|
| Phase | magical — it adds signed colour in phase 3, after the pigment has resolved |
| Priority | 290 — where it sits in the one (priority, key) paint order |
| Alleles | Tw · Twc · n |
| Varies per horse | 1 value drawn once off the expressing allele copy, so a foal that inherits the copy inherits the look |
| Built from | PARTS, RAMP, SVG, TOWARD |
Why it is built this way
The d strings are pasted verbatim out of the traced SVG - every command, both cases, all subpaths, fillRule evenodd as the artist's file declared it. Paths were SELECTED (the tracer emits dozens per drawing); none was re-typed or re-pointed.
Placed with fit none and a viewport of originU/sizeU 0.20/0.50, originV/sizeV 0.338/0.273 - x 8.2-28.7 and y 11.4-20.6, which is the whole barrel. fit none is the point: these are bands meant to run the length of the ribcage, and meet would letterbox them into a stamp in the middle of it.
Priority 250 rather than the 3xx the other drawn emblems use, because this one is a large field rather than a figure and wants to sit under them.
This is the one gene in the set with NO black form, and that is deliberate: the whole idea is the sweep of colour, and a grey version of it is a different marking wearing its name. The pale form is kept because three white swells still read as the same drawing.
The three swells share one RAMP rather than carrying a gradient each. The reference gives every band its own oblique gradient; one sweep along body X across the whole viewport is the closest this vocabulary reaches, and it reads as one spectrum laid over the ribs instead of three. See the tool gap.
RAMP varies colour and never coverage (rule 4), so the fade at each end of a swell is the SVG mask's own softness doing it, not the ramp.
At this viewport the marking is about 18 texels tall (a texel is 0.5 body units, and meet fits the tall side first). The silhouette and the tonal split survive that; detail finer than about half a body unit inside the drawing does not, and reads as texture rather than as countable structure. That is rule 15 being accepted deliberately, not overlooked - the barrel is 10 units tall and there is nowhere else for the marking to grow.
Arrived at priority 250. Moved to 290: fields and regions, first of the seven barrel drawings that sit beside moonwing (283) - they claim a region, not a figure in a field. The arriving number was taken, or sat in a band whose family does not describe this marking - priority is both the paint order and the family the sidebar files a gene under.
Over the SVG point ceiling on arrival - the engine flattens every curve to sixteen segments, so a traced outline costs its command count rather than its size. Brought under it with intake/tools/fit-svg.mjs: flattened the way the engine flattens, Ramer-Douglas-Peucker to a point budget, re-emitted as polylines. The upper swell 1724 to 700 and the mid swell 1145 to 700, under 0.01% of the viewBox changing side, measured through the engine's own inside test on a 400-sample grid. The whole viewBox is a few dozen texels across on the horse, so none of that reaches a texel. The d strings are therefore no longer the ones the trace produced. Gap 168 is the engine-side fix.
What it paints
Each outcome, described the way the gene file describes it, and then the layers that draw it in the order they are painted. The prose is the part a reader checks a bake against; the list underneath is what the engine actually did.
Pale tidewave
Three long white swells running the length of the ribs, stepped from bright to grey.
- upper swell —
PARTS×SVG, painted withTOWARD - mid swell —
PARTS×SVG, painted withTOWARD - crest —
PARTS×SVG, painted withTOWARD
Coloured tidewave
Three long swells running the length of the ribs, the colour sweeping most of the wheel from tail to nose.
- upper swell —
PARTS×SVG, painted withRAMP - mid swell —
PARTS×SVG, painted withRAMP - crest —
PARTS×SVG, painted withRAMP
Wild type
Nothing.
Paints nothing.