Creatures › Cobra
Cobra
Two snakes, mirror images of each other, swaying and twisting as they grow, with fins along their sides and a pearl in a ring between them. Inspired by Cobra, a DancerDNA creature.
29 genes · 11 variants · moves by itself · has a dance of its own
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 Cobra mutates, breeds and morphs.
| Gene | What it does | Range | Value |
|---|---|---|---|
scales | how much its skin and pearl wear their textures | 0 to 1 | 1 |
sway | how far the body sways from side to side | -28.65 to 28.65 | 28.09 |
sway_waves | how many half-waves the sway makes along the body | 1 to 3 | 2.659 |
rise | how far the body rises and falls | -28.65 to 28.65 | -3.236 |
rise_waves | 1 to 3 | 1.111 | |
twist | how far the body twists | -28.65 to 28.65 | 3.975 |
twist_waves | 1 to 3 | 1 | |
taper | how much bigger each segment is than the last | 0.9 to 1.1 | 1.083 |
offset | where its middle is: each member's keeps them all in the middle of the view | (-10, -10, -10) to (10, 10, 10) | (0, 2.1, 0.9) |
size | how big it is overall: each member's keeps them all about the same size | 0.1 to 2, by ratios | 0.143 |
fin | how far the fins reach: sideways, up and back | (-2, -2, -2) to (2, 2, 2) | (1.387, 1.316, 0.5628) |
fin_waves | how many half-waves the fins make along the body | (1, 1, 1) to (3, 3, 3) | (2.396, 1.035, 1) |
skin_1 | hues 0° + 356.4° | hsv(89.9, 0.49, 1, 1) | |
skin_2 | hues 0° + 356.4° | hsv(112, 0.45, 1, 1) | |
skin_3 | hues 0° + 356.4° | hsv(96, 0.59, 1, 1) | |
skin_4 | hues 0° + 356.4° | hsv(152.7, 0.45, 1, 1) | |
skin_gaps | (0.25, 0.25, 0.25) to (1, 1, 1) | (0.5861, 0.3406, 0.25) | |
fin_1 | hues 0° + 237.6° | hsv(54, 1, 1, 1) | |
fin_2 | hues 0° + 237.6° | hsv(228.9, 0.98, 0.94, 1) | |
fin_3 | hues 0° + 237.6° | hsv(103.2, 0.96, 0.74, 1) | |
fin_4 | hues 0° + 237.6° | hsv(82.4, 0.87, 0.65, 1) | |
fin_gaps | (0.25, 0.25, 0.25) to (1, 1, 1) | (0.5613, 0.8866, 0.25) | |
pearl_colour | hues 18° + 36° | hsv(40.1, 0.65, 0.95, 1) | |
ring_colour | hues 21.6° + 32.4° | hsv(41.3, 0.92, 0.97, 1) | |
pearl_size | 1.2 to 3 | 2.978 | |
ring_size | 1.5 to 2.5 | 1.787 | |
ring_tilt | how the ring turns: up, sideways and round | (-343.8, -343.8, -343.8) to (343.8, 343.8, 343.8) | (207.7, 52.8, 0) |
ball_hue | 0 to 360 | 125 | |
ball_pulse | 0 to 90 | 90 |
The code
creature Cobra
// Two snakes, mirror images of each other, swaying and twisting as they grow, with fins along
// their sides and a pearl in a ring between them.
// Inspired by Cobra, a DancerDNA creature.
gene scales = 1 in 0..1 // how much its skin and pearl wear their textures
gene sway = 28.09 in -28.65..28.65 // how far the body sways from side to side
gene sway_waves = 2.659 in 1..3 // how many half-waves the sway makes along the body
gene rise = -3.236 in -28.65..28.65 // how far the body rises and falls
gene rise_waves = 1.111 in 1..3
gene twist = 3.975 in -28.65..28.65 // how far the body twists
gene twist_waves = 1 in 1..3
gene taper = 1.083 in 0.9..1.1 // how much bigger each segment is than the last
gene offset = (0, 2.1, 0.9) in (-10, -10, -10)..(10, 10, 10) // where its middle is: each member's keeps them all in the middle of the view
gene size = 0.143 in 0.1..2 log // how big it is overall: each member's keeps them all about the same size
gene fin = (1.387, 1.316, 0.5628) in (-2, -2, -2)..(2, 2, 2) // how far the fins reach: sideways, up and back
gene fin_waves = (2.396, 1.035, 1) in (1, 1, 1)..(3, 3, 3) // how many half-waves the fins make along the body
// The snakes' colours, from the ends to the middle, and the gaps between them.
gene skin_1 = hsv(89.9, 0.49, 1) in hsv(0, 0.4, 1)..hsv(356.4, 0.6, 1)
gene skin_2 = hsv(112, 0.45, 1) in hsv(0, 0.4, 1)..hsv(356.4, 0.6, 1)
gene skin_3 = hsv(96, 0.59, 1) in hsv(0, 0.4, 1)..hsv(356.4, 0.6, 1)
gene skin_4 = hsv(152.7, 0.45, 1) in hsv(0, 0.4, 1)..hsv(356.4, 0.6, 1)
gene skin_gaps = (0.5861, 0.3406, 0.25) in (0.25, 0.25, 0.25)..(1, 1, 1)
// The fins' colours, in the same way.
gene fin_1 = hsv(54, 1, 1) in hsv(0, 0.8, 0.6)..hsv(237.6, 1, 1)
gene fin_2 = hsv(228.9, 0.98, 0.94) in hsv(0, 0.8, 0.6)..hsv(237.6, 1, 1)
gene fin_3 = hsv(103.2, 0.96, 0.74) in hsv(0, 0.8, 0.6)..hsv(237.6, 1, 1)
gene fin_4 = hsv(82.4, 0.87, 0.65) in hsv(0, 0.8, 0.6)..hsv(237.6, 1, 1)
gene fin_gaps = (0.5613, 0.8866, 0.25) in (0.25, 0.25, 0.25)..(1, 1, 1)
gene pearl_colour = hsv(40.1, 0.65, 0.95) in hsv(18, 0, 0.4)..hsv(54, 1, 1)
gene ring_colour = hsv(41.3, 0.92, 0.97) in hsv(21.6, 0, 0.4)..hsv(54, 1, 1)
gene pearl_size = 2.978 in 1.2..3
gene ring_size = 1.787 in 1.5..2.5
gene ring_tilt = (207.7, 52.8, 0) in (-343.8, -343.8, -343.8)..(343.8, 343.8, 343.8) // how the ring turns: up, sideways and round
gene ball_hue = 125 in 0..360
gene ball_pulse = 90 in 0..90
let skin = spectrum(skin_1, skin_2 at skin_gaps.x, skin_3 at skin_gaps.x + skin_gaps.y, skin_4 at skin_gaps.x + skin_gaps.y + skin_gaps.z)
let fins = spectrum(fin_1, fin_2 at fin_gaps.x, fin_3 at fin_gaps.x + fin_gaps.y, fin_4 at fin_gaps.x + fin_gaps.y + fin_gaps.z)
// Where the pearl goes: the middle of the first snake, measured as it's drawn.
let middle_y = 0
let middle_z = 0
shine 1
sharpness 1
move -offset
grow size
symmetric x {
snake(side)
}
pearl_ring
part snake(side) {
let total_y = 0
let total_z = 0
shape ball
repeat 29 as k {
let along = (k + 1) / 30
forward 0.45
yaw sway * sin(180 * sway_waves * along)
pitch rise * sin(180 * rise_waves * along)
roll twist * sin(180 * twist_waves * (along - 1))
grow taper
forward 0.45
colour skin(bump(along))
texture mixed(pattern(kaleidoscope, 47, 35, jewel, pearl), blend, lightning, 0.5)
wear scales
total_y += turtle.position.y
total_z += turtle.position.z
lay
branch {
pitch 90
let reach = (fin.x * sin(180 * fin_waves.x * along), fin.y * sin(180 * fin_waves.y * along), fin.z * sin(180 * fin_waves.z * (along - 1)))
move reach
texture none
colour fins(bump(along))
lay { grow reach * 3 }
}
}
if side > 0 {
middle_y = total_y / 30
middle_z = total_z / 30
}
}
part pearl_ring {
// The middle was measured as drawn: moved by offset and grown by size.
move (0, middle_y - turtle.position.y, middle_z - turtle.position.z) / size
shape ball
colour pearl_colour
texture mixed(pattern(kaleidoscope, ball_hue + ball_pulse * music.bass, 19, pastel, pearl), blend, lightning, 0.6)
wear scales
grow pearl_size
lay
pitch ring_tilt.x
yaw ring_tilt.y
roll ring_tilt.z
grow ring_size
shape ring
texture none
colour ring_colour
lay
}
// Its own dance: Wanderer, the style DancerDNA's Cobra was saved with (as far as can be told).
dance {
morph follows music.mid speed 1.2 settle 0.38
zoom follows music.mid_hit amount 0.5 settle 50
spin follows music.level from 45.8 to 229 smooth 0
turn on music.bass changes by 1
reverse on music.bass drops by 1 on 4 off 4
}
variant member_2 {
offset = (0, 0.8, -1.4)
size = 0.309
sway = 28.08
sway_waves = 1.739
rise = 10.86
rise_waves = 2.813
twist = 16.53
twist_waves = 2.456
taper = 1.029
fin = (-1.916, -0.03022, 1.676)
fin_waves = (1.513, 1.383, 2.326)
skin_1 = hsv(97.2, 0.54, 1)
skin_2 = hsv(148.4, 0.52, 1)
skin_3 = hsv(336.8, 0.53, 1)
skin_4 = hsv(273, 0.54, 1)
skin_gaps = (0.7273, 0.9973, 0.5318)
fin_1 = hsv(27.4, 0.81, 0.66)
fin_2 = hsv(12.1, 0.93, 0.68)
fin_3 = hsv(193.5, 0.9, 0.62)
fin_4 = hsv(135.5, 0.85, 0.69)
fin_gaps = (0.725, 0.8858, 0.4811)
pearl_colour = hsv(33, 0.86, 0.59)
ring_colour = hsv(35.8, 0.92, 0.77)
pearl_size = 2.462
ring_size = 2.455
ring_tilt = (-29.95, 106.2, 331.7)
}
variant member_3 {
offset = (0, 0, 4.8)
size = 1.6
sway = 11.04
sway_waves = 1.798
rise = 15.61
rise_waves = 1
twist = -28.37
taper = 0.9028
fin = (1.415, 1, 1.501)
fin_waves = (2.225, 1.035, 1.22)
skin_1 = hsv(248, 0.58, 1)
skin_2 = hsv(112.5, 0.59, 1)
skin_3 = hsv(125.5, 0.47, 1)
skin_4 = hsv(85.7, 0.44, 1)
skin_gaps = (0.6383, 0.8783, 0.25)
fin_2 = hsv(54, 1, 1)
fin_3 = hsv(33.2, 0.99, 0.97)
fin_4 = hsv(146.4, 0.9, 0.74)
fin_gaps = (0.25, 0.25, 0.5209)
pearl_colour = hsv(18, 1, 1)
ring_colour = hsv(51.1, 0.3, 0.68)
pearl_size = 1.2
ring_size = 1.5
ring_tilt = (-65.44, 52.8, 0)
}
variant member_4 {
offset = (0, -1.2, 4.7)
size = 1.26
sway = -15.35
sway_waves = 1.777
rise = -9.783
rise_waves = 1.552
twist = -22.68
taper = 0.9146
fin = (0.6473, -0.9955, 1.947)
fin_waves = (1.244, 1.714, 1.091)
skin_1 = hsv(189.5, 0.44, 1)
skin_2 = hsv(17, 0.53, 1)
skin_3 = hsv(106, 0.6, 1)
skin_4 = hsv(199.9, 0.45, 1)
skin_gaps = (0.5861, 0.3406, 0.6599)
fin_1 = hsv(214.2, 0.91, 0.69)
fin_2 = hsv(68.5, 0.94, 0.73)
fin_4 = hsv(44.5, 0.84, 0.79)
fin_gaps = (0.5656, 0.4626, 0.6632)
pearl_colour = hsv(49.1, 0.76, 0.92)
ring_colour = hsv(50.6, 0.46, 0.8)
pearl_size = 2.025
ring_size = 2.074
ring_tilt = (-329.9, -327, 271.2)
}
variant member_5 {
offset = (0, -4, 5.2)
size = 1.72
sway = -10.2
sway_waves = 1.717
rise = 10.86
rise_waves = 1.558
twist = -10.85
twist_waves = 1.09
taper = 0.9026
fin = (1.707, -1.324, -0.1833)
fin_waves = (2.265, 2.117, 2.874)
skin_1 = hsv(36.9, 0.48, 1)
skin_2 = hsv(307.3, 0.49, 1)
skin_3 = hsv(336.8, 0.53, 1)
skin_4 = hsv(23.9, 0.58, 1)
skin_gaps = (0.4188, 0.8804, 0.3988)
fin_1 = hsv(158.8, 0.94, 0.88)
fin_2 = hsv(100.1, 0.94, 0.84)
fin_3 = hsv(69, 0.97, 0.72)
fin_4 = hsv(8.4, 0.86, 0.75)
fin_gaps = (0.8984, 0.5857, 0.92)
pearl_colour = hsv(21.8, 0.02, 0.74)
ring_colour = hsv(29.7, 0.58, 0.66)
pearl_size = 1.573
ring_size = 2.385
ring_tilt = (-283, 91.47, 149.5)
}
variant member_6 {
offset = (0, -1.4, 3.5)
size = 1.05
sway = -17.1
sway_waves = 1
rise = 7.915
rise_waves = 1.552
twist = 5.808
twist_waves = 1.516
taper = 0.954
fin = (0.6715, -1.744, -1.961)
fin_waves = (2.351, 1.714, 2.251)
skin_1 = hsv(324, 0.58, 1)
skin_2 = hsv(230.5, 0.45, 1)
skin_3 = hsv(25, 0.45, 1)
skin_4 = hsv(175.5, 0.5, 1)
skin_gaps = (0.54, 0.9157, 0.5872)
fin_1 = hsv(15.4, 0.9, 0.66)
fin_2 = hsv(136.3, 0.84, 0.6)
fin_3 = hsv(42.1, 0.91, 0.79)
fin_4 = hsv(185.9, 0.86, 0.64)
fin_gaps = (0.9168, 0.794, 0.6632)
pearl_colour = hsv(41.2, 0.13, 0.5)
ring_colour = hsv(44.6, 0.4, 0.78)
pearl_size = 2.08
ring_size = 2.163
ring_tilt = (-219.4, 106.2, 0)
}
variant member_7 {
offset = (0, -3.5, 5.4)
size = 1.38
sway = -16.94
sway_waves = 1.765
rise = 14.89
rise_waves = 1.552
twist = -27.04
taper = 0.9146
fin = (-1.982, -0.3833, -0.8202)
fin_waves = (2.959, 1.106, 1.197)
skin_1 = hsv(125.7, 0.47, 1)
skin_2 = hsv(103.3, 0.44, 1)
skin_3 = hsv(328.4, 0.59, 1)
skin_4 = hsv(134.1, 0.47, 1)
skin_gaps = (0.54, 0.5239, 0.9948)
fin_1 = hsv(17.1, 0.88, 0.82)
fin_2 = hsv(136.3, 0.84, 0.6)
fin_3 = hsv(184.8, 0.89, 0.64)
fin_4 = hsv(185.9, 0.86, 0.64)
fin_gaps = (0.5656, 0.9155, 0.7515)
pearl_colour = hsv(48.5, 0.33, 0.48)
ring_colour = hsv(42.4, 0.29, 0.79)
pearl_size = 1.815
ring_size = 2.3
ring_tilt = (231.6, -4.957, 102.7)
}
variant member_8 {
offset = (0, -2, 2.8)
size = 1.23
sway = 25.55
sway_waves = 1.107
rise = 16.99
rise_waves = 1.552
twist = 15.8
twist_waves = 2.512
taper = 0.9175
fin = (-0.1563, -1.138, 1.464)
fin_waves = (2.488, 1.714, 2.387)
skin_1 = hsv(36.9, 0.48, 1)
skin_2 = hsv(44.9, 0.4, 1)
skin_3 = hsv(343.3, 0.56, 1)
skin_4 = hsv(134.1, 0.47, 1)
skin_gaps = (0.6919, 0.6565, 0.8628)
fin_1 = hsv(101.9, 0.82, 0.87)
fin_2 = hsv(83.9, 0.86, 0.7)
fin_3 = hsv(12, 0.84, 0.6)
fin_4 = hsv(158.3, 0.85, 0.64)
fin_gaps = (0.3448, 0.8581, 0.3088)
pearl_colour = hsv(32.7, 0.94, 0.97)
ring_colour = hsv(50, 0.49, 0.74)
pearl_size = 2.08
ring_size = 2.299
ring_tilt = (-29.95, -15.93, 6.956)
}
variant member_9 {
offset = (0, 3.7, 4.1)
size = 1.29
sway = 23.13
sway_waves = 1.031
rise = -8.053
rise_waves = 2.344
twist = -10.85
twist_waves = 2.83
taper = 0.955
fin = (0.5994, 1.917, -1.896)
fin_waves = (1.916, 2.229, 1.947)
skin_1 = hsv(36.9, 0.48, 1)
skin_2 = hsv(307.3, 0.49, 1)
skin_3 = hsv(247.7, 0.58, 1)
skin_4 = hsv(312.2, 0.49, 1)
skin_gaps = (0.5323, 0.4826, 0.9444)
fin_1 = hsv(27.4, 0.81, 0.66)
fin_2 = hsv(214.3, 0.93, 0.64)
fin_3 = hsv(3.4, 0.89, 0.89)
fin_4 = hsv(113.4, 0.83, 0.77)
fin_gaps = (0.3322, 0.407, 0.8198)
pearl_colour = hsv(45.8, 0.46, 0.48)
ring_colour = hsv(33.4, 0.93, 0.94)
pearl_size = 1.705
ring_size = 2.394
ring_tilt = (-254.6, -158.2, 104.1)
}
variant member_10 {
offset = (0, -4, 3.5)
size = 0.994
sway = 9.906
sway_waves = 2.299
rise = 10.86
rise_waves = 1.948
twist = -10.85
twist_waves = 1.254
taper = 0.955
fin = (1.256, 1.917, -1.896)
fin_waves = (2.255, 2.117, 2.393)
skin_1 = hsv(36.9, 0.48, 1)
skin_2 = hsv(307.3, 0.49, 1)
skin_3 = hsv(286.4, 0.49, 1)
skin_4 = hsv(300.2, 0.54, 1)
skin_gaps = (0.5323, 0.8591, 0.438)
fin_1 = hsv(78.6, 0.9, 0.83)
fin_2 = hsv(169.4, 0.94, 0.6)
fin_3 = hsv(178.6, 0.94, 0.83)
fin_4 = hsv(113.4, 0.83, 0.77)
fin_gaps = (0.3684, 0.407, 0.8198)
pearl_colour = hsv(32.6, 0.1, 0.42)
ring_colour = hsv(24.3, 0.29, 0.66)
pearl_size = 1.351
ring_size = 1.996
ring_tilt = (-314.4, 165.8, 104.1)
}
variant member_11 {
offset = (0, -2.8, 0.9)
size = 0.841
sway = -19.08
sway_waves = 2.375
rise = 10.86
rise_waves = 2.187
twist = 12.57
twist_waves = 1.254
taper = 0.955
fin = (0.337, -0.293, -1.142)
fin_waves = (2.447, 2.117, 1.814)
skin_1 = hsv(17.3, 0.49, 1)
skin_2 = hsv(307.3, 0.49, 1)
skin_3 = hsv(160.1, 0.43, 1)
skin_4 = hsv(334, 0.58, 1)
skin_gaps = (0.8014, 0.7994, 0.3908)
fin_1 = hsv(154.7, 0.82, 0.73)
fin_2 = hsv(38.8, 0.92, 0.75)
fin_3 = hsv(18.1, 0.93, 0.97)
fin_4 = hsv(192, 1, 0.92)
fin_gaps = (0.7173, 0.2909, 0.2917)
pearl_colour = hsv(39.2, 0.74, 0.67)
ring_colour = hsv(33.4, 0.93, 0.94)
pearl_size = 2.824
ring_size = 2.434
ring_tilt = (-104.1, -120.1, 219.2)
}
variant member_12 {
offset = (0, -4.6, 5)
size = 1.56
sway = 10.06
sway_waves = 1.956
rise = 3.727
rise_waves = 1.055
twist = -16.55
twist_waves = 1.371
taper = 0.9416
fin = (0.4251, -0.293, -0.1528)
fin_waves = (2.148, 2.789, 1.987)
skin_1 = hsv(267.9, 0.49, 1)
skin_2 = hsv(5.4, 0.51, 1)
skin_3 = hsv(73.6, 0.53, 1)
skin_4 = hsv(334, 0.58, 1)
skin_gaps = (0.5596, 0.9194, 0.7834)
fin_1 = hsv(158.9, 0.96, 1)
fin_2 = hsv(2.6, 0.94, 0.91)
fin_3 = hsv(207.2, 0.92, 0.9)
fin_4 = hsv(182.3, 0.96, 0.68)
fin_gaps = (0.528, 0.2598, 0.7941)
pearl_colour = hsv(38.3, 0.44, 0.8)
ring_colour = hsv(48, 0.37, 0.87)
pearl_size = 1.526
ring_size = 1.826
ring_tilt = (-0.7805, -101, -184.1)
}