Magical gene / magical coat genes
Starburst
A hard-edged six-pointed star sits on each flank, ringed twice and thrown out over a longer eight-point burst, with shards and flecks scattered clear of it.
What it can come out as
| Outcome | Carrying |
|---|---|
| Flashburst | W/W · W/B · W/C · W/n |
| Voidburst | B/B · B/C · B/n |
| Coloured burst | C/C |
| Wild type | C/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 |
|---|---|---|
W/W | Flashburst | 0.001% — 1 in 100,000 |
W/B | Flashburst | 0.0013% — 1 in 75,019 |
W/C | Flashburst | 0.0013% — 1 in 75,019 |
W/n | Flashburst | 0.019% — 1 in 5,263 |
B/B | Voidburst | 0.0013% — 1 in 75,019 |
B/C | Voidburst | 0.0013% — 1 in 75,019 |
B/n | Voidburst | 0.0013% — 1 in 75,019 |
C/C | Coloured burst | 0.0013% — 1 in 75,019 |
n/n | Wild type | 99.972% |
Its gene carrot
The file
common/src/main/resources/horsegenetics/genes/starburst.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.starburst |
|---|---|
| Phase | magical — it adds signed colour in phase 3, after the pigment has resolved |
| Priority | 151 — where it sits in the one (priority, key) paint order |
| Alleles | W · B · C · n |
| Varies per horse | 5 values drawn once off the expressing allele copy, so a foal that inherits the copy inherits the look |
| Built from | FRACTAL, PARTS, PATH, SPOTS, TOWARD |
Why it is built this way
This is a drawn emblem, not a kind of shape, so it is four filled PATHs and not a field. Nothing noise-derived will give a straight-sided point - it rounds the corners off however far the softness is wound down - and a FAN would have got the radiating part but not the taper, because a FAN's bars widen as they travel and a star's points narrow.
Every star here is squashed to 0.55 of its height (0.46 for the burst). BODY runs 22 units nose to tail and only 10 hoof-to-withers, so a round star wide enough to read across the flank has its top and bottom points cut off square by the part bounds. The squash is what keeps them points.
The four stars are concentric by construction: same centre (19.5, 16.5), same vertex count and phase on the inner three, radii 4.2 / 5.3 / 6.4. That leaves outlines 1.1 and 1.1 units wide - two texels each. Radii of 4.2 / 4.7 / 5.2 would look better proportioned in a drawing and would put both outlines at half a texel, where they average away to nothing and the emblem loads as a plain white star.
Paint order is load-bearing and it is the order in the list: burst, shards, magenta, violet, white. Each smaller star overdraws the middle of the one before it, which is what leaves the rings as rings. Reorder them and the emblem fills solid.
The FRACTAL on the burst layer is what stops it reading as a clean vector shape - the reference's long spikes are ragged and broken up.
The shards and the flecks are the only fields here, so they are the only part that differs horse to horse. That is the trade a drawn shape makes.
Sourced from a traced SVG, but not drawn with the SVG mask. The trace runs to thousands of path commands over hundreds of subpaths, most of it trace noise - well past the point ceiling, which exists to keep a traced photograph out of a gene file, and it would have made the marking identical on every horse. The reference was read for what KIND of shape each element is and rebuilt from field masks. A hand-drawn, low-node version of the source would be worth the SVG mask with its d string verbatim.
Arrived keyed 'ixora.starburst'. Renamed to the horsegenetics namespace every other gene in the mod uses - the format allows a modder their own, but a gene shipping INSIDE this mod under a second namespace breaks the tooling that builds a key from a slug.
The three stars are DISJOINT and have to be. Outline, inline and core are three nested filled PATHs at strength 100, and a gene's layers each measure their delta against the colour the gene started from and then sum - so the core was adding white to a texel the outline and inline had already driven to the clamp, and DeadLayerTest caught it painting nothing at all. Each star now subtracts the one inside it and paints only its own ring.
The flecks were spacing 4.6 at radius 0.6 and chance 0.3, which over a barrel is about three spots of a texel and a half - they landed on four texels in total. 3.8 / 1.0 / 0.55 is a scatter you can actually see.
The emblem SCALES per horse rather than being one stamp. Every path here is centred on the same point in units space, so 'pointsMin' is each one scaled about that centre by 0.45 - the rings stay concentric and the spikes stay registered to the core at every size, because they all move along the same dial. The 'size' knob's range is deliberately the scale itself (0.45 to 1), so the number a horse drew reads as what it is.
What does NOT scale is 'softness', which is in body units either way, so a small emblem reads slightly softer at its edges than a large one. That is left alone: it is a fraction of a texel on the rings, and a smaller marking being a touch less crisp is not wrong.
The shards were retuned from spacing 3.4 / chance 0.4 to 2.8 / 0.5 when the dial went in, and the reason is worth keeping: that layer was ALREADY a coin flip. Measured over twenty horses it painted nothing on five of them - a sparse SPOTS field inside a shape a few units across either lands or does not - and DeadLayerTest only ever saw the one horse it seeds, which happened to land. Adding a knob re-rolled that horse and the layer came up empty, which is how a latent fragility surfaced as a test failure that looked like the dial's fault. At 2.8 / 0.5 it lands on every horse at every size (7 texels at the smallest emblem, 29 to 75 at the largest), which is the point: a layer whose existence depends on a seed is one re-roll from dead whatever else changes.
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.
Flashburst
A white star inside two grey rings over a pale burst, flecked with silver.
- the long spikes —
PARTS×PATH×FRACTAL, painted withTOWARD - black shards in the spikes —
PARTS×PATH×SPOTS, painted withTOWARD - the magenta outline —
PARTS×PATH×PATH, painted withTOWARD - the violet inline —
PARTS×PATH×PATH, painted withTOWARD - the white core —
PARTS×PATH, painted withTOWARD - flecks thrown clear —
PARTS×SPOTS, painted withTOWARD
Voidburst
The same emblem cut in soot - a charcoal star ringed in near-black over a gunmetal burst.
- the long spikes —
PARTS×PATH×FRACTAL, painted withTOWARD - black shards in the spikes —
PARTS×PATH×SPOTS, painted withTOWARD - the magenta outline —
PARTS×PATH×PATH, painted withTOWARD - the violet inline —
PARTS×PATH×PATH, painted withTOWARD - the white core —
PARTS×PATH, painted withTOWARD - flecks thrown clear —
PARTS×SPOTS, painted withTOWARD
Coloured burst
The star takes the line's own colour, ringed dark and bright over a burst in the same hue.
- the long spikes —
PARTS×PATH×FRACTAL, painted withTOWARD - black shards in the spikes —
PARTS×PATH×SPOTS, painted withTOWARD - the magenta outline —
PARTS×PATH×PATH, painted withTOWARD - the violet inline —
PARTS×PATH×PATH, painted withTOWARD - the white core —
PARTS×PATH, painted withTOWARD - flecks thrown clear —
PARTS×SPOTS, painted withTOWARD
Wild type
No marking.
Paints nothing.