Magical gene / fields and regions
Uraniid
A swallowtail moth held open on the barrel - a dark body raked with fine bands, two of them brighter than the rest.
What it can come out as
| Outcome | Carrying |
|---|---|
| Pale uraniid | Ur/Ur · Ur/Urb · Ur/Urc · Ur/n |
| Black uraniid | Urb/Urb · Urb/Urc · Urb/n |
| Coloured uraniid | Urc/Urc |
| Wild type | Urc/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 3,572 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 |
|---|---|---|
Ur/Ur | Pale uraniid | 0.001% — 1 in 100,000 |
Ur/Urb | Pale uraniid | 0.0013% — 1 in 75,019 |
Ur/Urc | Pale uraniid | 0.0013% — 1 in 75,019 |
Ur/n | Pale uraniid | 0.019% — 1 in 5,263 |
Urb/Urb | Black uraniid | 0.0013% — 1 in 75,019 |
Urb/Urc | Black uraniid | 0.0013% — 1 in 75,019 |
Urb/n | Black uraniid | 0.0013% — 1 in 75,019 |
Urc/Urc | Coloured uraniid | 0.0013% — 1 in 75,019 |
n/n | Wild type | 99.972% |
Its gene carrot
The file
common/src/main/resources/horsegenetics/genes/uraniid.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.uraniid |
|---|---|
| Phase | magical — it adds signed colour in phase 3, after the pigment has resolved |
| Priority | 293 — where it sits in the one (priority, key) paint order |
| Alleles | Ur · Urb · Urc · n |
| Varies per horse | 3 values drawn once off the expressing allele copy, so a foal that inherits the copy inherits the look |
| Built from | PARTS, 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.
Originally placed with originU/originV 0.27/0.338 (originU is now the posU knob - see the note below) and sizeU/sizeV 0.38/0.273 in body space, so the viewport is x 11.1-26.7 and y 11.4-20.6 - the full height of BODY (x 7.5-29.5, y 11-21) and about two thirds of its length, with clearance on every side. It is sized to the barrel's HEIGHT because every drawing here except the trillium is portrait and meet fits the tall side first; the spare width is centring room. The first mask is PARTS BODY, so nothing the side-plane extrusion reaches can land on a leg or the neck if the mesh ever moves.
The whole moth is one path in the source: silhouette, tails and every band, with the bands as evenodd holes. That is why the body layer is a single mask and why fillRule evenodd is load-bearing here rather than cosmetic - as nonzero the holes close and the moth comes out a solid blot.
The bands are about 0.4 body units apart at this viewport, which is under a texel (rule 15). They read as a raked texture rather than as countable stripes, and winding the marking bigger is the only thing that would change that - the barrel is not tall enough for it, so this is the size it ships at.
The two bright bands are a second layer over the body, on their own hue knob, because in the reference they are a different colour from the body rather than a lighter version of it.
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 340. Moved to 293: fields and regions, with the other barrel drawings beside moonwing (283). 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 moth 6648 to 697 and the bright bands 1301 to 700, 0.32% 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.
LAYERS MADE DISJOINT on the way in. The pale moth came out a flat white shape and its bright bands barely showed: they were being added to the pale moth beneath them rather than painted over it. The black form hid the problem, because dark on dark sums to something that still reads. A gene's layers do not stack: each measures its delta against the colour the GENE started from and the deltas are summed (gap 169), so nested marks at full strength add up and clamp. Each layer now multiplies in an inverted copy of the shape that sets every later layer apart from it, which for hard-edged masks is exactly the picture stacking would have given - the order in the file still reads as the order of the marking, it just no longer has to be the mechanism.
PLACED BY THE HORSE, NOT THE FILE (2026-09-11). originU is the posU knob, 0.12-0.40, so the viewport's centre runs from about x 12.7 to x 24.2 and the drawing lands anywhere from shoulder to hip. It used to be a constant 0.27, shared with the other five barrel drawings, and the owner's first look at the intake found six different drawings all standing in the same place on every horse. The range keeps every one of the six on BODY with two units to spare at either end - the widest, candelabra, is 6.2 units - checked on a side-view render at six seeds each. originV stays fixed: these are sized to the barrel's full height and there is no room to move up or down.
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 uraniid
A grey moth on the barrel, raked with white bands.
- moth —
PARTS×SVG×SVG inverted, painted withTOWARD - bright bands —
PARTS×SVG, painted withTOWARD
Black uraniid
A near-black moth on the barrel, raked with mid-grey bands.
- moth —
PARTS×SVG×SVG inverted, painted withTOWARD - bright bands —
PARTS×SVG, painted withTOWARD
Coloured uraniid
A moth in the line's own colour, with two bands in a second.
- moth —
PARTS×SVG×SVG inverted, painted withTOWARD - bright bands —
PARTS×SVG, painted withTOWARD
Wild type
Nothing.
Paints nothing.