incanto 0.68.0 → 0.70.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 (153) hide show
  1. package/assets/catalog.json +9 -5
  2. package/bin/_behaviors-loader.mjs +22 -0
  3. package/bin/_read-json.mjs +28 -0
  4. package/bin/incanto-assets.mjs +19 -5
  5. package/bin/incanto-check.mjs +92 -15
  6. package/bin/incanto-editor.mjs +128 -5
  7. package/bin/incanto-env.mjs +3 -2
  8. package/bin/incanto-feel.mjs +24 -13
  9. package/bin/incanto-frame.mjs +8 -1
  10. package/bin/incanto-multiplay.mjs +11 -9
  11. package/bin/incanto-new.mjs +128 -5
  12. package/bin/incanto-play.mjs +158 -16
  13. package/bin/incanto-playtest.mjs +66 -23
  14. package/bin/incanto-serve.mjs +160 -0
  15. package/bin/incanto-skills.mjs +14 -2
  16. package/bin/incanto-verify.mjs +165 -44
  17. package/bin/incanto.mjs +4 -2
  18. package/dist/2d.d.ts +285 -36
  19. package/dist/2d.js +4 -4
  20. package/dist/3d.d.ts +158 -10
  21. package/dist/3d.js +8 -8
  22. package/dist/{agent8-CvsfVskX.js → agent8-CmNF01gA.js} +61 -8
  23. package/dist/{audio-player-DOrq7sP-.d.ts → audio-player-DaMxqfNE.d.ts} +33 -14
  24. package/dist/{behavior-DoFPYrgo.d.ts → behavior-DZExDn9o.d.ts} +809 -44
  25. package/dist/{create-game-IZIydDwI.js → create-game-Bwvh6q8A.js} +148 -61
  26. package/dist/{create-game-DbWtVTxD.js → create-game-C7ffQWW7.js} +103 -49
  27. package/dist/debug.d.ts +1 -1
  28. package/dist/debug.js +2 -3
  29. package/dist/diagnostics-Cu85N3tL.d.ts +12 -0
  30. package/dist/{editor-switch-CnIOiyNJ.d.ts → editor-switch-CFU9mCec.d.ts} +22 -13
  31. package/dist/editor.js +1066 -864
  32. package/dist/env.d.ts +1 -1
  33. package/dist/env.js +5 -3
  34. package/dist/{environment-presets-CybQXNqS.js → environment-presets-D6Q5BxeE.js} +299 -46
  35. package/dist/{frame-report-DCnHFmto.d.ts → frame-report-DNxDAb1w.d.ts} +8 -0
  36. package/dist/{frame-report-BSMny7oe.js → frame-report-Dlq13Gyj.js} +1 -0
  37. package/dist/{gameplay-DM1eu_cV.js → gameplay-BfHkuzVb.js} +825 -221
  38. package/dist/gameplay.d.ts +187 -7
  39. package/dist/gameplay.js +1 -1
  40. package/dist/{heightmap-CRK0M4jT.js → heightmap-BYgD5Edk.js} +1 -1
  41. package/dist/index.d.ts +156 -13
  42. package/dist/index.js +10 -12
  43. package/dist/json-CfTjpvW8.js +67 -0
  44. package/dist/{loader-CcB533FR.d.ts → loader-Cff09LMm.d.ts} +2 -2
  45. package/dist/net.d.ts +27 -3
  46. package/dist/net.js +2 -2
  47. package/dist/{noise-CGUMx44x.js → noise-D3nPpmFg.js} +1 -1
  48. package/dist/{physics-2d-B7Y6dPZO.js → physics-2d-CE0Qvy3V.js} +136 -11
  49. package/dist/{physics-3d-bG3n70Ky.js → physics-3d-CpH-2gn5.js} +104 -23
  50. package/dist/{teardown-D2NEmxPB.js → picking-CQJ_PJKh.js} +106 -14
  51. package/dist/react.d.ts +2 -2
  52. package/dist/react.js +2 -2
  53. package/dist/{register-3ta-2Xig.js → register-6DYnKZcy.js} +652 -831
  54. package/dist/{register-ibCjm-wH.js → register-Bkk0wSDB.js} +348 -30
  55. package/dist/{replay-CYvhVHHN.js → replay-DjAkAzMq.js} +224 -14
  56. package/dist/{replay-Dvn8aeBd.d.ts → replay-Dmw-PKQu.d.ts} +20 -3
  57. package/dist/{schema-B6ugCV1Q.d.ts → rng-Bb-IutXB.d.ts} +38 -21
  58. package/dist/{rng-DP-SR7eg.js → rng-CDOMybym.js} +22 -0
  59. package/dist/{loader-BC4PNtJX.js → save-slots-BXVg148r.js} +4558 -2294
  60. package/dist/{sheet-grid-BT6N_Bjs.js → sheet-grid-Cea343VO.js} +6 -2
  61. package/dist/{split-screen-DhrSzZIB.d.ts → split-screen--k-XpBjr.d.ts} +36 -4
  62. package/dist/{split-screen-CYwDkbLF.js → split-screen-PL78oVXP.js} +159 -26
  63. package/dist/{sprite-animation-CY-mrr1L.js → sprite-animation-CqR2o3SA.js} +39 -8
  64. package/dist/{src-D7RIqXYF.js → src-Cxfiv1Hg.js} +2 -17
  65. package/dist/test-iHYVUcDK.js +4036 -0
  66. package/dist/test.d.ts +542 -30
  67. package/dist/test.js +3 -3
  68. package/dist/touch-BnCyPA0G.js +519 -0
  69. package/dist/vite.d.ts +54 -3
  70. package/dist/vite.js +349 -17
  71. package/dist/{webgl-unavailable-N9nQqesw.js → webgl-unavailable-C8aDbGmR.js} +56 -1
  72. package/editor/assets/agent8-D0MS174y.js +1 -0
  73. package/editor/assets/{debug-BBhKuBNV.js → debug-BnXkKuYu.js} +2 -2
  74. package/editor/assets/index-CIu3uc3l.js +11046 -0
  75. package/editor/index.html +1 -1
  76. package/package.json +7 -16
  77. package/schemas/scene.schema.json +30 -3
  78. package/skills/incanto-3d-character.md +14 -1
  79. package/skills/incanto-3d-models.md +12 -0
  80. package/skills/incanto-assets.md +25 -3
  81. package/skills/incanto-audio.md +27 -5
  82. package/skills/incanto-behaviors-and-scripts.md +83 -6
  83. package/skills/incanto-building-2d-games.md +106 -8
  84. package/skills/incanto-building-3d-games.md +118 -6
  85. package/skills/incanto-editor.md +46 -7
  86. package/skills/incanto-environment.md +19 -1
  87. package/skills/incanto-game-feel.md +70 -0
  88. package/skills/incanto-gameplay-behaviors.md +121 -14
  89. package/skills/incanto-hud.md +128 -7
  90. package/skills/incanto-localization.md +13 -5
  91. package/skills/incanto-multiplayer.md +83 -3
  92. package/skills/incanto-node-reference.md +222 -58
  93. package/skills/incanto-performance.md +52 -0
  94. package/skills/incanto-physics-and-input.md +123 -24
  95. package/skills/incanto-playtesting.md +78 -2
  96. package/skills/incanto-save-slots.md +188 -6
  97. package/skills/incanto-scene-json-authoring.md +69 -12
  98. package/skills/incanto-verifying-your-game.md +292 -12
  99. package/skills/incanto-web-integration.md +28 -0
  100. package/skills/incanto-your-first-game.md +5 -2
  101. package/templates-app/beacon-isle-3d/generate-world.ts +77 -9
  102. package/templates-app/beacon-isle-3d/package.json +2 -2
  103. package/templates-app/beacon-isle-3d/src/behaviors.ts +22 -0
  104. package/templates-app/beacon-isle-3d/src/game.scene.json +103 -378
  105. package/templates-app/beacon-isle-3d/src/main.ts +24 -4
  106. package/templates-app/beacon-isle-3d/tsconfig.json +1 -1
  107. package/templates-app/beacon-isle-3d/verify.ts +3 -1
  108. package/templates-app/molehill-2d/.incanto/playtest/lost-seed1.json +4277 -0
  109. package/templates-app/molehill-2d/PROJECT/Context.md +58 -0
  110. package/templates-app/molehill-2d/PROJECT/Requirements.md +39 -0
  111. package/templates-app/molehill-2d/PROJECT/Status.md +27 -0
  112. package/templates-app/molehill-2d/PROJECT/Structure.md +48 -0
  113. package/templates-app/molehill-2d/docs/project-2d-rules.md +44 -0
  114. package/templates-app/molehill-2d/index.html +73 -0
  115. package/templates-app/molehill-2d/package.json +23 -0
  116. package/templates-app/molehill-2d/src/behaviors.ts +198 -0
  117. package/templates-app/molehill-2d/src/game.scene.json +1255 -0
  118. package/templates-app/molehill-2d/src/main.ts +41 -0
  119. package/templates-app/molehill-2d/tsconfig.json +13 -0
  120. package/templates-app/molehill-2d/verify.ts +247 -0
  121. package/templates-app/molehill-2d/vite.config.ts +12 -0
  122. package/templates-app/platformer-2d/index.html +0 -23
  123. package/templates-app/platformer-2d/package.json +2 -2
  124. package/templates-app/platformer-2d/src/behaviors.ts +26 -16
  125. package/templates-app/platformer-2d/src/game.scene.json +143 -625
  126. package/templates-app/platformer-2d/src/main.ts +35 -13
  127. package/templates-app/platformer-2d/tsconfig.json +1 -1
  128. package/templates-app/star-survivor/package.json +2 -2
  129. package/templates-app/star-survivor/src/game.scene.json +41 -195
  130. package/templates-app/star-survivor/src/main.ts +28 -7
  131. package/templates-app/star-survivor/tsconfig.json +1 -1
  132. package/templates-app/tps-3d/PROJECT/Context.md +1 -1
  133. package/templates-app/tps-3d/package.json +2 -2
  134. package/templates-app/tps-3d/src/behaviors.ts +19 -1
  135. package/templates-app/tps-3d/src/game.scene.json +78 -217
  136. package/templates-app/tps-3d/src/main.ts +39 -17
  137. package/templates-app/tps-3d/tsconfig.json +1 -1
  138. package/templates-app/village-quest-3d/.incanto/playtest/swapped-seed1.json +1735 -0
  139. package/templates-app/village-quest-3d/package.json +2 -2
  140. package/templates-app/village-quest-3d/src/behaviors.ts +21 -0
  141. package/templates-app/village-quest-3d/src/grove.scene.json +54 -221
  142. package/templates-app/village-quest-3d/src/main.ts +24 -4
  143. package/templates-app/village-quest-3d/src/village.scene.json +199 -838
  144. package/templates-app/village-quest-3d/tsconfig.json +1 -1
  145. package/templates-app/village-quest-3d/verify.ts +14 -1
  146. package/dist/duplicate-IWIqk0HJ.js +0 -22
  147. package/dist/json-CwwhxQgb.js +0 -36
  148. package/dist/registry-CF70EArN.js +0 -212
  149. package/dist/rolldown-runtime-D7D4PA-g.js +0 -13
  150. package/dist/test-8hoHeRmo.js +0 -2340
  151. package/dist/touch-DEAmqGdf.js +0 -225
  152. package/editor/assets/agent8-BrrHOjMJ.js +0 -1
  153. package/editor/assets/index-eVd0BToA.js +0 -10958
