Creatures › Parasite
Parasite
A segmented worm with a pair of legs on every segment, which can curl up into a ring with its legs splayed out. Inspired by Parasite, a DancerDNA creature.
23 genes · 11 variants
Its family
Each one is the same program with different genes. In the app, Morph glides from one to the next, and Breed starts from them.











Genes
The values that change when Parasite mutates, breeds and morphs.
| Gene | What it does | Range | Value |
|---|---|---|---|
legs_away | how far the legs stand off from the body; at 0 or below they're attached | -5 to 1 | -3.683 |
curl_up | how far the body curls into a ring: 0 not at all, 1 all the way | -5 to 2 | -1.923 |
leg_reach | how far off the legs are when they stand off | 1 to 30 | 4.18 |
stride | how long the body's segments are | 0.8 to 1.05 | 0.9559 |
wiggle | how far the body wiggles: up, sideways and round | (-17.19, -17.19, -17.19) to (17.19, 17.85, 17.19) | (-2.755, 10.34, -1.77) |
wiggle_waves | how many half-waves the wiggles make along it | (1, 1, 1) to (3, 3, 3) | (2.65, 2.298, 2.554) |
swell | how much the segments grow and shrink | -0.15 to 0.15 | 0.02704 |
swell_waves | 0.1 to 4 | 0.7213 | |
leg_length | how many beads the longest legs have | 0 to 15 | 11.54 |
leg_waves | how many times the legs grow and shrink along the body | 0.5 to 10 | 1.912 |
leg_start | 0 to 1 | 0.668 | |
leg_turn | how far the legs turn as the body curls up | -57.3 to 57.3 | -0.1754 |
leg_spread | how far apart the beads of the inner legs are as it curls up | 0 to 3 | 0.9165 |
bead_length | 0.2 to 3 | 1.829 | |
bead_taper | how much bigger each bead is than the last | 0.8 to 1.1 | 0.9351 |
leg_curl | -1.5 to 1.5 | 1.092 | |
leg_curl_waves | 0.5 to 4 | 1.349 | |
body_1 | any hue | hsv(72.7, 0.83, 1, 1) | |
body_2 | any hue | hsv(70.9, 0.89, 1, 1) | |
body_3 | any hue | hsv(49.8, 0.81, 1, 1) | |
body_4 | any hue | hsv(79.9, 0.65, 1, 1) | |
body_gaps | (0.25, 0.25, 0.25) to (1, 1, 1) | (0.5113, 0.4083, 0.5948) | |
leg_tip | any hue | hsv(219.4, 0.51, 1, 1) |
The code
creature Parasite
// A segmented worm with a pair of legs on every segment, which can curl up into a ring with its
// legs splayed out.
// Inspired by Parasite, a DancerDNA creature.
gene legs_away = -3.683 in -5..1 // how far the legs stand off from the body; at 0 or below they're attached
gene curl_up = -1.923 in -5..2 // how far the body curls into a ring: 0 not at all, 1 all the way
gene leg_reach = 4.18 in 1..30 // how far off the legs are when they stand off
gene stride = 0.9559 in 0.8..1.05 // how long the body's segments are
gene wiggle = (-2.755, 10.34, -1.77) in (-17.19, -17.19, -17.19)..(17.19, 17.85, 17.19) // how far the body wiggles: up, sideways and round
gene wiggle_waves = (2.65, 2.298, 2.554) in (1, 1, 1)..(3, 3, 3) // how many half-waves the wiggles make along it
gene swell = 0.02704 in -0.15..0.15 // how much the segments grow and shrink
gene swell_waves = 0.7213 in 0.1..4
gene leg_length = 11.54 in 0..15 // how many beads the longest legs have
gene leg_waves = 1.912 in 0.5..10 // how many times the legs grow and shrink along the body
gene leg_start = 0.668 in 0..1
gene leg_turn = -0.1754 in -57.3..57.3 // how far the legs turn as the body curls up
gene leg_spread = 0.9165 in 0..3 // how far apart the beads of the inner legs are as it curls up
gene bead_length = 1.829 in 0.2..3
gene bead_taper = 0.9351 in 0.8..1.1 // how much bigger each bead is than the last
gene leg_curl = 1.092 in -1.5..1.5
gene leg_curl_waves = 1.349 in 0.5..4
// The body's colours, from head to tail, and the gaps between them; and the legs' tips.
gene body_1 = hsv(72.7, 0.83, 1) in hsv(0, 0.4, 1)..hsv(360, 1, 1)
gene body_2 = hsv(70.9, 0.89, 1) in hsv(0, 0.4, 1)..hsv(360, 1, 1)
gene body_3 = hsv(49.8, 0.81, 1) in hsv(0, 0.4, 1)..hsv(360, 1, 1)
gene body_4 = hsv(79.9, 0.65, 1) in hsv(0, 0.4, 1)..hsv(360, 1, 1)
gene body_gaps = (0.5113, 0.4083, 0.5948) in (0.25, 0.25, 0.25)..(1, 1, 1)
gene leg_tip = hsv(219.4, 0.51, 1) in hsv(0, 0.4, 1)..hsv(360, 1, 1)
let body = spectrum(body_1, body_2 at body_gaps.x, body_3 at body_gaps.x + body_gaps.y, body_4 at body_gaps.x + body_gaps.y + body_gaps.z)
let away = max(legs_away, 0)
let attached = 1 - away
let circle = clamp(curl_up, 0, 1)
let loose = (1 - circle) * attached
yaw 90
sharpness 1
shine 1
worm
part worm {
branch {
shape donut
colour body(0)
lay
forward -0.3
shape tube
repeat 30 as k {
let along = k / 30
forward stride / 2
yaw loose * wiggle.y * sin(180 * wiggle_waves.y * along)
pitch 12 * circle + loose * wiggle.x * sin(180 * wiggle_waves.x * along)
roll loose * wiggle.z * sin(180 * wiggle_waves.z * (along - 1))
grow 1 + loose * swell * sin(180 * swell_waves * along)
forward stride / 2
colour body(along)
lay
branch {
let beads = leg_length * sin(180 * leg_waves * (along + leg_start))
leg(beads, body(along), stride_out(true))
mirror y
leg(beads, body(along), stride_out(false))
}
}
forward stride - 0.4
shape donut
lay
}
}
// How far apart a leg's beads are: the inner legs spread as the body curls up.
function stride_out(inner) {
if inner {
return 0.4 + circle * leg_spread
}
return 0.4
}
part leg(beads, base, spacing) {
branch {
pitch 90
yaw circle * attached * leg_turn
forward away * leg_reach
shape ball
grow (0.5, 0.5, bead_length)
forward -0.2
let size = bead_taper
repeat ceil(beads) as k {
forward spacing
let along = k / beads
colour spectrum(base, leg_tip)(along)
// The last bead is cut short by what's left of the count.
if k + 1 > beads {
size *= beads % 1
}
grow size
yaw degrees(attached * (leg_curl * sin(180 * leg_curl_waves * along)) ^ 3)
forward spacing
lay
}
}
}
variant member_2 {
legs_away = -4.382
curl_up = -2.532
leg_reach = 4.889
stride = 0.977
wiggle = (-7.057, 17.85, 1.837)
wiggle_waves = (2.832, 2.438, 2.983)
swell = 0.05078
swell_waves = 0.6305
leg_length = 13.56
leg_waves = 1.798
leg_start = 0.8668
leg_turn = -0.6955
leg_spread = 1.052
bead_length = 1.498
bead_taper = 0.9466
leg_curl = 1.045
leg_curl_waves = 0.8635
body_1 = hsv(88.9, 0.83, 1)
body_2 = hsv(12, 0.88, 1)
body_3 = hsv(62.9, 0.77, 1)
body_4 = hsv(60.4, 0.65, 1)
body_gaps = (0.4423, 0.3939, 0.5718)
leg_tip = hsv(218.5, 0.5, 1)
}
variant member_3 {
legs_away = -3.753
curl_up = -1.534
leg_reach = 12.92
stride = 0.9741
wiggle = (-16.93, 10.06, -11.67)
wiggle_waves = (2.975, 2.704, 1.633)
swell = 0.02304
swell_waves = 1.723
leg_length = 3.845
leg_waves = 0.6921
leg_start = 0.3731
leg_turn = 7.014
leg_spread = 1.938
bead_length = 2.173
bead_taper = 0.8282
leg_curl = -1.165
leg_curl_waves = 1.736
body_1 = hsv(312.3, 0.49, 1)
body_2 = hsv(189.4, 0.59, 1)
body_3 = hsv(260.5, 0.77, 1)
body_4 = hsv(52.3, 0.99, 1)
body_gaps = (0.2819, 0.488, 0.9365)
leg_tip = hsv(112.6, 0.93, 1)
}
variant member_4 {
legs_away = 0.6745
curl_up = -1.247
leg_reach = 5.742
stride = 0.8983
wiggle = (2.312, 1.527, -16.95)
wiggle_waves = (2.677, 1.789, 1.53)
swell = -0.08456
swell_waves = 1.012
leg_length = 7.466
leg_waves = 1
leg_start = 0.006293
leg_turn = 1.897
leg_spread = 1.95
bead_length = 1.68
bead_taper = 0.8679
leg_curl = 1.251
leg_curl_waves = 1.724
body_1 = hsv(36.5, 0.89, 1)
body_2 = hsv(88.9, 0.6, 1)
body_3 = hsv(199.1, 0.97, 1)
body_4 = hsv(307.8, 0.78, 1)
body_gaps = (0.9105, 0.8472, 0.7169)
leg_tip = hsv(77.8, 0.69, 1)
}
variant member_5 {
legs_away = -0.141
curl_up = -0.07943
leg_reach = 4.174
stride = 0.8064
wiggle = (0.7381, -17.14, 4.941)
wiggle_waves = (1.802, 1.923, 1.328)
swell = 0.04841
swell_waves = 1.647
leg_length = 9.225
leg_waves = 1.336
leg_start = 0.006293
leg_turn = 1.955
leg_spread = 2.257
bead_length = 1.397
bead_taper = 0.9783
leg_curl = 1.086
leg_curl_waves = 1.97
body_1 = hsv(179.4, 0.9, 1)
body_2 = hsv(210.8, 0.63, 1)
body_3 = hsv(224, 0.91, 1)
body_4 = hsv(304.9, 0.78, 1)
body_gaps = (0.8318, 0.4984, 0.4518)
leg_tip = hsv(346.1, 0.87, 1)
}
variant member_6 {
legs_away = -0.09681
curl_up = 0.3121
leg_reach = 7.436
stride = 0.8134
wiggle = (-1.911, -0.7886, -6.438)
wiggle_waves = (1.294, 2.244, 1.765)
swell = -0.01532
swell_waves = 1.158
leg_length = 6.078
leg_waves = 0.9258
leg_start = 0.1634
leg_turn = -12.14
leg_spread = 1.316
bead_length = 2.518
bead_taper = 0.8511
leg_curl = 0.6355
leg_curl_waves = 2.083
body_1 = hsv(300.7, 0.95, 1)
body_2 = hsv(256.2, 0.76, 1)
body_3 = hsv(240.1, 0.9, 1)
body_4 = hsv(322.5, 0.64, 1)
body_gaps = (0.9713, 0.9284, 0.5469)
leg_tip = hsv(139.6, 0.67, 1)
}
variant member_7 {
legs_away = 0.5801
curl_up = 0.7719
leg_reach = 17.18
stride = 0.9407
wiggle = (0.8597, 10.02, 4.283)
wiggle_waves = (1.464, 1.345, 1.394)
swell = 0.05637
swell_waves = 1.677
leg_length = 5.746
leg_waves = 0.5307
leg_start = 0.6712
leg_turn = -35.63
leg_spread = 1.765
bead_length = 0.7007
bead_taper = 0.9745
leg_curl = -1.334
leg_curl_waves = 2.248
body_1 = hsv(46.4, 0.5, 1)
body_2 = hsv(129.2, 0.5, 1)
body_3 = hsv(336, 0.56, 1)
body_4 = hsv(156.7, 0.99, 1)
body_gaps = (0.4612, 0.8361, 0.7589)
leg_tip = hsv(291, 0.42, 1)
}
variant member_8 {
legs_away = -1.676
curl_up = 0.9599
leg_reach = 2.142
stride = 0.8953
wiggle = (9.607, -11.23, -12.13)
wiggle_waves = (2.126, 1.572, 1.698)
swell = 0.04742
swell_waves = 0.2133
leg_length = 5.752
leg_waves = 0.9077
leg_start = 0.09175
leg_turn = 1.319
leg_spread = 0.4972
bead_length = 2.322
bead_taper = 0.9142
leg_curl = 0.7406
leg_curl_waves = 2.745
body_1 = hsv(81.5, 0.77, 1)
body_2 = hsv(240.2, 0.94, 1)
body_3 = hsv(12.2, 0.93, 1)
body_4 = hsv(135.9, 0.66, 1)
body_gaps = (0.5767, 0.4498, 0.6609)
leg_tip = hsv(160.2, 0.48, 1)
}
variant member_9 {
legs_away = -1.676
curl_up = -0.1719
leg_reach = 9.848
stride = 0.8953
wiggle = (9.607, -11.23, -12.13)
wiggle_waves = (2.126, 1.847, 1.319)
swell = -0.07622
swell_waves = 1.975
leg_length = 5.752
leg_waves = 4.549
leg_start = 0.09681
leg_turn = 1.319
leg_spread = 0.5285
bead_length = 2.782
bead_taper = 0.832
leg_curl = 1.227
leg_curl_waves = 2.745
body_1 = hsv(6.7, 0.93, 1)
body_2 = hsv(173.8, 0.88, 1)
body_3 = hsv(119.2, 0.89, 1)
body_4 = hsv(98.7, 0.56, 1)
body_gaps = (0.8976, 0.4498, 0.6609)
leg_tip = hsv(306.3, 0.62, 1)
}
variant member_10 {
legs_away = -0.141
curl_up = -3.471
leg_reach = 10.78
stride = 0.84
wiggle = (5.01, -16.76, 4.941)
wiggle_waves = (2.719, 1.294, 1.328)
swell = 0.04841
swell_waves = 1.647
leg_length = 13.66
leg_waves = 0.8843
leg_start = 0.1326
leg_turn = 42.68
leg_spread = 2.257
bead_length = 1.575
bead_taper = 1.019
leg_curl = 1.34
leg_curl_waves = 0.5153
body_1 = hsv(43, 0.84, 1)
body_2 = hsv(208.6, 0.77, 1)
body_3 = hsv(224, 0.91, 1)
body_4 = hsv(127.1, 0.82, 1)
body_gaps = (0.543, 0.4755, 0.4391)
leg_tip = hsv(346.1, 0.87, 1)
}
variant member_11 {
legs_away = -0.141
curl_up = -1.937
leg_reach = 8.821
stride = 0.824
wiggle = (-1.015, -17.14, 4.941)
wiggle_waves = (2.571, 1.294, 1.494)
swell = 0.04841
swell_waves = 1.924
leg_length = 13.66
leg_waves = 2.535
leg_start = 0.1905
leg_turn = 46.48
leg_spread = 2.257
bead_length = 1.527
bead_taper = 0.9783
leg_curl = 1.384
leg_curl_waves = 0.5153
body_1 = hsv(43, 0.84, 1)
body_2 = hsv(208.6, 0.77, 1)
body_3 = hsv(242.6, 0.98, 1)
body_4 = hsv(127.1, 0.82, 1)
body_gaps = (0.543, 0.4755, 0.4518)
leg_tip = hsv(346.1, 0.87, 1)
}
variant member_12 {
legs_away = -4.382
curl_up = -3.903
leg_reach = 4.889
stride = 1.046
wiggle = (-7.057, 17.85, -5.462)
wiggle_waves = (2.832, 2.438, 2.983)
swell = 0.1402
swell_waves = 0.7648
leg_length = 11.86
leg_waves = 1.798
leg_start = 0.8668
leg_turn = -16.87
leg_spread = 1.052
bead_length = 1.886
bead_taper = 0.9517
leg_curl = 1.045
leg_curl_waves = 1.81
body_1 = hsv(179.1, 0.68, 1)
body_2 = hsv(12, 0.88, 1)
body_3 = hsv(3.5, 0.88, 1)
body_4 = hsv(81.8, 0.78, 1)
body_gaps = (0.4423, 0.3939, 0.7437)
leg_tip = hsv(134.1, 0.45, 1)
}