@genocode/core 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/ast.d.ts +17 -1
  2. package/dist/ast.d.ts.map +1 -1
  3. package/dist/ast.js.map +1 -1
  4. package/dist/builtins.d.ts +1 -1
  5. package/dist/builtins.d.ts.map +1 -1
  6. package/dist/builtins.js +5 -2
  7. package/dist/builtins.js.map +1 -1
  8. package/dist/checker.d.ts +10 -1
  9. package/dist/checker.d.ts.map +1 -1
  10. package/dist/checker.js +102 -2
  11. package/dist/checker.js.map +1 -1
  12. package/dist/colour.d.ts +1 -1
  13. package/dist/colour.d.ts.map +1 -1
  14. package/dist/colour.js +8 -4
  15. package/dist/colour.js.map +1 -1
  16. package/dist/format.d.ts.map +1 -1
  17. package/dist/format.js +37 -3
  18. package/dist/format.js.map +1 -1
  19. package/dist/genetics.d.ts.map +1 -1
  20. package/dist/genetics.js +3 -1
  21. package/dist/genetics.js.map +1 -1
  22. package/dist/help.d.ts.map +1 -1
  23. package/dist/help.js +30 -3
  24. package/dist/help.js.map +1 -1
  25. package/dist/index.d.ts +1 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/interpreter.js +3 -1
  29. package/dist/interpreter.js.map +1 -1
  30. package/dist/lexer.d.ts.map +1 -1
  31. package/dist/lexer.js +1 -0
  32. package/dist/lexer.js.map +1 -1
  33. package/dist/parser.js +48 -2
  34. package/dist/parser.js.map +1 -1
  35. package/dist/values.d.ts +2 -0
  36. package/dist/values.d.ts.map +1 -1
  37. package/dist/values.js +1 -1
  38. package/dist/values.js.map +1 -1
  39. package/package.json +1 -1
  40. package/reference/LANGUAGE.md +61 -8
  41. package/reference/creatures/Alien.genie +653 -0
  42. package/reference/creatures/Breeze.genie +386 -0
  43. package/reference/creatures/Cobra.genie +386 -0
  44. package/reference/creatures/Flowerball.genie +302 -39
  45. package/reference/creatures/FlyingFish.genie +786 -0
  46. package/reference/creatures/Genes.genie +470 -0
  47. package/reference/creatures/Genie.genie +548 -0
  48. package/reference/creatures/Greenbay.genie +786 -0
  49. package/reference/creatures/Jellyfish.genie +472 -0
  50. package/reference/creatures/Monster.genie +594 -0
  51. package/reference/creatures/Neuron.genie +649 -0
  52. package/reference/creatures/Octoplant.genie +334 -0
  53. package/reference/creatures/Parasite.genie +393 -0
  54. package/reference/creatures/Pesky.genie +473 -0
  55. package/reference/creatures/Phoenix.genie +294 -0
  56. package/reference/creatures/Picstix.genie +1788 -0
  57. package/reference/creatures/Psybat.genie +602 -0
  58. package/reference/creatures/Star.genie +339 -0
  59. package/reference/creatures/Starfish.genie +458 -0
  60. package/reference/creatures/Transformer.genie +297 -0
  61. package/reference/creatures/TwoByTwo.genie +547 -0
  62. package/reference/creatures/Flower.genie +0 -41
  63. package/reference/creatures/Flyer.genie +0 -142
  64. package/reference/creatures/StarBurstShell.genie +0 -102
  65. package/reference/creatures/StarBurstShell9.genie +0 -102
@@ -2,14 +2,33 @@ creature Flowerball
2
2
  // A ball of beads in rings, which opens out into a flat disc, crowned by five curling petals.
3
3
  // Inspired by Flowerball, a DancerDNA creature.
4
4
 