@@ -3,16 +3,9 @@
3
3
  "type": "scene",
4
4
  "dimension": "2d",
5
5
  "name": "CastleRun",
6
- "environment": {
7
- "background": "#8fd0ef"
8
- },
9
- "viewport": {
10
- "design": [960, 540],
11
- "fit": "expand"
12
- },
13
- "physics": {
14
- "gravity": [0, 1800]
15
- },
6
+ "environment": { "background": "#8fd0ef" },
7
+ "viewport": { "design": [960, 540], "fit": "expand" },
8
+ "physics": { "gravity": [0, 1800] },
16
9
  "input": {
17
10
  "move": {
18
11
  "type": "vector2",
@@ -63,13 +56,7 @@
63
56
  "root": {
64
57
  "name": "Game",
65
58
  "type": "Node",
66
- "script": {
67
- "name": "ScoreKeeper",
68
- "props": {
69
- "scoreToWin": 100000,
70
- "lives": 3
71
- }
72
- },
59
+ "script": { "name": "ScoreKeeper", "props": { "scoreToWin": 100000, "lives": 3 } },
73
60
  "children": [
74
61
  {
75
62
  "name": "Sky",
@@ -81,12 +68,7 @@
81
68
  "renderOrder": -60,
82
69
  "anchor": [0.5, 0.5]
83
70
  },
84
- "script": {
85
- "name": "ParallaxLayer",
86
- "props": {
87
- "factor": 0.96
88
- }
89
- },
71
+ "script": { "name": "ParallaxLayer", "props": { "factor": 0.96 } },
90
72
  "uid": "n_8s4fwe02mmjaf6o4"
91
73
  },
92
74
  {
@@ -99,12 +81,7 @@
99
81
  "renderOrder": -59,
100
82
  "anchor": [0.5, 0.5]
101
83
  },
102
- "script": {
103
- "name": "ParallaxLayer",
104
- "props": {
105
- "factor": 0.94
106
- }
107
- },
84
+ "script": { "name": "ParallaxLayer", "props": { "factor": 0.94 } },
108
85
  "uid": "n_io1e5nqi1q9p0aor"
109
86
  },
110
87
  {
@@ -118,12 +95,7 @@
118
95
  "renderOrder": -58,
119
96
  "anchor": [0.5, 0.5]
120
97
  },
121
- "script": {
122
- "name": "ParallaxLayer",
123
- "props": {
124
- "factor": 0.9
125
- }
126
- },
98
+ "script": { "name": "ParallaxLayer", "props": { "factor": 0.9 } },
127
99
  "uid": "n_u9sglddcy0spenib"
128
100
  },
129
101
  {
@@ -137,12 +109,7 @@
137
109
  "renderOrder": -58,
138
110
  "anchor": [0.5, 0.5]
139
111
  },
140
- "script": {
141
- "name": "ParallaxLayer",
142
- "props": {
143
- "factor": 0.9
144
- }
145
- },
112
+ "script": { "name": "ParallaxLayer", "props": { "factor": 0.9 } },
146
113
  "uid": "n_oeoy2ytk9y8tfqal"
147
114
  },
148
115
  {
@@ -156,27 +123,14 @@
156
123
  "renderOrder": -58,
157
124
  "anchor": [0.5, 0.5]
158
125
  },
