Source
1// ⚠️ L'AVERTISSEMENT « filter under a transform that never stops moving » EST ASSUMÉ ICI.
2// Les astéroïdes portent une lueur et pulsent en `sin`, donc leur composite filtré est recuit à
3// chaque frame. Retirer le `sin` ferait taire le message SANS rien changer : ils tournent aussi en
4// continu (`rotation = time*0.7`), ce qui décale leur position à l'écran tout autant — la règle ne
5// vise que les motifs périodiques, elle ne voit pas la rampe. Le seul correctif réel serait de
6// retirer le `filter`, et le halo néon est précisément le sujet de cette démo.
7size 1200 800
8background #0a0a18
9timeline 24 3600
10var dead = 0
11var t = 0
12var tpx = 600
13var tpy = 400
14var a1x = 250
15var a1y = 200
16var a1vx = 4.6
17var a1vy = 3.2
18var a2x = 960
19var a2y = 250
20var a2vx = -3.6
21var a2vy = 4.4
22var a3x = 300
23var a3y = 600
24var a3vx = 4
25var a3vy = -3.8
26var a4x = 920
27var a4y = 560
28var a4vx = -4.4
29var a4vy = -3.4
30var a5x = 600
31var a5y = 130
32var a5vx = 3.2
33var a5vy = 4.8
34
35scene {
36 layer "Fond" {
37 path "M0 0L1200 0L1200 800L0 800Z" fill radial(0.5, 0.5, 0.5, 0:#241a4d, 0.7:#0d0a22, 1:#050409)
38 }
39 layer "Étoiles" {
40 path "M41 25L40.81 25.59L40.31 25.95L39.69 25.95L39.19 25.59L39 25L39.19 24.41L39.69 24.05L40.31 24.05L40.81 24.41Z" fill #dfe6ff
41 path "M239 156L238.62 157.18L237.62 157.9L236.38 157.9L235.38 157.18L235 156L235.38 154.82L236.38 154.1L237.62 154.1L238.62 154.82Z" fill #7c86b8
42 path "M437 287L436.43 288.76L434.93 289.85L433.07 289.85L431.57 288.76L431 287L431.57 285.24L433.07 284.15L434.93 284.15L436.43 285.24Z" fill #7c86b8
43 path "M632 418L631.81 418.59L631.31 418.95L630.69 418.95L630.19 418.59L630 418L630.19 417.41L630.69 417.05L631.31 417.05L631.81 417.41Z" fill #7c86b8
44 path "M830 549L829.62 550.18L828.62 550.9L827.38 550.9L826.38 550.18L826 549L826.38 547.82L827.38 547.1L828.62 547.1L829.62 547.82Z" fill #dfe6ff
45 path "M1028 680L1027.43 681.76L1025.93 682.85L1024.07 682.85L1022.57 681.76L1022 680L1022.57 678.24L1024.07 677.15L1025.93 677.15L1027.43 678.24Z" fill #7c86b8
46 path "M23 11L22.81 11.59L22.31 11.95L21.69 11.95L21.19 11.59L21 11L21.19 10.41L21.69 10.05L22.31 10.05L22.81 10.41Z" fill #7c86b8
47 path "M221 142L220.62 143.18L219.62 143.9L218.38 143.9L217.38 143.18L217 142L217.38 140.82L218.38 140.1L219.62 140.1L220.62 140.82Z" fill #7c86b8
48 path "M419 273L418.43 274.76L416.93 275.85L415.07 275.85L413.57 274.76L413 273L413.57 271.24L415.07 270.15L416.93 270.15L418.43 271.24Z" fill #dfe6ff
49 path "M614 404L613.81 404.59L613.31 404.95L612.69 404.95L612.19 404.59L612 404L612.19 403.41L612.69 403.05L613.31 403.05L613.81 403.41Z" fill #7c86b8
50 path "M812 535L811.62 536.18L810.62 536.9L809.38 536.9L808.38 536.18L808 535L808.38 533.82L809.38 533.1L810.62 533.1L811.62 533.82Z" fill #7c86b8
51 path "M1010 666L1009.43 667.76L1007.93 668.85L1006.07 668.85L1004.57 667.76L1004 666L1004.57 664.24L1006.07 663.15L1007.93 663.15L1009.43 664.24Z" fill #7c86b8
52 path "M5 797L4.81 797.59L4.31 797.95L3.69 797.95L3.19 797.59L3 797L3.19 796.41L3.69 796.05L4.31 796.05L4.81 796.41Z" fill #dfe6ff
53 path "M203 128L202.62 129.18L201.62 129.9L200.38 129.9L199.38 129.18L199 128L199.38 126.82L200.38 126.1L201.62 126.1L202.62 126.82Z" fill #7c86b8
54 path "M401 259L400.43 260.76L398.93 261.85L397.07 261.85L395.57 260.76L395 259L395.57 257.24L397.07 256.15L398.93 256.15L400.43 257.24Z" fill #7c86b8
55 path "M596 390L595.81 390.59L595.31 390.95L594.69 390.95L594.19 390.59L594 390L594.19 389.41L594.69 389.05L595.31 389.05L595.81 389.41Z" fill #7c86b8
56 path "M794 521L793.62 522.18L792.62 522.9L791.38 522.9L790.38 522.18L790 521L790.38 519.82L791.38 519.1L792.62 519.1L793.62 519.82Z" fill #dfe6ff
57 path "M992 652L991.43 653.76L989.93 654.85L988.07 654.85L986.57 653.76L986 652L986.57 650.24L988.07 649.15L989.93 649.15L991.43 650.24Z" fill #7c86b8
58 path "M1187 783L1186.81 783.59L1186.31 783.95L1185.69 783.95L1185.19 783.59L1185 783L1185.19 782.41L1185.69 782.05L1186.31 782.05L1186.81 782.41Z" fill #7c86b8
59 path "M185 114L184.62 115.18L183.62 115.9L182.38 115.9L181.38 115.18L181 114L181.38 112.82L182.38 112.1L183.62 112.1L184.62 112.82Z" fill #7c86b8
60 path "M383 245L382.43 246.76L380.93 247.85L379.07 247.85L377.57 246.76L377 245L377.57 243.24L379.07 242.15L380.93 242.15L382.43 243.24Z" fill #dfe6ff
61 path "M578 376L577.81 376.59L577.31 376.95L576.69 376.95L576.19 376.59L576 376L576.19 375.41L576.69 375.05L577.31 375.05L577.81 375.41Z" fill #7c86b8
62 path "M776 507L775.62 508.18L774.62 508.9L773.38 508.9L772.38 508.18L772 507L772.38 505.82L773.38 505.1L774.62 505.1L775.62 505.82Z" fill #7c86b8
63 path "M974 638L973.43 639.76L971.93 640.85L970.07 640.85L968.57 639.76L968 638L968.57 636.24L970.07 635.15L971.93 635.15L973.43 636.24Z" fill #7c86b8
64 path "M1169 769L1168.81 769.59L1168.31 769.95L1167.69 769.95L1167.19 769.59L1167 769L1167.19 768.41L1167.69 768.05L1168.31 768.05L1168.81 768.41Z" fill #dfe6ff
65 path "M167 100L166.62 101.18L165.62 101.9L164.38 101.9L163.38 101.18L163 100L163.38 98.82L164.38 98.1L165.62 98.1L166.62 98.82Z" fill #7c86b8
66 path "M365 231L364.43 232.76L362.93 233.85L361.07 233.85L359.57 232.76L359 231L359.57 229.24L361.07 228.15L362.93 228.15L364.43 229.24Z" fill #7c86b8
67 path "M560 362L559.81 362.59L559.31 362.95L558.69 362.95L558.19 362.59L558 362L558.19 361.41L558.69 361.05L559.31 361.05L559.81 361.41Z" fill #7c86b8
68 path "M758 493L757.62 494.18L756.62 494.9L755.38 494.9L754.38 494.18L754 493L754.38 491.82L755.38 491.1L756.62 491.1L757.62 491.82Z" fill #dfe6ff
69 path "M956 624L955.43 625.76L953.93 626.85L952.07 626.85L950.57 625.76L950 624L950.57 622.24L952.07 621.15L953.93 621.15L955.43 622.24Z" fill #7c86b8
70 path "M1151 755L1150.81 755.59L1150.31 755.95L1149.69 755.95L1149.19 755.59L1149 755L1149.19 754.41L1149.69 754.05L1150.31 754.05L1150.81 754.41Z" fill #7c86b8
71 path "M149 86L148.62 87.18L147.62 87.9L146.38 87.9L145.38 87.18L145 86L145.38 84.82L146.38 84.1L147.62 84.1L148.62 84.82Z" fill #7c86b8
72 path "M347 217L346.43 218.76L344.93 219.85L343.07 219.85L341.57 218.76L341 217L341.57 215.24L343.07 214.15L344.93 214.15L346.43 215.24Z" fill #dfe6ff
73 path "M542 348L541.81 348.59L541.31 348.95L540.69 348.95L540.19 348.59L540 348L540.19 347.41L540.69 347.05L541.31 347.05L541.81 347.41Z" fill #7c86b8
74 path "M740 479L739.62 480.18L738.62 480.9L737.38 480.9L736.38 480.18L736 479L736.38 477.82L737.38 477.1L738.62 477.1L739.62 477.82Z" fill #7c86b8
75 path "M938 610L937.43 611.76L935.93 612.85L934.07 612.85L932.57 611.76L932 610L932.57 608.24L934.07 607.15L935.93 607.15L937.43 608.24Z" fill #7c86b8
76 path "M1133 741L1132.81 741.59L1132.31 741.95L1131.69 741.95L1131.19 741.59L1131 741L1131.19 740.41L1131.69 740.05L1132.31 740.05L1132.81 740.41Z" fill #dfe6ff
77 path "M131 72L130.62 73.18L129.62 73.9L128.38 73.9L127.38 73.18L127 72L127.38 70.82L128.38 70.1L129.62 70.1L130.62 70.82Z" fill #7c86b8
78 path "M329 203L328.43 204.76L326.93 205.85L325.07 205.85L323.57 204.76L323 203L323.57 201.24L325.07 200.15L326.93 200.15L328.43 201.24Z" fill #7c86b8
79 path "M524 334L523.81 334.59L523.31 334.95L522.69 334.95L522.19 334.59L522 334L522.19 333.41L522.69 333.05L523.31 333.05L523.81 333.41Z" fill #7c86b8
80 path "M722 465L721.62 466.18L720.62 466.9L719.38 466.9L718.38 466.18L718 465L718.38 463.82L719.38 463.1L720.62 463.1L721.62 463.82Z" fill #dfe6ff
81 path "M920 596L919.43 597.76L917.93 598.85L916.07 598.85L914.57 597.76L914 596L914.57 594.24L916.07 593.15L917.93 593.15L919.43 594.24Z" fill #7c86b8
82 path "M1115 727L1114.81 727.59L1114.31 727.95L1113.69 727.95L1113.19 727.59L1113 727L1113.19 726.41L1113.69 726.05L1114.31 726.05L1114.81 726.41Z" fill #7c86b8
83 path "M113 58L112.62 59.18L111.62 59.9L110.38 59.9L109.38 59.18L109 58L109.38 56.82L110.38 56.1L111.62 56.1L112.62 56.82Z" fill #7c86b8
84 path "M311 189L310.43 190.76L308.93 191.85L307.07 191.85L305.57 190.76L305 189L305.57 187.24L307.07 186.15L308.93 186.15L310.43 187.24Z" fill #dfe6ff
85 path "M506 320L505.81 320.59L505.31 320.95L504.69 320.95L504.19 320.59L504 320L504.19 319.41L504.69 319.05L505.31 319.05L505.81 319.41Z" fill #7c86b8
86 path "M704 451L703.62 452.18L702.62 452.9L701.38 452.9L700.38 452.18L700 451L700.38 449.82L701.38 449.1L702.62 449.1L703.62 449.82Z" fill #7c86b8
87 path "M902 582L901.43 583.76L899.93 584.85L898.07 584.85L896.57 583.76L896 582L896.57 580.24L898.07 579.15L899.93 579.15L901.43 580.24Z" fill #7c86b8
88 path "M1097 713L1096.81 713.59L1096.31 713.95L1095.69 713.95L1095.19 713.59L1095 713L1095.19 712.41L1095.69 712.05L1096.31 712.05L1096.81 712.41Z" fill #dfe6ff
89 path "M95 44L94.62 45.18L93.62 45.9L92.38 45.9L91.38 45.18L91 44L91.38 42.82L92.38 42.1L93.62 42.1L94.62 42.82Z" fill #7c86b8
90 path "M293 175L292.43 176.76L290.93 177.85L289.07 177.85L287.57 176.76L287 175L287.57 173.24L289.07 172.15L290.93 172.15L292.43 173.24Z" fill #7c86b8
91 path "M488 306L487.81 306.59L487.31 306.95L486.69 306.95L486.19 306.59L486 306L486.19 305.41L486.69 305.05L487.31 305.05L487.81 305.41Z" fill #7c86b8
92 path "M686 437L685.62 438.18L684.62 438.9L683.38 438.9L682.38 438.18L682 437L682.38 435.82L683.38 435.1L684.62 435.1L685.62 435.82Z" fill #dfe6ff
93 path "M884 568L883.43 569.76L881.93 570.85L880.07 570.85L878.57 569.76L878 568L878.57 566.24L880.07 565.15L881.93 565.15L883.43 566.24Z" fill #7c86b8
94 path "M1079 699L1078.81 699.59L1078.31 699.95L1077.69 699.95L1077.19 699.59L1077 699L1077.19 698.41L1077.69 698.05L1078.31 698.05L1078.81 698.41Z" fill #7c86b8
95 path "M77 30L76.62 31.18L75.62 31.9L74.38 31.9L73.38 31.18L73 30L73.38 28.82L74.38 28.1L75.62 28.1L76.62 28.82Z" fill #7c86b8
96 path "M275 161L274.43 162.76L272.93 163.85L271.07 163.85L269.57 162.76L269 161L269.57 159.24L271.07 158.15L272.93 158.15L274.43 159.24Z" fill #dfe6ff
97 path "M470 292L469.81 292.59L469.31 292.95L468.69 292.95L468.19 292.59L468 292L468.19 291.41L468.69 291.05L469.31 291.05L469.81 291.41Z" fill #7c86b8
98 path "M668 423L667.62 424.18L666.62 424.9L665.38 424.9L664.38 424.18L664 423L664.38 421.82L665.38 421.1L666.62 421.1L667.62 421.82Z" fill #7c86b8
99 path "M866 554L865.43 555.76L863.93 556.85L862.07 556.85L860.57 555.76L860 554L860.57 552.24L862.07 551.15L863.93 551.15L865.43 552.24Z" fill #7c86b8
100 }
101 layer "Jauge" {
102 group "Jauge" at 40,40 pivot 0,0 {
103 layer "c" {
104 path "M0 0L360 0L360 10L0 10Z" fill #1a1830
105 }
106 }
107 group "Survie" at 40,40 pivot 0,0 {
108 layer "c" {
109 path "M0 0L360 0L360 10L0 10Z" fill linear(0, 0:#4af0ff, 1:#ff4d9d)
110 }
111 }
112 }
113 layer "Astéroïdes" {
114 instance "Astéroïde" as "Astéroïde 1" at 250,200 tint #ff4d9d 0.7 filter glow 16 #7a1bd6
115 instance "Astéroïde" as "Astéroïde 2" at 960,250 tint #ffd24d 0.7 filter glow 16 #ff6a1e
116 instance "Astéroïde" as "Astéroïde 3" at 300,600 tint #4af0ff 0.7 filter glow 16 #1f6bff
117 instance "Astéroïde" as "Astéroïde 4" at 920,560 tint #9bff6a 0.7 filter glow 16 #13a657
118 instance "Astéroïde" as "Astéroïde 5" at 600,130 tint #c08bff 0.7 filter glow 16 #5a1bd6
119 }
120 layer "Traînée" {
121 group "Traînée" at 600,400 pivot 0,0 {
122 layer "c" {
123 path "M30 0L28.98 7.76L25.98 15L21.21 21.21L15 25.98L7.76 28.98L0 30L-7.76 28.98L-15 25.98L-21.21 21.21L-25.98 15L-28.98 7.76L-30 0L-28.98 -7.76L-25.98 -15L-21.21 -21.21L-15 -25.98L-7.76 -28.98L0 -30L7.76 -28.98L15 -25.98L21.21 -21.21L25.98 -15L28.98 -7.76Z" fill radial(0.5, 0.5, 0.5, 0:#bff6ff88, 1:#1f9bff00)
124 }
125 }
126 }
127 layer "Vaisseau" {
128 group "Vaisseau" at 600,400 pivot 0,0 filter glow 22 #4af0ff {
129 layer "c" {
130 path "M26 0L25.11 6.73L22.52 13L18.38 18.38L13 22.52L6.73 25.11L0 26L-6.73 25.11L-13 22.52L-18.38 18.38L-22.52 13L-25.11 6.73L-26 0L-25.11 -6.73L-22.52 -13L-18.38 -18.38L-13 -22.52L-6.73 -25.11L0 -26L6.73 -25.11L13 -22.52L18.38 -18.38L22.52 -13L25.11 -6.73Z" fill radial(0.5, 0.5, 0.5, 0:#eaffff, 0.6:#4af0ff, 1:#1f6bff)
131 path "M34 0L32.84 8.8L29.44 17L24.04 24.04L17 29.44L8.8 32.84L0 34L-8.8 32.84L-17 29.44L-24.04 24.04L-29.44 17L-32.84 8.8L-34 0L-32.84 -8.8L-29.44 -17L-24.04 -24.04L-17 -29.44L-8.8 -32.84L0 -34L8.8 -32.84L17 -29.44L24.04 -24.04L29.44 -17L32.84 -8.8Z" nofill stroke #bff6ffcc 3
132 }
133 }
134 }
135 layer "Indice" {
136 group "hint" at 600,730 pivot 0,0 {
137 layer "c" {
138 text "déplace la souris — esquive les astéroïdes" at -310,-16.8 font "system-ui, \"Segoe UI\", sans-serif" size 28 align center line 1.2 color #9fb0d8 bold box 620 33.6
139 }
140 }
141 }
142 layer "Game over" {
143 group "Game over" {
144 layer "c" {
145 path "M0 0L1200 0L1200 800L0 800Z" fill #05040c
146 }
147 }
148 group "go" at 600,370 pivot 0,0 filter glow 24 #ff4d9d {
149 layer "c" {
150 text "GAME OVER" at -280,-50.4 font "system-ui, \"Segoe UI\", sans-serif" size 84 align center line 1.2 color #ff4d9d bold box 560 100.8
151 }
152 }
153 group "gosub" at 600,450 pivot 0,0 {
154 layer "c" {
155 text "clique pour rejouer" at -210,-18 font "system-ui, \"Segoe UI\", sans-serif" size 30 align center line 1.2 color #cfe bold box 420 36
156 }
157 }
158 }
159}
160
161every frame {
162 if dead == 0 {
163 tpx = tpx + (mouse.x - tpx) * 0.16
164 tpy = tpy + (mouse.y - tpy) * 0.16
165 a1x = a1x + a1vx * (1 + t/1500)
166 a1vx = a1x < 70 ? abs(a1vx) : (a1x > 1130 ? -abs(a1vx) : a1vx)
167 a1y = a1y + a1vy * (1 + t/1500)
168 a1vy = a1y < 70 ? abs(a1vy) : (a1y > 730 ? -abs(a1vy) : a1vy)
169 a2x = a2x + a2vx * (1 + t/1500)
170 a2vx = a2x < 70 ? abs(a2vx) : (a2x > 1130 ? -abs(a2vx) : a2vx)
171 a2y = a2y + a2vy * (1 + t/1500)
172 a2vy = a2y < 70 ? abs(a2vy) : (a2y > 730 ? -abs(a2vy) : a2vy)
173 a3x = a3x + a3vx * (1 + t/1500)
174 a3vx = a3x < 70 ? abs(a3vx) : (a3x > 1130 ? -abs(a3vx) : a3vx)
175 a3y = a3y + a3vy * (1 + t/1500)
176 a3vy = a3y < 70 ? abs(a3vy) : (a3y > 730 ? -abs(a3vy) : a3vy)
177 a4x = a4x + a4vx * (1 + t/1500)
178 a4vx = a4x < 70 ? abs(a4vx) : (a4x > 1130 ? -abs(a4vx) : a4vx)
179 a4y = a4y + a4vy * (1 + t/1500)
180 a4vy = a4y < 70 ? abs(a4vy) : (a4y > 730 ? -abs(a4vy) : a4vy)
181 a5x = a5x + a5vx * (1 + t/1500)
182 a5vx = a5x < 70 ? abs(a5vx) : (a5x > 1130 ? -abs(a5vx) : a5vx)
183 a5y = a5y + a5vy * (1 + t/1500)
184 a5vy = a5y < 70 ? abs(a5vy) : (a5y > 730 ? -abs(a5vy) : a5vy)
185 dead = (((a1x-mouse.x)*(a1x-mouse.x)+(a1y-mouse.y)*(a1y-mouse.y) < 5000) || ((a2x-mouse.x)*(a2x-mouse.x)+(a2y-mouse.y)*(a2y-mouse.y) < 5000) || ((a3x-mouse.x)*(a3x-mouse.x)+(a3y-mouse.y)*(a3y-mouse.y) < 5000) || ((a4x-mouse.x)*(a4x-mouse.x)+(a4y-mouse.y)*(a4y-mouse.y) < 5000) || ((a5x-mouse.x)*(a5x-mouse.x)+(a5y-mouse.y)*(a5y-mouse.y) < 5000)) ? 1 : dead
186 t = t + 1
187 }
188}
189
190object "Survie" {
191 scaleX = clamp(t/1400, 0, 1)
192}
193
194object "Astéroïde 1" {
195 x = a1x
196 y = a1y
197 scaleX = 1 + sin(time*4+0)*0.08
198 scaleY = 1 + sin(time*4+0)*0.08
199 rotation = time*0.7 + 0
200}
201
202object "Astéroïde 2" {
203 x = a2x
204 y = a2y
205 scaleX = 1 + sin(time*4+1)*0.08
206 scaleY = 1 + sin(time*4+1)*0.08
207 rotation = time*0.7 + 1
208}
209
210object "Astéroïde 3" {
211 x = a3x
212 y = a3y
213 scaleX = 1 + sin(time*4+2)*0.08
214 scaleY = 1 + sin(time*4+2)*0.08
215 rotation = time*0.7 + 2
216}
217
218object "Astéroïde 4" {
219 x = a4x
220 y = a4y
221 scaleX = 1 + sin(time*4+3)*0.08
222 scaleY = 1 + sin(time*4+3)*0.08
223 rotation = time*0.7 + 3
224}
225
226object "Astéroïde 5" {
227 x = a5x
228 y = a5y
229 scaleX = 1 + sin(time*4+4)*0.08
230 scaleY = 1 + sin(time*4+4)*0.08
231 rotation = time*0.7 + 4
232}
233
234object "Traînée" {
235 x = tpx
236 y = tpy
237 scaleX = 1.5
238 scaleY = 1.5
239 opacity = dead == 1 ? 0 : 0.4
240}
241
242object "Vaisseau" {
243 x = mouse.x
244 y = mouse.y
245 rotation = time*-1.4
246 opacity = dead == 1 ? 0.2 : 1
247}
248
249object "hint" {
250 opacity = dead == 0 && t < 160 ? 1 : 0
251}
252
253object "Game over" {
254 when clicked {
255 dead = 0
256 t = 0
257 a1x = 250
258 a1y = 200
259 a1vx = 4.6
260 a1vy = 3.2
261 a2x = 960
262 a2y = 250
263 a2vx = -3.6
264 a2vy = 4.4
265 a3x = 300
266 a3y = 600
267 a3vx = 4
268 a3vy = -3.8
269 a4x = 920
270 a4y = 560
271 a4vx = -4.4
272 a4vy = -3.4
273 a5x = 600
274 a5y = 130
275 a5vx = 3.2
276 a5vy = 4.8
277 }
278
279 opacity = dead == 1 ? 0.62 : 0
280}
281
282object "go" {
283 scaleX = dead == 1 ? (1 + sin(time*4)*0.03) : 0.6
284 scaleY = dead == 1 ? (1 + sin(time*4)*0.03) : 0.6
285 opacity = dead
286}
287
288object "gosub" {
289 opacity = dead
290}
Galerie
FR
FrançaisEnglish

Nova — esquive

Scène animée · 1200×800 · 24 img/s
FlatInk
JeuInteractif
Gérer (admin)
Informations
Type
Scène animée
Dimensions
1200 × 800
Cadence
24 img/s
Durée
150.0 s · 3600 images
Téléchargements
Page web autonome Ouvrir dans l'éditeur
FlatInk