5
- gene open = 0.63 in 0..1 // 0 lays the beads flat in a disc; 1 rounds them into a ball and fills out the petals
6
- gene gloss = 0.64 in 0..1 // how strong the highlights are
7
- gene focus = 0.21 in 0..1 // how tight the highlights are
8
- gene lift = 14.5 in -20..20 // how far from the beads the petals grow, as the creature opens
5
+ gene open = 0.7787 in 0..1 // 0 lays the beads flat in a disc; 1 rounds them into a ball and fills out the petals
6
+ gene gloss = 1 in 0..1 // how strong the highlights are
7
+ gene focus = 0.2688 in 0..1 // how tight the highlights are
8
+ gene lift = 3.833 in -20..20 // how far from the beads the petals grow, as the creature opens
9
+ gene ball_radius = -2.893 in -10..15 // how big the ball the beads round into is; never less than 1
10
+ gene bead_size = 0.5677 in 0.1..1
11
+ gene curl = -2.292 in -2.5..2.5 // how far the petals curl
12
+
13
+ // The beads' colours, from the middle ring out, and the petals', from base to tip, with the
14
+ // gaps between them.
15
+ gene bead_1 = hsv(179.1, 0.74, 0.97) in hsv(0, 0.4, 0)..hsv(360, 1, 1)
16
+ gene bead_2 = hsv(261.3, 0.48, 0.57) in hsv(0, 0.4, 0)..hsv(360, 1, 1)
17
+ gene bead_3 = hsv(283.6, 0.47, 0.05) in hsv(0, 0.4, 0)..hsv(360, 1, 1)
18
+ gene bead_4 = hsv(172.1, 0.7, 0.92) in hsv(0, 0.4, 0)..hsv(360, 1, 1)
19
+ gene bead_gaps = (0.7718, 0.1893, 0.4874) in (0.01, 0.01, 0.01)..(1, 1, 1)
20
+ gene petal_1 = hsv(4.3, 0.86, 0.02) in hsv(0, 0.4, 0)..hsv(360, 1, 1)
21
+ gene petal_2 = hsv(11.5, 0.95, 0.79) in hsv(0, 0.4, 0)..hsv(360, 1, 1)
22
+ gene petal_3 = hsv(233.6, 0.51, 0.41) in hsv(0, 0.4, 0)..hsv(360, 1, 1)
23
+ gene petal_4 = hsv(247.9, 0.76, 0.09) in hsv(0, 0.4, 0)..hsv(360, 1, 1)
24
+ gene petal_gaps = (0.4035, 0.6554, 0.3471) in (0.01, 0.01, 0.01)..(1, 1, 1)
25
+
26
+ let beads = spectrum(bead_1, bead_2 at bead_gaps.x, bead_3 at bead_gaps.x + bead_gaps.y, bead_4 at bead_gaps.x + bead_gaps.y + bead_gaps.z)
27
+ let petals = spectrum(petal_1, petal_2 at petal_gaps.x, petal_3 at petal_gaps.x + petal_gaps.y, petal_4 at petal_gaps.x + petal_gaps.y + petal_gaps.z)
9
28
 
10
29
  shine gloss
11
30
  sharpness focus
12
- beads
31
+ rings
13
32
  forward lift * open
14
33
  pitch 90