159
- "script": {
160
- "name": "ParallaxLayer",
161
- "props": {
162
- "factor": 0.9
163
- }
164
- },
126
+ "script": { "name": "ParallaxLayer", "props": { "factor": 0.9 } },
165
127
  "uid": "n_glne90a03zy5os5g"
166
128
  },
167
129
  {
168
130
  "name": "CastleFarLayer",
169
131
  "type": "Node2D",
170
- "props": {
171
- "position": [0, 0],
172
- "renderOrder": -50
173
- },
174
- "script": {
175
- "name": "ParallaxLayer",
176
- "props": {
177
- "factor": 0.82
178
- }
179
- },
132
+ "props": { "position": [0, 0], "renderOrder": -50 },
133
+ "script": { "name": "ParallaxLayer", "props": { "factor": 0.82 } },
180
134
  "children": [
181
135
  {
182
136
  "name": "Band",
@@ -274,16 +228,8 @@
274
228
  {
275
229
  "name": "CastleNearLayer",
276
230
  "type": "Node2D",
277
- "props": {
278
- "position": [0, 0],
279
- "renderOrder": -42
280
- },
281
- "script": {
282
- "name": "ParallaxLayer",
283
- "props": {
284
- "factor": 0.6
285
- }
286
- },
231
+ "props": { "position": [0, 0], "renderOrder": -42 },
232
+ "script": { "name": "ParallaxLayer", "props": { "factor": 0.6 } },
287
233
  "children": [
288
234
  {
289
235
  "name": "Band",
@@ -554,28 +500,18 @@
554
500
  "groups": ["ground"],
555
501
  "props": {
556
502
  "position": [300, 520],
557
- "collider": {
558
- "shape": "rect",
559
- "size": [640, 120]
560
- }
503
+ "collider": { "shape": "rect", "size": [640, 120] }
561
504
  },
562
505
  "children": [
563
506
  {
564
507
  "name": "Skin",
565
508
  "type": "ColorRect2D",
566
- "props": {
567
- "size": [640, 120],
568
- "color": "#6a5b4a"
569
- }
509
+ "props": { "size": [640, 120], "color": "#6a5b4a" }
570
510
  },
571
511
  {
572
512
  "name": "Moss",
573
513
  "type": "ColorRect2D",
574
- "props": {
575
- "position": [0, -54],
576
- "size": [640, 14],
577
- "color": "#79bd54"
578
- }
514
+ "props": { "position": [0, -54], "size": [640, 14], "color": "#79bd54" }
579
515
  }
580
516
  ]
581
517
  },
@@ -585,28 +521,18 @@
585
521
  "groups": ["ground"],
586
522
  "props": {
587
523
  "position": [1020, 520],
588
- "collider": {
589
- "shape": "rect",
590
- "size": [560, 120]
591
- }
524
+ "collider": { "shape": "rect", "size": [560, 120] }
592
525
  },
593
526
  "children": [
594
527
  {
595
528
  "name": "Skin",
596
529
  "type": "ColorRect2D",
597
- "props": {
598
- "size": [560, 120],
599
- "color": "#6a5b4a"
600
- }
530
+ "props": { "size": [560, 120], "color": "#6a5b4a" }
601
531
  },
602
532
  {
603
533
  "name": "Moss",
604
534
  "type": "ColorRect2D",
605
- "props": {
606
- "position": [0, -54],
607
- "size": [560, 14],
608
- "color": "#79bd54"
609
- }
535
+ "props": { "position": [0, -54], "size": [560, 14], "color": "#79bd54" }
610
536
  }
611
537
  ]
612
538
  },
@@ -616,28 +542,18 @@
616
542
  "groups": ["ground"],
617
543
  "props": {
618
544
  "position": [1760, 520],
619
- "collider": {
620
- "shape": "rect",
621
- "size": [560, 120]
622
- }
545
+ "collider": { "shape": "rect", "size": [560, 120] }
623
546
  },
624
547
  "children": [
625
548
  {
626
549
  "name": "Skin",
627
550
  "type": "ColorRect2D",
628
- "props": {
629
- "size": [560, 120],
630
- "color": "#6a5b4a"
631
- }
551
+ "props": { "size": [560, 120], "color": "#6a5b4a" }
632
552
  },
633
553
  {
634
554
  "name": "Moss",
635
555
  "type": "ColorRect2D",
636
- "props": {
637
- "position": [0, -54],
638
- "size": [560, 14],
639
- "color": "#79bd54"
640
- }
556
+ "props": { "position": [0, -54], "size": [560, 14], "color": "#79bd54" }
641
557
  }
642
558
  ]
643
559
  },
@@ -647,28 +563,18 @@
647
563
  "groups": ["ground"],
648
564
  "props": {
649
565
  "position": [2520, 520],
650
- "collider": {
651
- "shape": "rect",
652
- "size": [600, 120]
653
- }
566
+ "collider": { "shape": "rect", "size": [600, 120] }
654
567
  },
655
568
  "children": [
656
569
  {
657
570
  "name": "Skin",
658
571
  "type": "ColorRect2D",
659
- "props": {
660
- "size": [600, 120],
661
- "color": "#6a5b4a"
662
- }
572
+ "props": { "size": [600, 120], "color": "#6a5b4a" }
663
573
  },
664
574
  {
665
575
  "name": "Moss",
666
576
  "type": "ColorRect2D",
667
- "props": {
668
- "position": [0, -54],
669
- "size": [600, 14],
670
- "color": "#79bd54"
671
- }
577
+ "props": { "position": [0, -54], "size": [600, 14], "color": "#79bd54" }
672
578
  }
673
579
  ]
674
580
  },
@@ -678,28 +584,18 @@
678
584
  "groups": ["ground"],
679
585
  "props": {
680
586
  "position": [680, 360],
681
- "collider": {
682
- "shape": "rect",
683
- "size": [150, 26]
684
- }
587
+ "collider": { "shape": "rect", "size": [150, 26] }
685
588
  },
686
589
  "children": [
687
590
  {
688
591
  "name": "Skin",
689
592
  "type": "ColorRect2D",
690
- "props": {
691
- "size": [150, 26],
692
- "color": "#7d6f5c"
693
- }
593
+ "props": { "size": [150, 26], "color": "#7d6f5c" }
694
594
  },
695
595
  {
696
596
  "name": "Moss",
697
597
  "type": "ColorRect2D",
698
- "props": {
699
- "position": [0, -9],
700
- "size": [150, 8],
701
- "color": "#88c060"
702
- }
598
+ "props": { "position": [0, -9], "size": [150, 8], "color": "#88c060" }
703
599
  }
704
600
  ]
705
601
  },
@@ -709,28 +605,18 @@
709
605
  "groups": ["ground"],
710
606
  "props": {
711
607
  "position": [1180, 320],
712
- "collider": {
713
- "shape": "rect",
714
- "size": [150, 26]
715
- }
608
+ "collider": { "shape": "rect", "size": [150, 26] }
716
609
  },
717
610
  "children": [
718
611
  {
719
612
  "name": "Skin",
720
613
  "type": "ColorRect2D",
721
- "props": {
722
- "size": [150, 26],
723
- "color": "#7d6f5c"
724
- }
614
+ "props": { "size": [150, 26], "color": "#7d6f5c" }
725
615
  },
726
616
  {
727
617
  "name": "Moss",
728
618
  "type": "ColorRect2D",
729
- "props": {
730
- "position": [0, -9],
731
- "size": [150, 8],
732
- "color": "#88c060"
733
- }
619
+ "props": { "position": [0, -9], "size": [150, 8], "color": "#88c060" }
734
620
  }
735
621
  ]
736
622
  },
@@ -740,28 +626,18 @@
740
626
  "groups": ["ground"],
741
627
  "props": {
742
628
  "position": [1760, 300],
743
- "collider": {
744
- "shape": "rect",
745
- "size": [180, 26]
746
- }
629
+ "collider": { "shape": "rect", "size": [180, 26] }
747
630
  },
748
631
  "children": [
749
632
  {
750
633
  "name": "Skin",
751
634
  "type": "ColorRect2D",
752
- "props": {
753
- "size": [180, 26],
754
- "color": "#7d6f5c"
755
- }
635
+ "props": { "size": [180, 26], "color": "#7d6f5c" }
756
636
  },
757
637
  {
758
638
  "name": "Moss",
759
639
  "type": "ColorRect2D",
760
- "props": {
761
- "position": [0, -9],
762
- "size": [180, 8],
763
- "color": "#88c060"
764
- }
640
+ "props": { "position": [0, -9], "size": [180, 8], "color": "#88c060" }
765
641
  }
766
642
  ]
767
643
  },
@@ -771,28 +647,18 @@
771
647
  "groups": ["ground"],
772
648
  "props": {
773
649
  "position": [2380, 320],
774
- "collider": {
775
- "shape": "rect",
776
- "size": [150, 26]
777
- }
650
+ "collider": { "shape": "rect", "size": [150, 26] }
778
651
  },
779
652
  "children": [
780
653
  {
781
654
  "name": "Skin",
782
655
  "type": "ColorRect2D",
783
- "props": {
784
- "size": [150, 26],
785
- "color": "#7d6f5c"
786
- }
656
+ "props": { "size": [150, 26], "color": "#7d6f5c" }
787
657
  },
788
658
  {
789
659
  "name": "Moss",
790
660
  "type": "ColorRect2D",
791
- "props": {
792
- "position": [0, -9],
793
- "size": [150, 8],
794
- "color": "#88c060"
795
- }
661
+ "props": { "position": [0, -9], "size": [150, 8], "color": "#88c060" }
796
662
  }
797
663
  ]
798
664
  },
@@ -802,10 +668,7 @@
802
668
  "groups": ["ground", "platform"],
803
669
  "props": {
804
670
  "position": [1320, 430],
805
- "collider": {
806
- "shape": "rect",
807
- "size": [150, 24]
808
- }
671
+ "collider": { "shape": "rect", "size": [150, 24] }
809
672
  },
810
673
  "script": {
811
674
  "name": "Patrol",
@@ -820,19 +683,12 @@
820
683
  {
821
684
  "name": "Skin",
822
685
  "type": "ColorRect2D",
823
- "props": {
824
- "size": [150, 24],
825
- "color": "#b07b3c"
826
- }
686
+ "props": { "size": [150, 24], "color": "#b07b3c" }
827
687
  },
828
688
  {
829
689
  "name": "Top",
830
690
  "type": "ColorRect2D",
831
- "props": {
832
- "position": [0, -8],
833
- "size": [150, 8],
834
- "color": "#ffd166"
835
- }
691
+ "props": { "position": [0, -8], "size": [150, 8], "color": "#ffd166" }
836
692
  }
837
693
  ],
838
694
  "uid": "n_sf07oapcipaog0b6"
@@ -843,10 +699,7 @@
843
699
  "groups": ["ground", "platform"],
844
700
  "props": {
845
701
  "position": [2140, 430],
846
- "collider": {
847
- "shape": "rect",
848
- "size": [140, 24]
849
- }
702
+ "collider": { "shape": "rect", "size": [140, 24] }
850
703
  },
851
704
  "script": {
852
705
  "name": "Oscillate",
@@ -861,19 +714,12 @@
861
714
  {
862
715
  "name": "Skin",
863
716
  "type": "ColorRect2D",
864
- "props": {
865
- "size": [140, 24],
866
- "color": "#b07b3c"
867
- }
717
+ "props": { "size": [140, 24], "color": "#b07b3c" }
868
718
  },
869
719
  {
870
720
  "name": "Top",
871
721
  "type": "ColorRect2D",
872
- "props": {
873
- "position": [0, -8],
874
- "size": [140, 8],
875
- "color": "#ffd166"
876
- }
722
+ "props": { "position": [0, -8], "size": [140, 8], "color": "#ffd166" }
877
723
  }
878
724
  ],
879
725
  "uid": "n_vfuh862g8bfg7swp"
@@ -884,20 +730,13 @@
884
730
  "groups": ["hazard"],
885
731
  "props": {
886
732
  "position": [680, 548],
887
- "collider": {
888
- "shape": "rect",
889
- "size": [120, 36]
890
- }
733
+ "collider": { "shape": "rect", "size": [120, 36] }
891
734
  },
892
735
  "children": [
893
736
  {
894
737
  "name": "Skin",
895
738
  "type": "ColorRect2D",
896
- "props": {
897
- "position": [0, 2],
898
- "size": [120, 26],
899
- "color": "#b0392f"
900
- }
739
+ "props": { "position": [0, 2], "size": [120, 26], "color": "#b0392f" }
901
740
  }
902
741
  ]
903
742
  },
@@ -907,20 +746,13 @@
907
746
  "groups": ["hazard"],
908
747
  "props": {
909
748
  "position": [2140, 548],
910
- "collider": {
911
- "shape": "rect",
912
- "size": [200, 36]
913
- }
749
+ "collider": { "shape": "rect", "size": [200, 36] }
914
750
  },
915
751
  "children": [
916
752
  {
917
753
  "name": "Skin",
918
754
  "type": "ColorRect2D",
919
- "props": {
920
- "position": [0, 2],
921
- "size": [200, 26],
922
- "color": "#b0392f"
923
- }
755
+ "props": { "position": [0, 2], "size": [200, 26], "color": "#b0392f" }
924
756
  }
925
757
  ]
926
758
  },
@@ -930,10 +762,7 @@
930
762
  "groups": ["pit"],
931
763
  "props": {
932
764
  "position": [1400, 880],
933
- "collider": {
934
- "shape": "rect",
935
- "size": [6000, 120]
936
- }
765
+ "collider": { "shape": "rect", "size": [6000, 120] }
937
766
  }
938
767
  },
939
768
  {
@@ -942,28 +771,18 @@
942
771
  "groups": ["checkpoint"],
943
772
  "props": {
944
773
  "position": [1520, 392],
945
- "collider": {
946
- "shape": "rect",
947
- "size": [40, 120]
948
- }
774
+ "collider": { "shape": "rect", "size": [40, 120] }
949
775
  },
950
776
  "children": [
951
777
  {
952
778
  "name": "Pole",
953
779
  "type": "ColorRect2D",
954
- "props": {
955
- "size": [8, 120],
956
- "color": "#cfd6e6"
957
- }
780
+ "props": { "size": [8, 120], "color": "#cfd6e6" }
958
781
  },
959
782
  {
960
783
  "name": "Flag",
961
784
  "type": "ColorRect2D",
962
- "props": {
963
- "position": [26, -44],
964
- "size": [44, 28],
965
- "color": "#56d8ff"
966
- }
785
+ "props": { "position": [26, -44], "size": [44, 28], "color": "#56d8ff" }
967
786
  }
968
787
  ]
969
788
  },