15
34
  repeat 5 {
@@ -17,52 +36,37 @@ repeat 5 {
17
36
  yaw 72
18
37
  }
19
38
 
20
- // Eight rings of beads around the heading. Ring 0 is the middle and has no beads.
21
- part beads {
22
- gene radius = 1 in 1..15 // the ball's radius, when it's fully open
23
- gene bead = 0.92 in 0.1..1 // the size of each bead
24
- gene inner = hsv(127, 0.45, 0.3) in hsv(0, 0.4, 0)..hsv(360, 1, 1)
25
- gene second = hsv(41, 0.95, 0.73) in hsv(0, 0.4, 0)..hsv(360, 1, 1)
26
- gene third = hsv(333, 0.96, 0.21) in hsv(0, 0.4, 0)..hsv(360, 1, 1)
27
- gene outer = hsv(59, 0.8, 0.95) in hsv(0, 0.4, 0)..hsv(360, 1, 1)
28
-
29
- let skin = gradient(inner, second, third, outer)
39
+ // Rings of beads round the middle: flat in a disc, or rounded into a ball, as the creature opens.
40
+ part rings {
41
+ let radius = max(ball_radius, 1)
30
42
  shape ball
31
- repeat 8 as r {
32
- let a = 180 * r / 8
33
- colour skin(r / 8)
34
- // Flat, ring r is r from the middle. As a ball, it's a circle of latitude.
35
- let spread = mix(r, sin(a) * radius, open)
36
- let height = open * cos(a) * radius
37
- let circle = tau * r
38
- repeat floor(circle) as s {
39
- let t = 360 * s / circle
43
+ repeat 7 as k {
44
+ let n = k + 1
45
+ colour beads(n / 8)
46
+ // The ring's latitude on the ball, and how many beads fit round it.
47
+ let latitude = 22.5 * n
48
+ let count = floor(2 * pi * n)
49
+ repeat count as b {
50
+ let angle = b * 360 / (2 * pi * n)
51
+ let reach = (1 - open) * n + open * sin(latitude) * radius
40
52
  branch {
41
- move (spread * cos(t), spread * sin(t), height)
42
- lay { grow bead }
53
+ move (reach * cos(angle), reach * sin(angle), open * cos(latitude) * radius)
54
+ lay { grow bead_size }
43
55
  }
44
56
  }
45
57
  }
46
58
  }
47
59
 
48
- // A curling chain of stretched beads, fattest in the middle.
49
60
  part petal {
50
- gene curl = -0.86 in -2.5..2.5 // how far the petal curls, and which way
51
- gene tip = hsv(285, 0.66, 0.3) in hsv(0, 0.4, 0)..hsv(360, 1, 1)
52
- gene edge = hsv(2, 0.43, 0.96) in hsv(0, 0.4, 0)..hsv(360, 1, 1)
53
- gene flank = hsv(90, 0.93, 0.61) in hsv(0, 0.4, 0)..hsv(360, 1, 1)
54
- gene heart = hsv(131, 0.56, 0.49) in hsv(0, 0.4, 0)..hsv(360, 1, 1)
55
-
56
- let skin = gradient(tip, edge, flank, heart)
57
61
  branch {
58
62
  forward 2.5
59
63
  pitch -36
60
64
  yaw -45
61
65
  roll -30
62
66
  shape ball
63
- for i from 1 to 29 {
64
- let swell = bump(i / 30)
65
- colour skin(swell)
67
+ repeat 29 as k {
68
+ let swell = bump((k + 1) / 30)
69
+ colour petals(swell)
66
70
  yaw 6
67
71
  branch {
68
72
  forward 0.1
@@ -74,6 +78,265 @@ part petal {
74
78
  }
75
79
  }
76
80
 
77
- background {
78
- fill gradient(hsv(250, 0.5, 0.12), hsv(200, 0.45, 0.4))
81
+ variant member_2 {
82
+ open = 1
83
+ focus = 0.2793
84
+ lift = 19.98
85
+ ball_radius = 1.976
86
+ bead_size = 0.6334
87
+ curl = -0.1978
88
+ bead_1 = hsv(127.5, 0.45, 0.3)
89
+ bead_2 = hsv(40.6, 0.95, 0.73)
90
+ bead_3 = hsv(333.4, 0.96, 0.21)
91
+ bead_4 = hsv(174.6, 0.75, 0.91)
92
+ bead_gaps = (0.8674, 0.1356, 0.561)
93
+ petal_1 = hsv(20.8, 0.53, 0.92)
94
+ petal_2 = hsv(332.4, 0.88, 0.54)
95
+ petal_3 = hsv(182.5, 0.43, 0.53)
96
+ petal_4 = hsv(216.7, 0.84, 0.33)
97
+ petal_gaps = (0.9659, 0.7316, 0.3366)
98
+ }
99
+
100
+ variant member_3 {
101
+ focus = 0.2032
102
+ lift = -5.974
103
+ ball_radius = -0.6997
104
+ bead_size = 0.6782
105
+ bead_1 = hsv(306.4, 0.88, 0.37)
106
+ bead_2 = hsv(350.7, 0.95, 0.7)
107
+ bead_3 = hsv(333.4, 0.96, 0.21)
108
+ bead_4 = hsv(210, 0.91, 0.69)
109
+ bead_gaps = (0.4577, 0.2859, 0.7186)
110
+ petal_1 = hsv(79.6, 0.88, 0.16)
111
+ petal_2 = hsv(32.4, 0.92, 0.71)
112
+ petal_3 = hsv(234.5, 0.57, 0.61)
113
+ petal_4 = hsv(269.9, 0.77, 0.23)
114
+ petal_gaps = (0.739, 0.6554, 0.3471)
115
+ }
116
+
117
+ variant member_4 {
118
+ open = 0.6268
119
+ focus = 0.2051
120
+ lift = 14.55
121
+ ball_radius = 0.2507
122
+ bead_size = 0.9206
123
+ curl = -0.8617
124
+ bead_1 = hsv(127.5, 0.45, 0.3)
125
+ bead_2 = hsv(40.6, 0.95, 0.73)
126
+ bead_3 = hsv(333.4, 0.96, 0.21)
127
+ bead_4 = hsv(58.7, 0.8, 0.95)
128
+ bead_gaps = (0.3025, 0.2437, 0.7186)
129
+ petal_1 = hsv(284.7, 0.66, 0.3)
130
+ petal_2 = hsv(2.1, 0.43, 0.96)
131
+ petal_3 = hsv(90, 0.93, 0.61)
132
+ petal_4 = hsv(131.5, 0.56, 0.49)
133
+ petal_gaps = (0.6292, 0.7316, 0.1457)
134
+ }
135
+
136
+ variant member_5 {
137
+ open = 1
138
+ focus = 0.9051
139
+ lift = 19.14
140
+ ball_radius = 15
141
+ bead_size = 1
142
+ curl = 0.06728
143
+ bead_1 = hsv(49.3, 0.59, 0.98)
144
+ bead_2 = hsv(83.1, 0.77, 0.59)
145
+ bead_3 = hsv(333.4, 0.96, 0.21)
146
+ bead_4 = hsv(210, 0.91, 0.69)
147
+ bead_gaps = (0.1748, 0.5721, 0.7186)
148
+ petal_1 = hsv(222.1, 0.45, 0.58)
149
+ petal_2 = hsv(356.1, 0.91, 0.58)
150
+ petal_3 = hsv(90, 0.93, 0.61)
151
+ petal_4 = hsv(210.1, 0.57, 0.71)
152
+ petal_gaps = (0.8019, 0.4914, 0.1457)
153
+ }
154
+
155
+ variant member_6 {
156
+ open = 0.6268
157
+ focus = 0.2051
158
+ lift = 1.632
159
+ ball_radius = 0.2507
160
+ bead_size = 0.9411
161
+ curl = -1.309
162
+ bead_1 = hsv(127.5, 0.45, 0.3)
163
+ bead_2 = hsv(29.4, 0.94, 0.53)
164
+ bead_3 = hsv(346.7, 0.85, 0.04)
165
+ bead_4 = hsv(245.7, 0.96, 0.97)
166
+ bead_gaps = (0.8674, 0.4145, 0.7186)
167
+ petal_1 = hsv(99, 0.5, 0.58)
168
+ petal_2 = hsv(295.7, 0.75, 0.22)
169
+ petal_3 = hsv(90, 0.93, 0.61)
170
+ petal_4 = hsv(210.1, 0.57, 0.71)
171
+ petal_gaps = (0.8782, 0.7316, 0.3572)
172
+ }
173
+
174
+ variant member_7 {
175
+ open = 0.9242
176
+ focus = 0.4838
177
+ lift = -9.984
178
+ ball_radius = 4.451
179
+ bead_size = 0.141
180
+ curl = 0.06728
181
+ bead_1 = hsv(93.4, 0.82, 0.4)
182
+ bead_2 = hsv(337.2, 0.72, 0.12)
183
+ bead_3 = hsv(337.9, 0.78, 0.23)
184
+ bead_4 = hsv(210, 0.91, 0.69)
185
+ bead_gaps = (0.4163, 0.1774, 0.3106)
186
+ petal_1 = hsv(35.6, 0.99, 0.77)
187
+ petal_2 = hsv(121.8, 0.72, 0.38)
188
+ petal_3 = hsv(206.4, 0.88, 0.63)
189
+ petal_4 = hsv(170.5, 0.85, 0.8)
190
+ petal_gaps = (0.6668, 0.3843, 0.3471)
191
+ }
192
+
193
+ variant member_8 {
194
+ open = 1
195
+ focus = 0.2755
196
+ lift = -20
197
+ ball_radius = 15
198
+ bead_size = 1
199
+ curl = -0.6755
200
+ bead_1 = hsv(306.4, 0.88, 0.37)
201
+ bead_2 = hsv(350.7, 0.95, 0.7)
202
+ bead_3 = hsv(333.4, 0.96, 0.21)
203
+ bead_4 = hsv(210, 0.91, 0.69)
204
+ bead_gaps = (0.4577, 0.2859, 0.7186)
205
+ petal_1 = hsv(282.9, 0.73, 0.13)
206
+ petal_2 = hsv(357.8, 0.83, 1)
207
+ petal_3 = hsv(229.5, 0.53, 0.57)
208
+ petal_4 = hsv(153.3, 0.81, 0.99)
209
+ petal_gaps = (0.2869, 0.8063, 0.05491)
210
+ }
211
+
212
+ variant member_9 {
213
+ open = 0.2983
214
+ focus = 0.4271
215
+ lift = 13.14
216
+ ball_radius = -9.823
217
+ bead_size = 0.2795
218
+ curl = 0.06728
219
+ bead_1 = hsv(115.6, 0.67, 0.83)
220
+ bead_2 = hsv(333.4, 0.62, 0.29)
221
+ bead_3 = hsv(55.5, 0.87, 0.88)
222
+ bead_4 = hsv(210, 0.91, 0.69)
223
+ bead_gaps = (0.07948, 0.08401, 0.4)
224
+ petal_1 = hsv(327.9, 0.99, 0.78)
225
+ petal_2 = hsv(237.4, 0.61, 0.18)
226
+ petal_3 = hsv(225.6, 0.75, 0.28)
227
+ petal_4 = hsv(323.8, 0.6, 0.55)
228
+ petal_gaps = (0.9902, 0.5929, 0.3471)
229
+ }
230
+
231
+ variant member_10 {
232
+ open = 1
233
+ focus = 0.2051
234
+ lift = 1.632
235
+ ball_radius = 4.854
236
+ bead_size = 0.9411
237
+ curl = -1.309
238
+ bead_1 = hsv(70.4, 0.55, 0.8)
239
+ bead_2 = hsv(29.4, 0.94, 0.53)
240
+ bead_3 = hsv(344.9, 0.87, 0.07)
241
+ bead_4 = hsv(226.3, 0.93, 0.82)
242
+ bead_gaps = (0.4418, 0.4145, 0.7186)
243
+ petal_1 = hsv(222.1, 0.45, 0.58)
244
+ petal_2 = hsv(312.8, 0.8, 0.32)
245
+ petal_3 = hsv(90, 0.93, 0.61)
246
+ petal_4 = hsv(210.1, 0.57, 0.71)
247
+ petal_gaps = (0.8235, 0.7316, 0.3572)
248
+ }
249
+
250
+ variant member_11 {
251
+ open = 0.00211
252
+ focus = 0.5557
253
+ lift = -9.327
254
+ ball_radius = 9.101
255
+ bead_size = 0.366
256
+ curl = -0.9057
257
+ bead_1 = hsv(195.3, 0.74, 0.45)
258
+ bead_2 = hsv(350.7, 0.95, 0.7)
259
+ bead_3 = hsv(81.5, 0.89, 0.85)
260
+ bead_4 = hsv(95.7, 0.41, 0.9)
261
+ bead_gaps = (0.7038, 0.2492, 0.09264)
262
+ petal_1 = hsv(325.5, 0.87, 0.89)
263
+ petal_2 = hsv(166.6, 0.46, 0.48)
264
+ petal_3 = hsv(158.8, 0.76, 0.61)
265
+ petal_4 = hsv(103.8, 0.92, 0.89)
266
+ petal_gaps = (0.6191, 0.1621, 0.09194)
267
+ }
268
+
269
+ variant member_12 {
270
+ open = 0.109
271
+ focus = 0.9539
272
+ lift = -9.942
273
+ ball_radius = 8.545
274
+ bead_size = 0.4245
275
+ curl = 0.9677
276
+ bead_1 = hsv(127.5, 0.45, 0.3)
277
+ bead_2 = hsv(215.1, 0.97, 0.26)
278
+ bead_3 = hsv(205.6, 0.5, 0.17)
279
+ bead_4 = hsv(279.1, 0.94, 0.98)
280
+ bead_gaps = (0.818, 0.4155, 0.7862)
281
+ petal_1 = hsv(15, 0.52, 0.68)
282
+ petal_2 = hsv(318.3, 0.93, 0.23)
283
+ petal_3 = hsv(154, 0.86, 0.85)
284
+ petal_4 = hsv(244.6, 0.81, 0.2)
285
+ petal_gaps = (0.6052, 0.7316, 0.9351)
286
+ }
287
+
288
+ variant member_13 {
289
+ open = 0.3177
290
+ gloss = 0.6799
291
+ focus = 0.763
292
+ lift = -18.88
293
+ ball_radius = 8.545
294
+ bead_size = 0.4745
295
+ curl = 0.928
296
+ bead_1 = hsv(127.5, 0.45, 0.3)
297
+ bead_2 = hsv(266.2, 1, 0.09)
298
+ bead_4 = hsv(279.1, 0.94, 0.98)
299
+ bead_gaps = (0.8941, 0.6188, 0.6945)
300
+ petal_1 = hsv(23, 0.43, 0.67)
301
+ petal_2 = hsv(277.7, 0.83, 0.39)
302
+ petal_3 = hsv(171.9, 0.77, 0.66)
303
+ petal_4 = hsv(278.1, 0.84, 0.16)
304
+ petal_gaps = (0.6052, 0.7316, 0.7342)
305
+ }
306
+
307
+ variant member_14 {
308
+ open = 0.1207
309
+ focus = 0.2032
310
+ lift = 2.729
311
+ ball_radius = -0.6997
312
+ bead_size = 0.8869
313
+ bead_1 = hsv(306.4, 0.88, 0.37)
314
+ bead_2 = hsv(350.7, 0.95, 0.7)
315
+ bead_3 = hsv(333.4, 0.96, 0.21)
316
+ bead_4 = hsv(210, 0.91, 0.69)
317
+ bead_gaps = (0.5545, 0.2859, 0.2851)
318
+ petal_1 = hsv(79.6, 0.88, 0.16)
319
+ petal_2 = hsv(28.1, 0.95, 0.62)
320
+ petal_3 = hsv(41.5, 0.56, 0.39)
321
+ petal_4 = hsv(44.6, 0.73, 0.12)
322
+ petal_gaps = (0.904, 0.6554, 0.8414)
323
+ }
324
+
325
+ variant member_15 {
326
+ open = 0.00211
327
+ focus = 0.5557
328
+ lift = -9.327
329
+ ball_radius = -0.7844
330
+ bead_size = 0.366
331
+ curl = -0.2103
332
+ bead_1 = hsv(195.3, 0.74, 0.45)
333
+ bead_2 = hsv(126.3, 0.54, 0.62)
334
+ bead_3 = hsv(81.5, 0.89, 0.85)
335
+ bead_4 = hsv(320.1, 0.77, 0.25)
336
+ bead_gaps = (0.0589, 0.6918, 0.09264)
337
+ petal_1 = hsv(207.9, 0.84, 0.4)
338
+ petal_2 = hsv(306.8, 0.53, 0.1)
339
+ petal_3 = hsv(212.4, 0.98, 0.8)
340
+ petal_4 = hsv(103.8, 0.92, 0.89)
341
+ petal_gaps = (0.7855, 0.1621, 0.7832)
79
342
  }