@@ -973,37 +792,23 @@
973
792
  "groups": ["goal"],
974
793
  "props": {
975
794
  "position": [2740, 380],
976
- "collider": {
977
- "shape": "rect",
978
- "size": [60, 160]
979
- }
795
+ "collider": { "shape": "rect", "size": [60, 160] }
980
796
  },
981
797
  "children": [
982
798
  {
983
799
  "name": "Pole",
984
800
  "type": "ColorRect2D",
985
- "props": {
986
- "size": [10, 160],
987
- "color": "#e9e2cf"
988
- }
801
+ "props": { "size": [10, 160], "color": "#e9e2cf" }
989
802
  },
990
803
  {
991
804
  "name": "Flag",
992
805
  "type": "ColorRect2D",
993
- "props": {
994
- "position": [34, -60],
995
- "size": [56, 36],
996
- "color": "#ffd166"
997
- }
806
+ "props": { "position": [34, -60], "size": [56, 36], "color": "#ffd166" }
998
807
  },
999
808
  {
1000
809
  "name": "Gate",
1001
810
  "type": "ColorRect2D",
1002
- "props": {
1003
- "position": [0, 60],
1004
- "size": [120, 40],
1005
- "color": "#3f3550"
1006
- }
811
+ "props": { "position": [0, 60], "size": [120, 40], "color": "#3f3550" }
1007
812
  }
1008
813
  ]
1009
814
  },
@@ -1011,9 +816,7 @@
1011
816
  "name": "Gob1",
1012
817
  "type": "Node2D",
1013
818
  "groups": ["enemy"],
1014
- "props": {
1015
- "position": [1020, 430]
1016
- },
819
+ "props": { "position": [1020, 430] },
1017
820
  "script": {
1018
821
  "name": "Patrol",
1019
822
  "props": {
@@ -1032,25 +835,15 @@
1032
835
  "scale": [0.46, 0.46],
1033
836
  "anchor": [0.5, 0.348],
1034
837
  "animations": {
1035
- "idle": {
1036
- "frames": [0, 6],
1037
- "fps": 9,
1038
- "loop": true
1039
- },
1040
- "move": {
1041
- "frames": [7, 12],
1042
- "fps": 12,
1043
- "loop": true
1044
- }
838
+ "idle": { "frames": [0, 6], "fps": 9, "loop": true },
839
+ "move": { "frames": [7, 12], "fps": 12, "loop": true }
1045
840
  }
1046
841
  }
1047
842
  },
1048
843
  {
1049
844
  "name": "AI",
1050
845
  "type": "Node2D",
1051
- "script": {
1052
- "name": "GoblinSkin"
1053
- },
846
+ "script": { "name": "GoblinSkin" },
1054
847
  "uid": "n_uuc954ct6jzjzzlp"
1055
848
  }
1056
849
  ],
@@ -1060,9 +853,7 @@
1060
853
  "name": "Gob2",
1061
854
  "type": "Node2D",
1062
855
  "groups": ["enemy"],
1063
- "props": {
1064
- "position": [1760, 430]
1065
- },
856
+ "props": { "position": [1760, 430] },
1066
857
  "script": {
1067
858
  "name": "Patrol",
1068
859
  "props": {
@@ -1081,25 +872,15 @@
1081
872
  "scale": [0.46, 0.46],
1082
873
  "anchor": [0.5, 0.348],
1083
874
  "animations": {
1084
- "idle": {
1085
- "frames": [0, 6],
1086
- "fps": 9,
1087
- "loop": true
1088
- },
1089
- "move": {
1090
- "frames": [7, 12],
1091
- "fps": 12,
1092
- "loop": true
1093
- }
875
+ "idle": { "frames": [0, 6], "fps": 9, "loop": true },
876
+ "move": { "frames": [7, 12], "fps": 12, "loop": true }
1094
877
  }
1095
878
  }
1096
879
  },
1097
880
  {
1098
881
  "name": "AI",
1099
882
  "type": "Node2D",
1100
- "script": {
1101
- "name": "GoblinSkin"
1102
- },
883
+ "script": { "name": "GoblinSkin" },
1103
884
  "uid": "n_ujbgnk7ixsicswwc"
1104
885
  }
1105
886
  ],
@@ -1109,9 +890,7 @@
1109
890
  "name": "Gob3",
1110
891
  "type": "Node2D",
1111
892
  "groups": ["enemy"],
1112
- "props": {
1113
- "position": [2520, 430]
1114
- },
893
+ "props": { "position": [2520, 430] },
1115
894
  "script": {
1116
895
  "name": "Patrol",
1117
896
  "props": {
@@ -1130,25 +909,15 @@
1130
909
  "scale": [0.46, 0.46],
1131
910
  "anchor": [0.5, 0.348],
1132
911
  "animations": {
1133
- "idle": {
1134
- "frames": [0, 6],
1135
- "fps": 9,
1136
- "loop": true
1137
- },
1138
- "move": {
1139
- "frames": [7, 12],
1140
- "fps": 12,
1141
- "loop": true
1142
- }
912
+ "idle": { "frames": [0, 6], "fps": 9, "loop": true },
913
+ "move": { "frames": [7, 12], "fps": 12, "loop": true }
1143
914
  }
1144
915
  }
1145
916
  },
1146
917
  {
1147
918
  "name": "AI",
1148
919
  "type": "Node2D",
1149
- "script": {
1150
- "name": "GoblinSkin"
1151
- },
920
+ "script": { "name": "GoblinSkin" },
1152
921
  "uid": "n_3kmb1qlhckw4xnhz"
1153
922
  }
1154
923
  ],
@@ -1157,35 +926,21 @@
1157
926
  {
1158
927
  "name": "Coins",
1159
928
  "type": "Node2D",
1160
- "props": {
1161
- "position": [0, 0]
1162
- },
929
+ "props": { "position": [0, 0] },
1163
930
  "children": [
1164
931
  {
1165
932
  "name": "Coin1",
1166
933
  "type": "Area2D",
1167
934
  "props": {
1168
935
  "position": [300, 380],
1169
- "collider": {
1170
- "shape": "circle",
1171
- "radius": 16
1172
- }
1173
- },
1174
- "script": {
1175
- "name": "Pickup",
1176
- "props": {
1177
- "value": 10,
1178
- "kind": "coin"
1179
- }
936
+ "collider": { "shape": "circle", "radius": 16 }
1180
937
  },
938
+ "script": { "name": "Pickup", "props": { "value": 10, "kind": "coin" } },
1181
939
  "children": [
1182
940
  {
1183
941
  "name": "Skin",
1184
942
  "type": "Sprite2D",
1185
- "props": {
1186
- "texture": "$coin",
1187
- "scale": [0.6, 0.6]
1188
- },
943
+ "props": { "texture": "$coin", "scale": [0.6, 0.6] },
1189
944
  "script": {
1190
945
  "name": "Oscillate",
1191
946
  "props": {
@@ -1205,26 +960,14 @@
1205
960
  "type": "Area2D",
1206
961
  "props": {
1207
962
  "position": [430, 350],
1208
- "collider": {
1209
- "shape": "circle",
1210
- "radius": 16
1211
- }
1212
- },
1213
- "script": {
1214
- "name": "Pickup",
1215
- "props": {
1216
- "value": 10,
1217
- "kind": "coin"
1218
- }
963
+ "collider": { "shape": "circle", "radius": 16 }
1219
964
  },
965
+ "script": { "name": "Pickup", "props": { "value": 10, "kind": "coin" } },
1220
966
  "children": [
1221
967
  {
1222
968
  "name": "Skin",
1223
969
  "type": "Sprite2D",
1224
- "props": {
1225
- "texture": "$coin",
1226
- "scale": [0.6, 0.6]
1227
- },
970
+ "props": { "texture": "$coin", "scale": [0.6, 0.6] },
1228
971
  "script": {
1229
972
  "name": "Oscillate",
1230
973
  "props": {
@@ -1244,26 +987,14 @@
1244
987
  "type": "Area2D",
1245
988
  "props": {
1246
989
  "position": [680, 300],
1247
- "collider": {
1248
- "shape": "circle",
1249
- "radius": 16
1250
- }
1251
- },
1252
- "script": {
1253
- "name": "Pickup",
1254
- "props": {
1255
- "value": 10,
1256
- "kind": "coin"
1257
- }
990
+ "collider": { "shape": "circle", "radius": 16 }
1258
991
  },
992
+ "script": { "name": "Pickup", "props": { "value": 10, "kind": "coin" } },
1259
993
  "children": [
1260
994
  {
1261
995
  "name": "Skin",
1262
996
  "type": "Sprite2D",
1263
- "props": {
1264
- "texture": "$coin",
1265
- "scale": [0.6, 0.6]
1266
- },
997
+ "props": { "texture": "$coin", "scale": [0.6, 0.6] },
1267
998
  "script": {
1268
999
  "name": "Oscillate",
1269
1000
  "props": {
@@ -1283,26 +1014,14 @@
1283
1014
  "type": "Area2D",
1284
1015
  "props": {
1285
1016
  "position": [940, 410],
1286
- "collider": {
1287
- "shape": "circle",
1288
- "radius": 16
1289
- }
1290
- },
1291
- "script": {
1292
- "name": "Pickup",
1293
- "props": {
1294
- "value": 10,
1295
- "kind": "coin"
1296
- }
1017
+ "collider": { "shape": "circle", "radius": 16 }
1297
1018
  },
1019
+ "script": { "name": "Pickup", "props": { "value": 10, "kind": "coin" } },
1298
1020
  "children": [
1299
1021
  {
1300
1022
  "name": "Skin",
1301
1023
  "type": "Sprite2D",
1302
- "props": {
1303
- "texture": "$coin",
1304
- "scale": [0.6, 0.6]
1305
- },
1024
+ "props": { "texture": "$coin", "scale": [0.6, 0.6] },
1306
1025
  "script": {
1307
1026
  "name": "Oscillate",
1308
1027
  "props": {
@@ -1322,26 +1041,14 @@
1322
1041
  "type": "Area2D",
1323
1042
  "props": {
1324
1043
  "position": [1100, 410],
1325
- "collider": {
1326
- "shape": "circle",
1327
- "radius": 16
1328
- }
1329
- },
1330
- "script": {
1331
- "name": "Pickup",
1332
- "props": {
1333
- "value": 10,
1334
- "kind": "coin"
1335
- }
1044
+ "collider": { "shape": "circle", "radius": 16 }
1336
1045
  },
1046
+ "script": { "name": "Pickup", "props": { "value": 10, "kind": "coin" } },
1337
1047
  "children": [
1338
1048
  {
1339
1049
  "name": "Skin",
1340
1050
  "type": "Sprite2D",
1341
- "props": {
1342
- "texture": "$coin",
1343
- "scale": [0.6, 0.6]
1344
- },
1051
+ "props": { "texture": "$coin", "scale": [0.6, 0.6] },
1345
1052
  "script": {
1346
1053
  "name": "Oscillate",
1347
1054
  "props": {
@@ -1361,26 +1068,14 @@
1361
1068
  "type": "Area2D",
1362
1069
  "props": {
1363
1070
  "position": [1180, 285],
1364
- "collider": {
1365
- "shape": "circle",
1366
- "radius": 16
1367
- }
1368
- },
1369
- "script": {
1370
- "name": "Pickup",
1371
- "props": {
1372
- "value": 10,
1373
- "kind": "coin"
1374
- }
1071
+ "collider": { "shape": "circle", "radius": 16 }
1375
1072
  },
1073
+ "script": { "name": "Pickup", "props": { "value": 10, "kind": "coin" } },
1376
1074
  "children": [
1377
1075
  {
1378
1076
  "name": "Skin",
1379
1077
  "type": "Sprite2D",
1380
- "props": {
1381
- "texture": "$coin",
1382
- "scale": [0.6, 0.6]
1383
- },
1078
+ "props": { "texture": "$coin", "scale": [0.6, 0.6] },
1384
1079
  "script": {
1385
1080
  "name": "Oscillate",
1386
1081
  "props": {
@@ -1400,26 +1095,14 @@
1400
1095
  "type": "Area2D",
1401
1096
  "props": {
1402
1097
  "position": [1395, 360],
1403
- "collider": {
1404
- "shape": "circle",
1405
- "radius": 16
1406
- }
1407
- },
1408
- "script": {
1409
- "name": "Pickup",
1410
- "props": {
1411
- "value": 10,
1412
- "kind": "coin"
1413
- }
1098
+ "collider": { "shape": "circle", "radius": 16 }
1414
1099
  },
1100
+ "script": { "name": "Pickup", "props": { "value": 10, "kind": "coin" } },
1415
1101
  "children": [
1416
1102
  {
1417
1103
  "name": "Skin",
1418
1104
  "type": "Sprite2D",
1419
- "props": {
1420
- "texture": "$coin",
1421
- "scale": [0.6, 0.6]
1422
- },
1105
+ "props": { "texture": "$coin", "scale": [0.6, 0.6] },
1423
1106
  "script": {
1424
1107
  "name": "Oscillate",
1425
1108
  "props": {
@@ -1439,26 +1122,14 @@
1439
1122
  "type": "Area2D",
1440
1123
  "props": {
1441
1124
  "position": [1620, 410],
1442
- "collider": {
1443
- "shape": "circle",
1444
- "radius": 16
1445
- }
1446
- },
1447
- "script": {
1448
- "name": "Pickup",
1449
- "props": {
1450
- "value": 10,
1451
- "kind": "coin"
1452
- }
1125
+ "collider": { "shape": "circle", "radius": 16 }
1453
1126
  },
1127
+ "script": { "name": "Pickup", "props": { "value": 10, "kind": "coin" } },
1454
1128
  "children": [
1455
1129
  {
1456
1130
  "name": "Skin",
1457
1131
  "type": "Sprite2D",
1458
- "props": {
1459
- "texture": "$coin",
1460
- "scale": [0.6, 0.6]
1461
- },
1132
+ "props": { "texture": "$coin", "scale": [0.6, 0.6] },
1462
1133
  "script": {
1463
1134
  "name": "Oscillate",
1464
1135
  "props": {
@@ -1478,26 +1149,14 @@
1478
1149
  "type": "Area2D",
1479
1150
  "props": {
1480
1151
  "position": [1900, 410],
1481
- "collider": {
1482
- "shape": "circle",
1483
- "radius": 16
1484
- }
1485
- },
1486
- "script": {
1487
- "name": "Pickup",
1488
- "props": {
1489
- "value": 10,
1490
- "kind": "coin"
1491
- }
1152
+ "collider": { "shape": "circle", "radius": 16 }
1492
1153
  },
1154
+ "script": { "name": "Pickup", "props": { "value": 10, "kind": "coin" } },
1493
1155
  "children": [
1494
1156
  {
1495
1157
  "name": "Skin",
1496
1158
  "type": "Sprite2D",
1497
- "props": {
1498
- "texture": "$coin",
1499
- "scale": [0.6, 0.6]
1500
- },
1159
+ "props": { "texture": "$coin", "scale": [0.6, 0.6] },
1501
1160
  "script": {
1502
1161
  "name": "Oscillate",
1503
1162
  "props": {
@@ -1517,26 +1176,14 @@
1517
1176
  "type": "Area2D",
1518
1177
  "props": {
1519
1178
  "position": [2140, 300],
1520
- "collider": {
1521
- "shape": "circle",
1522
- "radius": 16
1523
- }
1524
- },
1525
- "script": {
1526
- "name": "Pickup",
1527
- "props": {
1528
- "value": 10,
1529
- "kind": "coin"
1530
- }
1179
+ "collider": { "shape": "circle", "radius": 16 }
1531
1180
  },
1181
+ "script": { "name": "Pickup", "props": { "value": 10, "kind": "coin" } },
1532
1182
  "children": [
1533
1183
  {
1534
1184
  "name": "Skin",
1535
1185
  "type": "Sprite2D",
1536
- "props": {
1537
- "texture": "$coin",
1538
- "scale": [0.6, 0.6]
1539
- },
1186
+ "props": { "texture": "$coin", "scale": [0.6, 0.6] },
1540
1187
  "script": {
1541
1188
  "name": "Oscillate",
1542
1189
  "props": {
@@ -1556,26 +1203,14 @@
1556
1203
  "type": "Area2D",
1557
1204
  "props": {
1558
1205
  "position": [2380, 285],
1559
- "collider": {
1560
- "shape": "circle",
1561
- "radius": 16
1562
- }
1563
- },
1564
- "script": {
1565
- "name": "Pickup",
1566
- "props": {
1567
- "value": 10,
1568
- "kind": "coin"
1569
- }
1206
+ "collider": { "shape": "circle", "radius": 16 }
1570
1207
  },
1208
+ "script": { "name": "Pickup", "props": { "value": 10, "kind": "coin" } },
1571
1209
  "children": [
1572
1210
  {
1573
1211
  "name": "Skin",
1574
1212
  "type": "Sprite2D",
1575
- "props": {
1576
- "texture": "$coin",
1577
- "scale": [0.6, 0.6]
1578
- },
1213
+ "props": { "texture": "$coin", "scale": [0.6, 0.6] },
1579
1214
  "script": {
1580
1215
  "name": "Oscillate",
1581
1216
  "props": {
@@ -1595,26 +1230,14 @@
1595
1230
  "type": "Area2D",
1596
1231
  "props": {
1597
1232
  "position": [2600, 410],
1598
- "collider": {
1599
- "shape": "circle",
1600
- "radius": 16
1601
- }
1602
- },
1603
- "script": {
1604
- "name": "Pickup",
1605
- "props": {
1606
- "value": 10,
1607
- "kind": "coin"
1608
- }
1233
+ "collider": { "shape": "circle", "radius": 16 }
1609
1234
  },
1235
+ "script": { "name": "Pickup", "props": { "value": 10, "kind": "coin" } },
1610
1236
  "children": [
1611
1237
  {
1612
1238
  "name": "Skin",
1613
1239
  "type": "Sprite2D",
1614
- "props": {
1615
- "texture": "$coin",
1616
- "scale": [0.6, 0.6]
1617
- },
1240
+ "props": { "texture": "$coin", "scale": [0.6, 0.6] },
1618
1241
  "script": {
1619
1242
  "name": "Oscillate",
1620
1243
  "props": {
@@ -1636,26 +1259,14 @@
1636
1259
  "type": "Area2D",
1637
1260
  "props": {
1638
1261
  "position": [1760, 255],
1639
- "collider": {
1640
- "shape": "circle",
1641
- "radius": 20
1642
- }
1643
- },
1644
- "script": {
1645
- "name": "Pickup",
1646
- "props": {
1647
- "value": 50,
1648
- "kind": "gem"
1649
- }
1262
+ "collider": { "shape": "circle", "radius": 20 }
1650
1263
  },
1264
+ "script": { "name": "Pickup", "props": { "value": 50, "kind": "gem" } },
1651
1265
  "children": [
1652
1266
  {
1653
1267
  "name": "Skin",
1654
1268
  "type": "Sprite2D",
1655
- "props": {
1656
- "texture": "$gem",
1657
- "scale": [0.7, 0.7]
1658
- },
1269
+ "props": { "texture": "$gem", "scale": [0.7, 0.7] },
1659
1270
  "script": {
1660
1271
  "name": "Oscillate",
1661
1272
  "props": {
@@ -1675,26 +1286,14 @@
1675
1286
  "type": "Area2D",
1676
1287
  "props": {
1677
1288
  "position": [2140, 230],
1678
- "collider": {
1679
- "shape": "circle",
1680
- "radius": 20
1681
- }
1682
- },
1683
- "script": {
1684
- "name": "Pickup",
1685
- "props": {
1686
- "value": 50,
1687
- "kind": "gem"
1688
- }
1289
+ "collider": { "shape": "circle", "radius": 20 }
1689
1290
  },
1291
+ "script": { "name": "Pickup", "props": { "value": 50, "kind": "gem" } },
1690
1292
  "children": [
1691
1293
  {
1692
1294
  "name": "Skin",
1693
1295
  "type": "Sprite2D",
1694
- "props": {
1695
- "texture": "$gem",
1696
- "scale": [0.7, 0.7]
1697
- },
1296
+ "props": { "texture": "$gem", "scale": [0.7, 0.7] },
1698
1297
  "script": {
1699
1298
  "name": "Oscillate",
1700
1299
  "props": {
@@ -1715,15 +1314,9 @@
1715
1314
  "groups": ["player"],
1716
1315
  "props": {
1717
1316
  "position": [120, 360],
1718
- "collider": {
1719
- "shape": "capsule",
1720
- "radius": 18,
1721
- "height": 30
1722
- }
1723
- },
1724
- "script": {
1725
- "name": "PlayerController"
1317
+ "collider": { "shape": "capsule", "radius": 18, "height": 30 }
1726
1318
  },
1319
+ "script": { "name": "PlayerController" },
1727
1320
  "children": [
1728
1321
  {
1729
1322
  "name": "Skin",
@@ -1734,21 +1327,9 @@
1734
1327
  "scale": [0.72, 0.72],
1735
1328
  "anchor": [0.5, 0.464],
1736
1329
  "animations": {
1737
- "idle": {
1738
- "frames": [0, 5],
1739
- "fps": 10,
1740
- "loop": true
1741
- },
1742
- "run": {
1743
- "frames": [6, 11],
1744
- "fps": 14,
1745
- "loop": true
1746
- },
1747
- "jump": {
1748
- "frames": [9, 9],
1749
- "fps": 1,
1750
- "loop": false
1751
- }
1330
+ "idle": { "frames": [0, 5], "fps": 10, "loop": true },
1331
+ "run": { "frames": [6, 11], "fps": 14, "loop": true },
1332
+ "jump": { "frames": [9, 9], "fps": 1, "loop": false }
1752
1333
  }
1753
1334
  }
1754
1335
  },
@@ -1757,10 +1338,7 @@
1757
1338
  "type": "Area2D",
1758
1339
  "props": {
1759
1340
  "position": [0, 30],
1760
- "collider": {
1761
- "shape": "rect",
1762
- "size": [30, 14]
1763
- }
1341
+ "collider": { "shape": "rect", "size": [30, 14] }
1764
1342
  }
1765
1343
  }
1766
1344
  ],
@@ -1769,9 +1347,7 @@
1769
1347
  {
1770
1348
  "name": "Camera",
1771
1349
  "type": "Camera2D",
1772
- "props": {
1773
- "current": true
1774
- },
1350
+ "props": { "current": true },
1775
1351
  "script": {
1776
1352
  "name": "FollowCam",
1777
1353
  "props": {
@@ -1786,114 +1362,81 @@
1786
1362
  {
1787
1363
  "name": "SfxJump",
1788
1364
  "type": "AudioPlayer",
1789
- "props": {
1790
- "preset": "jump",
1791
- "bus": "sfx",
1792
- "volume": 0.4
1793
- }
1365
+ "props": { "preset": "jump", "bus": "sfx", "volume": 0.4 }
1794
1366
  },
1795
1367
  {
1796
1368
  "name": "SfxCoin",
1797
1369
  "type": "AudioPlayer",
1798
- "props": {
1799
- "preset": "coin",
1800
- "bus": "sfx",
1801
- "volume": 0.5
1802
- }
1370
+ "props": { "preset": "coin", "bus": "sfx", "volume": 0.5 }
1803
1371
  },
1804
1372
  {
1805
1373
  "name": "SfxStomp",
1806
1374
  "type": "AudioPlayer",
1807
- "props": {
1808
- "preset": "hit",
1809
- "bus": "sfx",
1810
- "volume": 0.55
1811
- }
1375
+ "props": { "preset": "hit", "bus": "sfx", "volume": 0.55 }
1812
1376
  },
1813
1377
  {
1814
1378
  "name": "SfxHurt",
1815
1379
  "type": "AudioPlayer",
1816
- "props": {
1817
- "preset": "hurt",
1818
- "bus": "sfx",
1819
- "volume": 0.6
1820
- }
1380
+ "props": { "preset": "hurt", "bus": "sfx", "volume": 0.6 }
1821
1381
  },
1822
1382
  {
1823
1383
  "name": "SfxCheckpoint",
1824
1384
  "type": "AudioPlayer",
1825
- "props": {
1826
- "preset": "powerup",
1827
- "bus": "sfx",
1828
- "volume": 0.6
1829
- }
1385
+ "props": { "preset": "powerup", "bus": "sfx", "volume": 0.6 }
1830
1386
  },
1831
1387
  {
1832
1388
  "name": "SfxWin",
1833
1389
  "type": "AudioPlayer",
1834
- "props": {
1835
- "preset": "win",
1836
- "bus": "sfx",
1837
- "volume": 0.8
1838
- }
1390
+ "props": { "preset": "win", "bus": "sfx", "volume": 0.8 }
1839
1391
  },
1840
1392
  {
1841
1393
  "name": "SfxLose",
1842
1394
  "type": "AudioPlayer",
1843
- "props": {
1844
- "preset": "lose",
1845
- "bus": "sfx",
1846
- "volume": 0.8
1847
- }
1395
+ "props": { "preset": "lose", "bus": "sfx", "volume": 0.8 }
1848
1396
  },
1849
1397
  {
1850
1398
  "name": "HUD",
1851
- "type": "UILayer",
1852
- "props": {
1853
- "anchor": "top-left"
1854
- },
1855
- "script": {
1856
- "name": "HudUpdater"
1857
- },
1399
+ "type": "HudLayer",
1400
+ "script": { "name": "HudUpdater" },
1858
1401
  "children": [
1859
1402
  {
1860
1403
  "name": "CoinLabel",
1861
- "type": "Label",
1404
+ "type": "UiText",
1862
1405
  "props": {
1863
- "position": [20, 30],
1406
+ "anchor": "topLeft",
1864
1407
  "text": "◆ 0",
1865
- "fontSize": 26,
1408
+ "size": 22,
1866
1409
  "color": "#ffd166"
1867
1410
  }
1868
1411
  },
1869
1412
  {
1870
1413
  "name": "HeartLabel",
1871
- "type": "Label",
1414
+ "type": "UiText",
1872
1415
  "props": {
1873
- "position": [20, 64],
1416
+ "anchor": "topLeft",
1874
1417
  "text": "♥♥♥",
1875
- "fontSize": 26,
1418
+ "size": 22,
1876
1419
  "color": "#ff6b81"
1877
1420
  }
1878
1421
  },
1879
1422
  {
1880
1423
  "name": "LivesLabel",
1881
- "type": "Label",
1424
+ "type": "UiText",
1882
1425
  "props": {
1883
- "position": [120, 64],
1426
+ "anchor": "topLeft",
1884
1427
  "text": "x 3",
1885
- "fontSize": 22,
1428
+ "size": 18,
1886
1429
  "color": "#f4f4f4"
1887
1430
  }
1888
1431
  },
1889
1432
  {
1890
1433
  "name": "Hint",
1891
- "type": "Label",
1434
+ "type": "UiText",
1892
1435
  "props": {
1893
- "position": [20, 100],
1436
+ "anchor": "bottom",
1894
1437
  "text": "A/D run · Space jump (double-jump!) · stomp goblins · reach the gold flag",
1895
- "fontSize": 15,
1896
- "color": "#1d2a44"
1438
+ "size": 14,
1439
+ "color": "#f4f4f4"
1897
1440
  }
1898
1441
  }
1899
1442
  ],
@@ -1901,23 +1444,8 @@
1901
1444
  },
1902
1445
  {
1903
1446
  "name": "BannerLayer",
1904
- "type": "UILayer",
1905
- "props": {
1906
- "anchor": "center"
1907
- },
1908
- "children": [
1909
- {
1910
- "name": "Banner",
1911
- "type": "Label",
1912
- "props": {
1913
- "position": [0, 0],
1914
- "text": "",
1915
- "fontSize": 64,
1916
- "color": "#ffffff",
1917
- "align": "center"
1918
- }
1919
- }
1920
- ]
1447
+ "type": "HudLayer",
1448
+ "children": [{ "name": "Banner", "type": "UiBanner", "props": { "size": 44 } }]
1921
1449
  }
1922
1450
  ],
1923
1451
  "uid": "n_d9t51gs0vhpnp2jj"
@@ -2091,17 +1619,7 @@
2091
1619
  "to": "SfxCheckpoint",
2092
1620
  "handler": "play"
2093
1621
  },
2094
- {
2095
- "signal": "won",
2096
- "from": "/root",
2097
- "to": "SfxWin",
2098
- "handler": "play"
2099
- },
2100
- {
2101
- "signal": "lost",
2102
- "from": "/root",
2103
- "to": "SfxLose",
2104
- "handler": "play"
2105
- }
1622
+ { "signal": "won", "from": "/root", "to": "SfxWin", "handler": "play" },
1623
+ { "signal": "lost", "from": "/root", "to": "SfxLose", "handler": "play" }
2106
1624
  ]
2107
1625
  }