incanto 0.1.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 (138) hide show
  1. package/LICENSE +30 -0
  2. package/README.md +36 -0
  3. package/THIRD-PARTY-NOTICES.md +88 -0
  4. package/assets/audio/attacked.mp3 +0 -0
  5. package/assets/audio/explosion.mp3 +0 -0
  6. package/assets/audio/gold_loot.mp3 +0 -0
  7. package/assets/audio/heal.mp3 +0 -0
  8. package/assets/audio/hit_metal_bang.mp3 +0 -0
  9. package/assets/audio/ice_spear.mp3 +0 -0
  10. package/assets/audio/monster_died.mp3 +0 -0
  11. package/assets/audio/slash.mp3 +0 -0
  12. package/assets/audio/smite.mp3 +0 -0
  13. package/assets/audio/spells_cast.mp3 +0 -0
  14. package/assets/audio/ui_click.wav +0 -0
  15. package/assets/audio/walk.mp3 +0 -0
  16. package/assets/catalog.json +390 -0
  17. package/assets/characters/2dbasic.json +41 -0
  18. package/assets/characters/2dbasic.png +0 -0
  19. package/assets/characters/ghost.json +46 -0
  20. package/assets/characters/ghost.png +0 -0
  21. package/assets/characters/goblin.json +40 -0
  22. package/assets/characters/goblin.png +0 -0
  23. package/assets/characters/medieval-knight.json +41 -0
  24. package/assets/characters/medieval-knight.png +0 -0
  25. package/assets/effects/swoosh.png +0 -0
  26. package/assets/items/box.png +0 -0
  27. package/assets/items/buff_potion.png +0 -0
  28. package/assets/items/coin.png +0 -0
  29. package/assets/items/gem.png +0 -0
  30. package/assets/items/gold.png +0 -0
  31. package/assets/items/hp_potion.png +0 -0
  32. package/assets/items/locked_item_box.png +0 -0
  33. package/assets/items/map.png +0 -0
  34. package/assets/items/resurrection_potion.png +0 -0
  35. package/assets/items/super_box.png +0 -0
  36. package/assets/items/trap.png +0 -0
  37. package/assets/tiles/floor00.jpg +0 -0
  38. package/assets/tiles/minecraft-tiles.png +0 -0
  39. package/assets/tiles/wall00.jpg +0 -0
  40. package/assets/vegetation/ash_color.png +0 -0
  41. package/assets/vegetation/aspen_color.png +0 -0
  42. package/assets/vegetation/bark/birch_color_1k.jpg +0 -0
  43. package/assets/vegetation/bark/birch_normal_1k.jpg +0 -0
  44. package/assets/vegetation/bark/birch_roughness_1k.jpg +0 -0
  45. package/assets/vegetation/bark/oak_color_1k.jpg +0 -0
  46. package/assets/vegetation/bark/oak_normal_1k.jpg +0 -0
  47. package/assets/vegetation/bark/oak_roughness_1k.jpg +0 -0
  48. package/assets/vegetation/bark/pine_color_1k.jpg +0 -0
  49. package/assets/vegetation/bark/pine_normal_1k.jpg +0 -0
  50. package/assets/vegetation/bark/pine_roughness_1k.jpg +0 -0
  51. package/assets/vegetation/ground/dirt_color.jpg +0 -0
  52. package/assets/vegetation/ground/dirt_normal.jpg +0 -0
  53. package/assets/vegetation/ground/grass.jpg +0 -0
  54. package/assets/vegetation/oak_color.png +0 -0
  55. package/assets/vegetation/pine_color.png +0 -0
  56. package/bin/incanto-assets.mjs +107 -0
  57. package/bin/incanto-check.mjs +107 -0
  58. package/bin/incanto-editor.mjs +343 -0
  59. package/bin/incanto-env.mjs +144 -0
  60. package/bin/incanto-model.mjs +296 -0
  61. package/bin/incanto-play.mjs +219 -0
  62. package/bin/incanto-skills.mjs +71 -0
  63. package/dist/2d.d.ts +642 -0
  64. package/dist/2d.js +44 -0
  65. package/dist/3d.d.ts +1860 -0
  66. package/dist/3d.js +5 -0
  67. package/dist/agent8-DzU2fFyH.js +129 -0
  68. package/dist/audio-player-DqUR3XFs.d.ts +110 -0
  69. package/dist/behavior-BAQq7HGM.d.ts +851 -0
  70. package/dist/create-game-BdjpTHrW.js +1725 -0
  71. package/dist/create-game-CZHROKcT.js +527 -0
  72. package/dist/debug-draw-CZmOYjL2.js +13 -0
  73. package/dist/debug.d.ts +66 -0
  74. package/dist/debug.js +658 -0
  75. package/dist/duplicate-DP2WPYom.js +22 -0
  76. package/dist/env.d.ts +430 -0
  77. package/dist/env.js +3152 -0
  78. package/dist/errors-BMFaY68Q.d.ts +33 -0
  79. package/dist/errors-BpWbnbb_.js +13 -0
  80. package/dist/gameplay-Ccruc3Wd.js +1501 -0
  81. package/dist/gameplay.d.ts +543 -0
  82. package/dist/gameplay.js +2 -0
  83. package/dist/heightmap-CroQPEER.js +185 -0
  84. package/dist/index.d.ts +305 -0
  85. package/dist/index.js +62 -0
  86. package/dist/json-BLk7H2Qa.js +30 -0
  87. package/dist/loader-CGs_G-r0.js +919 -0
  88. package/dist/loader-Mo0KghCv.d.ts +41 -0
  89. package/dist/net.d.ts +427 -0
  90. package/dist/net.js +772 -0
  91. package/dist/noise-CGUMx44x.js +82 -0
  92. package/dist/particle-sim-CbN4YUuH.d.ts +63 -0
  93. package/dist/particle-sim-DYuSUxvK.js +1319 -0
  94. package/dist/physics-2d-KuMWPTf6.js +288 -0
  95. package/dist/physics-3d-Dl67vOLT.js +434 -0
  96. package/dist/react.d.ts +65 -0
  97. package/dist/react.js +209 -0
  98. package/dist/register-BuUV1_KB.js +561 -0
  99. package/dist/register-CNlYAS1_.js +10634 -0
  100. package/dist/register-DPEV9_9t.js +851 -0
  101. package/dist/register-Dasmnurl.js +374 -0
  102. package/dist/registry-BVJ2HbCn.js +132 -0
  103. package/dist/rng-DP-SR7eg.js +38 -0
  104. package/dist/rolldown-runtime-D7D4PA-g.js +13 -0
  105. package/dist/schema-CcoWb32N.d.ts +104 -0
  106. package/dist/test.d.ts +158 -0
  107. package/dist/test.js +275 -0
  108. package/dist/touch-031PxtCR.js +208 -0
  109. package/dist/vite.d.ts +26 -0
  110. package/dist/vite.js +57 -0
  111. package/editor/assets/GameServer-C56iOUgF.js +1 -0
  112. package/editor/assets/agent8-Bp7QFI7v.js +1 -0
  113. package/editor/assets/index-DF3tMeKJ.css +1 -0
  114. package/editor/assets/index-Dl2pjA8e.js +7365 -0
  115. package/editor/assets/rapier-CEuLKeCu.js +1 -0
  116. package/editor/assets/rapier-DE6a0vmv.js +1 -0
  117. package/editor/index.html +169 -0
  118. package/package.json +97 -0
  119. package/schemas/scene.schema.json +4254 -0
  120. package/skills/README.md +9 -0
  121. package/skills/incanto-3d-character.md +229 -0
  122. package/skills/incanto-3d-models.md +151 -0
  123. package/skills/incanto-assets.md +118 -0
  124. package/skills/incanto-audio.md +309 -0
  125. package/skills/incanto-behaviors-and-scripts.md +169 -0
  126. package/skills/incanto-building-2d-games.md +242 -0
  127. package/skills/incanto-building-3d-games.md +245 -0
  128. package/skills/incanto-editor.md +163 -0
  129. package/skills/incanto-environment.md +743 -0
  130. package/skills/incanto-gameplay-behaviors.md +707 -0
  131. package/skills/incanto-multiplayer.md +264 -0
  132. package/skills/incanto-node-reference.md +797 -0
  133. package/skills/incanto-physics-and-input.md +164 -0
  134. package/skills/incanto-scene-json-authoring.md +325 -0
  135. package/skills/incanto-verifying-your-game.md +191 -0
  136. package/skills/incanto-web-integration.md +96 -0
  137. package/templates/agent8-server.js +84 -0
  138. package/templates/agent8-server.ts +138 -0
@@ -0,0 +1,797 @@
1
+ ---
2
+ name: incanto-node-reference
3
+ description: GENERATED complete reference of every Incanto node type — props, defaults, kinds, signals — plus the machine-readable scene JSON Schema. Use when checking exact prop names, defaults, or which node type to use.
4
+ ---
5
+
6
+ # Node Reference
7
+
8
+ > Shipped inside the `incanto` npm package — this document always matches the
9
+ > installed engine version. Sibling skills live in `node_modules/incanto/skills/`.
10
+
11
+ > GENERATED from the engine source by `pnpm generate:reference` — do not edit by hand.
12
+ > Every node also accepts the structural fields: `name`, `uid`, `groups`, `tags`, `script`,
13
+ > `network`, `children` (see `incanto-scene-json-authoring.md`).
14
+ > Machine contract: `node_modules/incanto/schemas/scene.schema.json` — a JSON Schema for
15
+ > whole `*.scene.json` files (validate scenes before loading; remember props are
16
+ > delta-only: write only non-default values).
17
+
18
+ ## `AnimatedSprite2D` — `incanto/2d`
19
+
20
+ | Prop | Default | Kind |
21
+ |---|---|---|
22
+ | `position` | `[0,0]` | array |
23
+ | `rotation` | `0` | number |
24
+ | `scale` | `[1,1]` | array |
25
+ | `renderOrder` | `0` | number |
26
+ | `visible` | `true` | boolean |
27
+ | `texture` | `""` | string |
28
+ | `anchor` | `[0.5,0.5]` | array |
29
+ | `flipX` | `false` | boolean |
30
+ | `flipY` | `false` | boolean |
31
+ | `tint` | `"#ffffff"` | string |
32
+ | `opacity` | `1` | number |
33
+ | `sheet` | `""` | string |
34
+ | `animations` | `{}` | object |
35
+ | `autoplay` | `""` | string |
36
+
37
+ Signals: `animationFinished(name)`
38
+
39
+ ## `Area2D` — `incanto/2d`
40
+
41
+ | Prop | Default | Kind |
42
+ |---|---|---|
43
+ | `position` | `[0,0]` | array |
44
+ | `rotation` | `0` | number |
45
+ | `scale` | `[1,1]` | array |
46
+ | `renderOrder` | `0` | number |
47
+ | `visible` | `true` | boolean |
48
+ | `collider` | `{}` | object |
49
+
50
+ Signals: `triggerEnter(other)` · `triggerExit(other)`
51
+
52
+ ## `Area3D` — `incanto/3d`
53
+
54
+ | Prop | Default | Kind |
55
+ |---|---|---|
56
+ | `position` | `[0,0,0]` | array |
57
+ | `rotation` | `[0,0,0]` | array |
58
+ | `scale` | `[1,1,1]` | array |
59
+ | `visible` | `true` | boolean |
60
+ | `renderOrder` | `0` | number |
61
+ | `collider` | `{}` | object |
62
+
63
+ Signals: `triggerEnter(other)` · `triggerExit(other)`
64
+
65
+ ## `AudioPlayer` — `incanto`
66
+
67
+ | Prop | Default | Kind |
68
+ |---|---|---|
69
+ | `src` | `""` | string |
70
+ | `preset` | `"custom"` | one of: `custom` `coin` `pickup` `jump` `hurt` `hit` `explosion` `powerup` `laser` `shoot` `blip` `select` `step` `win` `lose` |
71
+ | `volume` | `1` | number |
72
+ | `pitch` | `1` | number |
73
+ | `seed` | `0` | number |
74
+ | `bus` | `"sfx"` | one of: `sfx` `music` |
75
+ | `loop` | `false` | boolean |
76
+ | `autoplay` | `false` | boolean |
77
+ | `spatial` | `false` | boolean |
78
+ | `refDistance` | `1` | number |
79
+ | `maxDistance` | `50` | number |
80
+ | `rolloff` | `"inverse"` | one of: `inverse` `linear` `exponential` |
81
+
82
+ Signals: `finished`
83
+
84
+ ## `Camera2D` — `incanto/2d`
85
+
86
+ | Prop | Default | Kind |
87
+ |---|---|---|
88
+ | `position` | `[0,0]` | array |
89
+ | `rotation` | `0` | number |
90
+ | `scale` | `[1,1]` | array |
91
+ | `renderOrder` | `0` | number |
92
+ | `visible` | `true` | boolean |
93
+ | `follow` | `""` | string |
94
+ | `smoothing` | `0` | number |
95
+ | `zoom` | `1` | number |
96
+ | `limits` | `[]` | array |
97
+ | `current` | `false` | boolean |
98
+
99
+ ## `Camera3D` — `incanto/3d`
100
+
101
+ | Prop | Default | Kind |
102
+ |---|---|---|
103
+ | `position` | `[0,0,0]` | array |
104
+ | `rotation` | `[0,0,0]` | array |
105
+ | `scale` | `[1,1,1]` | array |
106
+ | `visible` | `true` | boolean |
107
+ | `renderOrder` | `0` | number |
108
+ | `fov` | `60` | number |
109
+ | `near` | `0.1` | number |
110
+ | `far` | `1000` | number |
111
+ | `current` | `false` | boolean |
112
+
113
+ ## `CharacterBody2D` — `incanto/2d`
114
+
115
+ | Prop | Default | Kind |
116
+ |---|---|---|
117
+ | `position` | `[0,0]` | array |
118
+ | `rotation` | `0` | number |
119
+ | `scale` | `[1,1]` | array |
120
+ | `renderOrder` | `0` | number |
121
+ | `visible` | `true` | boolean |
122
+ | `collider` | `{}` | object |
123
+ | `velocity` | `[0,0]` | array |
124
+ | `snapToGround` | `true` | boolean |
125
+ | `slopeLimitDeg` | `45` | number |
126
+
127
+ Signals: `triggerEnter(other)` · `triggerExit(other)`
128
+
129
+ ## `CharacterBody3D` — `incanto/3d`
130
+
131
+ | Prop | Default | Kind |
132
+ |---|---|---|
133
+ | `position` | `[0,0,0]` | array |
134
+ | `rotation` | `[0,0,0]` | array |
135
+ | `scale` | `[1,1,1]` | array |
136
+ | `visible` | `true` | boolean |
137
+ | `renderOrder` | `0` | number |
138
+ | `collider` | `{}` | object |
139
+ | `velocity` | `[0,0,0]` | array |
140
+ | `snapToGround` | `true` | boolean |
141
+ | `slopeLimitDeg` | `45` | number |
142
+
143
+ Signals: `triggerEnter(other)` · `triggerExit(other)`
144
+
145
+ ## `CharacterController2D` — `incanto/2d`
146
+
147
+ | Prop | Default | Kind |
148
+ |---|---|---|
149
+ | `mode` | `"platformer"` | one of: `platformer` `topDown` |
150
+ | `maxSpeed` | `220` | number |
151
+ | `jumpHeight` | `64` | number |
152
+ | `moveAction` | `"move"` | string |
153
+ | `jumpAction` | `"jump"` | string |
154
+
155
+ ## `CharacterController3D` — `incanto/3d`
156
+
157
+ | Prop | Default | Kind |
158
+ |---|---|---|
159
+ | `position` | `[0,0,0]` | array |
160
+ | `rotation` | `[0,0,0]` | array |
161
+ | `scale` | `[1,1,1]` | array |
162
+ | `visible` | `true` | boolean |
163
+ | `renderOrder` | `0` | number |
164
+ | `view` | `"free"` | one of: `free` `firstPerson` `quarter` `side` |
165
+ | `camDistance` | `4` | number |
166
+ | `eyeHeight` | `0.64` | number |
167
+ | `maxSpeed` | `2.5` | number |
168
+ | `sprintMultiplier` | `2` | number |
169
+ | `jumpVelocity` | `4` | number |
170
+ | `sprintJumpMultiplier` | `1.2` | number |
171
+ | `floatHeight` | `0.01` | number |
172
+ | `mouseLook` | `true` | boolean |
173
+ | `zoomMin` | `0` | number |
174
+ | `zoomMax` | `0` | number |
175
+ | `pitchMin` | `-1.3` | number |
176
+ | `pitchMax` | `1.5` | number |
177
+ | `cameraCollision` | `true` | boolean |
178
+ | `turnSpeed` | `100` | number |
179
+ | `camLerp` | `25` | number |
180
+ | `moveAction` | `"move"` | string |
181
+ | `jumpAction` | `"jump"` | string |
182
+ | `sprintAction` | `"sprint"` | string |
183
+ | `skinPath` | `"../Skin"` | string |
184
+ | `skinYawOffset` | `0` | number |
185
+
186
+ Signals: `movementStateChanged(state)`
187
+
188
+ ## `ColorRect2D` — `incanto/2d`
189
+
190
+ | Prop | Default | Kind |
191
+ |---|---|---|
192
+ | `position` | `[0,0]` | array |
193
+ | `rotation` | `0` | number |
194
+ | `scale` | `[1,1]` | array |
195
+ | `renderOrder` | `0` | number |
196
+ | `visible` | `true` | boolean |
197
+ | `size` | `[100,100]` | array |
198
+ | `color` | `"#ffffff"` | string |
199
+ | `opacity` | `1` | number |
200
+ | `anchor` | `[0.5,0.5]` | array |
201
+
202
+ ## `DirectionalLight3D` — `incanto/3d`
203
+
204
+ | Prop | Default | Kind |
205
+ |---|---|---|
206
+ | `position` | `[0,0,0]` | array |
207
+ | `rotation` | `[0,0,0]` | array |
208
+ | `scale` | `[1,1,1]` | array |
209
+ | `visible` | `true` | boolean |
210
+ | `renderOrder` | `0` | number |
211
+ | `color` | `"#ffffff"` | string |
212
+ | `intensity` | `1` | number |
213
+ | `castShadow` | `false` | boolean |
214
+ | `shadowArea` | `75` | number |
215
+ | `shadowMapSize` | `2048` | number |
216
+ | `shadowFollowsCamera` | `false` | boolean |
217
+
218
+ ## `Flowers3D` — `incanto/3d`
219
+
220
+ | Prop | Default | Kind |
221
+ |---|---|---|
222
+ | `position` | `[0,0,0]` | array |
223
+ | `rotation` | `[0,0,0]` | array |
224
+ | `scale` | `[1,1,1]` | array |
225
+ | `visible` | `true` | boolean |
226
+ | `renderOrder` | `0` | number |
227
+ | `density` | `"sparse"` | one of: `lush` `sparse` `none` |
228
+ | `area` | `[20,20]` | array |
229
+ | `seed` | `1` | number |
230
+ | `varieties` | `[]` | array |
231
+ | `palette` | `[]` | array |
232
+ | `height` | `0.45` | number |
233
+ | `clustering` | `0.6` | number |
234
+ | `sway` | `0.5` | number |
235
+ | `drape` | `false` | boolean |
236
+ | `terrain` | `""` | string |
237
+
238
+ ## `Foliage3D` — `incanto/3d`
239
+
240
+ | Prop | Default | Kind |
241
+ |---|---|---|
242
+ | `position` | `[0,0,0]` | array |
243
+ | `rotation` | `[0,0,0]` | array |
244
+ | `scale` | `[1,1,1]` | array |
245
+ | `visible` | `true` | boolean |
246
+ | `renderOrder` | `2` | number |
247
+ | `kind` | `"grass"` | one of: `grass` `flowers` `reeds` |
248
+ | `style` | `"mesh"` | one of: `blades` `simple` `mesh` `tufts` |
249
+ | `tuftStyle` | `"grass"` | one of: `grass` `fern` |
250
+ | `area` | `[20,20]` | array |
251
+ | `density` | `12` | number |
252
+ | `maxInstances` | `50000` | number |
253
+ | `height` | `0.25` | number |
254
+ | `colorA` | `"#4d7232"` | string |
255
+ | `colorB` | `"#9aab55"` | string |
256
+ | `groundColor` | `"#1f3015"` | string |
257
+ | `sunDirection` | `[0.5,0.8,0.3]` | array |
258
+ | `fadeStart` | `60` | number |
259
+ | `fadeEnd` | `90` | number |
260
+ | `sway` | `0.6` | number |
261
+ | `interaction` | `true` | boolean |
262
+ | `coverage` | `0.85` | number |
263
+ | `flowers` | `0` | number |
264
+ | `seed` | `1` | number |
265
+ | `drape` | `false` | boolean |
266
+ | `terrain` | `""` | string |
267
+
268
+ ## `Label` — `incanto/2d`
269
+
270
+ | Prop | Default | Kind |
271
+ |---|---|---|
272
+ | `position` | `[0,0]` | array |
273
+ | `rotation` | `0` | number |
274
+ | `scale` | `[1,1]` | array |
275
+ | `renderOrder` | `0` | number |
276
+ | `visible` | `true` | boolean |
277
+ | `text` | `""` | string |
278
+ | `fontSize` | `16` | number |
279
+ | `color` | `"#ffffff"` | string |
280
+ | `font` | `"monospace"` | string |
281
+ | `align` | `"left"` | string |
282
+
283
+ ## `MeshInstance3D` — `incanto/3d`
284
+
285
+ | Prop | Default | Kind |
286
+ |---|---|---|
287
+ | `position` | `[0,0,0]` | array |
288
+ | `rotation` | `[0,0,0]` | array |
289
+ | `scale` | `[1,1,1]` | array |
290
+ | `visible` | `true` | boolean |
291
+ | `renderOrder` | `0` | number |
292
+ | `mesh` | `"box"` | one of: `box` `sphere` `capsule` `plane` `cylinder` `gem` |
293
+ | `size` | `[1,1,1]` | array |
294
+ | `material` | `{}` | object |
295
+ | `castShadow` | `false` | boolean |
296
+ | `receiveShadow` | `false` | boolean |
297
+
298
+ ## `ModelInstance3D` — `incanto/3d`
299
+
300
+ | Prop | Default | Kind |
301
+ |---|---|---|
302
+ | `position` | `[0,0,0]` | array |
303
+ | `rotation` | `[0,0,0]` | array |
304
+ | `scale` | `[1,1,1]` | array |
305
+ | `visible` | `true` | boolean |
306
+ | `renderOrder` | `0` | number |
307
+ | `model` | `""` | string |
308
+ | `animation` | `""` | string |
309
+ | `targetHeight` | `0` | number |
310
+ | `castShadow` | `false` | boolean |
311
+ | `animationLoop` | `true` | boolean |
312
+ | `receiveShadow` | `false` | boolean |
313
+ | `tint` | `""` | string |
314
+
315
+ Signals: `animationFinished(name)`
316
+
317
+ ## `NetworkSpawner` — `incanto/net`
318
+
319
+ | Prop | Default | Kind |
320
+ |---|---|---|
321
+ | `source` | `"users"` | string |
322
+ | `scene` | `""` | string |
323
+ | `interpolate` | `true` | boolean |
324
+
325
+ Signals: `spawned(node, key)` · `despawned(node, key)`
326
+
327
+ ## `Node` — `incanto`
328
+
329
+ _No props (structural fields only)._
330
+
331
+ ## `Node2D` — `incanto/2d`
332
+
333
+ | Prop | Default | Kind |
334
+ |---|---|---|
335
+ | `position` | `[0,0]` | array |
336
+ | `rotation` | `0` | number |
337
+ | `scale` | `[1,1]` | array |
338
+ | `renderOrder` | `0` | number |
339
+ | `visible` | `true` | boolean |
340
+
341
+ ## `Node3D` — `incanto/3d`
342
+
343
+ | Prop | Default | Kind |
344
+ |---|---|---|
345
+ | `position` | `[0,0,0]` | array |
346
+ | `rotation` | `[0,0,0]` | array |
347
+ | `scale` | `[1,1,1]` | array |
348
+ | `visible` | `true` | boolean |
349
+ | `renderOrder` | `0` | number |
350
+
351
+ ## `OmniLight3D` — `incanto/3d`
352
+
353
+ | Prop | Default | Kind |
354
+ |---|---|---|
355
+ | `position` | `[0,0,0]` | array |
356
+ | `rotation` | `[0,0,0]` | array |
357
+ | `scale` | `[1,1,1]` | array |
358
+ | `visible` | `true` | boolean |
359
+ | `renderOrder` | `0` | number |
360
+ | `color` | `"#ffffff"` | string |
361
+ | `intensity` | `1` | number |
362
+ | `range` | `0` | number |
363
+
364
+ ## `Particles2D` — `incanto/2d`
365
+
366
+ | Prop | Default | Kind |
367
+ |---|---|---|
368
+ | `position` | `[0,0]` | array |
369
+ | `rotation` | `0` | number |
370
+ | `scale` | `[1,1]` | array |
371
+ | `renderOrder` | `0` | number |
372
+ | `visible` | `true` | boolean |
373
+ | `preset` | `"custom"` | one of: `custom` `fire` `smoke` `sparks` `fireworks` `explosion` `flash` `lightning` `rain` `snow` `magic` |
374
+ | `emitting` | `true` | boolean |
375
+ | `rate` | `40` | number |
376
+ | `burst` | `0` | number |
377
+ | `lifetime` | `[0.6,1.2]` | array |
378
+ | `speed` | `[40,120]` | array |
379
+ | `directionDeg` | `-90` | number |
380
+ | `spreadDeg` | `30` | number |
381
+ | `gravity` | `[0,0]` | array |
382
+ | `drag` | `0` | number |
383
+ | `sizeStart` | `8` | number |
384
+ | `sizeEnd` | `2` | number |
385
+ | `colorStart` | `"#ffffff"` | string |
386
+ | `colorEnd` | `"#ffffff"` | string |
387
+ | `paletteColors` | `[]` | array |
388
+ | `alphaStart` | `1` | number |
389
+ | `alphaEnd` | `0` | number |
390
+ | `shimmer` | `0` | number |
391
+ | `blend` | `"add"` | one of: `add` `normal` |
392
+ | `maxParticles` | `256` | number |
393
+
394
+ Signals: `finished`
395
+
396
+ ## `Particles3D` — `incanto/3d`
397
+
398
+ | Prop | Default | Kind |
399
+ |---|---|---|
400
+ | `position` | `[0,0,0]` | array |
401
+ | `rotation` | `[0,0,0]` | array |
402
+ | `scale` | `[1,1,1]` | array |
403
+ | `visible` | `true` | boolean |
404
+ | `renderOrder` | `0` | number |
405
+ | `preset` | `"custom"` | one of: `custom` `fire` `smoke` `sparks` `fireworks` `explosion` `flash` `lightning` `rain` `snow` `magic` |
406
+ | `emitting` | `true` | boolean |
407
+ | `rate` | `40` | number |
408
+ | `burst` | `0` | number |
409
+ | `lifetime` | `[0.6,1.2]` | array |
410
+ | `speed` | `[40,120]` | array |
411
+ | `directionDeg` | `-90` | number |
412
+ | `spreadDeg` | `30` | number |
413
+ | `gravity` | `[0,0]` | array |
414
+ | `drag` | `0` | number |
415
+ | `sizeStart` | `8` | number |
416
+ | `sizeEnd` | `2` | number |
417
+ | `colorStart` | `"#ffffff"` | string |
418
+ | `colorEnd` | `"#ffffff"` | string |
419
+ | `paletteColors` | `[]` | array |
420
+ | `alphaStart` | `1` | number |
421
+ | `alphaEnd` | `0` | number |
422
+ | `shimmer` | `0` | number |
423
+ | `blend` | `"add"` | one of: `add` `normal` |
424
+ | `depthTest` | `true` | boolean |
425
+ | `maxParticles` | `256` | number |
426
+
427
+ Signals: `finished`
428
+
429
+ ## `RigidBody2D` — `incanto/2d`
430
+
431
+ | Prop | Default | Kind |
432
+ |---|---|---|
433
+ | `position` | `[0,0]` | array |
434
+ | `rotation` | `0` | number |
435
+ | `scale` | `[1,1]` | array |
436
+ | `renderOrder` | `0` | number |
437
+ | `visible` | `true` | boolean |
438
+ | `collider` | `{}` | object |
439
+ | `mass` | `1` | number |
440
+ | `gravityScale` | `1` | number |
441
+ | `fixedRotation` | `false` | boolean |
442
+ | `friction` | `0.5` | number |
443
+ | `restitution` | `0` | number |
444
+ | `linearVelocity` | `[0,0]` | array |
445
+
446
+ Signals: `triggerEnter(other)` · `triggerExit(other)`
447
+
448
+ ## `RigidBody3D` — `incanto/3d`
449
+
450
+ | Prop | Default | Kind |
451
+ |---|---|---|
452
+ | `position` | `[0,0,0]` | array |
453
+ | `rotation` | `[0,0,0]` | array |
454
+ | `scale` | `[1,1,1]` | array |
455
+ | `visible` | `true` | boolean |
456
+ | `renderOrder` | `0` | number |
457
+ | `collider` | `{}` | object |
458
+ | `mass` | `1` | number |
459
+ | `gravityScale` | `1` | number |
460
+ | `fixedRotation` | `false` | boolean |
461
+ | `friction` | `0.5` | number |
462
+ | `restitution` | `0` | number |
463
+ | `linearVelocity` | `[0,0,0]` | array |
464
+
465
+ Signals: `triggerEnter(other)` · `triggerExit(other)`
466
+
467
+ ## `Sprite2D` — `incanto/2d`
468
+
469
+ | Prop | Default | Kind |
470
+ |---|---|---|
471
+ | `position` | `[0,0]` | array |
472
+ | `rotation` | `0` | number |
473
+ | `scale` | `[1,1]` | array |
474
+ | `renderOrder` | `0` | number |
475
+ | `visible` | `true` | boolean |
476
+ | `texture` | `""` | string |
477
+ | `anchor` | `[0.5,0.5]` | array |
478
+ | `flipX` | `false` | boolean |
479
+ | `flipY` | `false` | boolean |
480
+ | `tint` | `"#ffffff"` | string |
481
+ | `opacity` | `1` | number |
482
+
483
+ ## `StaticBody2D` — `incanto/2d`
484
+
485
+ | Prop | Default | Kind |
486
+ |---|---|---|
487
+ | `position` | `[0,0]` | array |
488
+ | `rotation` | `0` | number |
489
+ | `scale` | `[1,1]` | array |
490
+ | `renderOrder` | `0` | number |
491
+ | `visible` | `true` | boolean |
492
+ | `collider` | `{}` | object |
493
+
494
+ Signals: `triggerEnter(other)` · `triggerExit(other)`
495
+
496
+ ## `StaticBody3D` — `incanto/3d`
497
+
498
+ | Prop | Default | Kind |
499
+ |---|---|---|
500
+ | `position` | `[0,0,0]` | array |
501
+ | `rotation` | `[0,0,0]` | array |
502
+ | `scale` | `[1,1,1]` | array |
503
+ | `visible` | `true` | boolean |
504
+ | `renderOrder` | `0` | number |
505
+ | `collider` | `{}` | object |
506
+
507
+ Signals: `triggerEnter(other)` · `triggerExit(other)`
508
+
509
+ ## `Terrain3D` — `incanto/3d`
510
+
511
+ | Prop | Default | Kind |
512
+ |---|---|---|
513
+ | `position` | `[0,0,0]` | array |
514
+ | `rotation` | `[0,0,0]` | array |
515
+ | `scale` | `[1,1,1]` | array |
516
+ | `visible` | `true` | boolean |
517
+ | `renderOrder` | `0` | number |
518
+ | `size` | `[200,200]` | array |
519
+ | `maxHeight` | `28` | number |
520
+ | `seed` | `1` | number |
521
+ | `resolution` | `128` | number |
522
+ | `theme` | `"island"` | one of: `island` `alpine` `plains` `desert` `grassland` `forest` `savanna` `snow` `wetland` `volcanic` `custom` |
523
+ | `roughness` | `0.5` | number |
524
+ | `detail` | `4` | number |
525
+ | `flatThreshold` | `0.95` | number |
526
+ | `islandEdge` | `null` | null |
527
+ | `layers` | `[]` | array |
528
+ | `textureBase` | `"https://agent8-games.verse8.io/assets/3D/default/textures/terrain"` | string |
529
+ | `basins` | `[]` | array |
530
+
531
+ ## `Timer` — `incanto`
532
+
533
+ | Prop | Default | Kind |
534
+ |---|---|---|
535
+ | `waitTime` | `1` | number |
536
+ | `oneShot` | `false` | boolean |
537
+ | `autostart` | `false` | boolean |
538
+
539
+ Signals: `timeout`
540
+
541
+ ## `Tree3D` — `incanto/3d`
542
+
543
+ | Prop | Default | Kind |
544
+ |---|---|---|
545
+ | `position` | `[0,0,0]` | array |
546
+ | `rotation` | `[0,0,0]` | array |
547
+ | `scale` | `[1,1,1]` | array |
548
+ | `visible` | `true` | boolean |
549
+ | `renderOrder` | `0` | number |
550
+ | `tier` | `"medium"` | one of: `simple` `medium` `high` |
551
+ | `type` | `"conifer"` | one of: `conifer` `broadleaf` `dead` `bush` |
552
+ | `seed` | `1` | number |
553
+ | `height` | `6` | number |
554
+ | `count` | `1` | number |
555
+ | `area` | `[10,10]` | array |
556
+ | `trunkColor` | `"#7a5a3a"` | string |
557
+ | `canopyColor` | `"#4a7c3f"` | string |
558
+ | `leafTexture` | `""` | string |
559
+ | `leafFadeStart` | `0` | number |
560
+ | `leafFadeEnd` | `0` | number |
561
+ | `leafShadows` | `true` | boolean |
562
+ | `drape` | `false` | boolean |
563
+ | `terrain` | `""` | string |
564
+
565
+ ## `UILayer` — `incanto/2d`
566
+
567
+ | Prop | Default | Kind |
568
+ |---|---|---|
569
+ | `anchor` | `"top-left"` | one of: `top-left` `top` `top-right` `left` `center` `right` `bottom-left` `bottom` `bottom-right` |
570
+
571
+ ## `VoxelGrid3D` — `incanto/3d`
572
+
573
+ | Prop | Default | Kind |
574
+ |---|---|---|
575
+ | `position` | `[0,0,0]` | array |
576
+ | `rotation` | `[0,0,0]` | array |
577
+ | `scale` | `[1,1,1]` | array |
578
+ | `visible` | `true` | boolean |
579
+ | `renderOrder` | `0` | number |
580
+ | `voxels` | `[]` | array |
581
+
582
+ Signals: `blocksChanged`
583
+
584
+ ## `Water3D` — `incanto/3d`
585
+
586
+ | Prop | Default | Kind |
587
+ |---|---|---|
588
+ | `position` | `[0,0,0]` | array |
589
+ | `rotation` | `[0,0,0]` | array |
590
+ | `scale` | `[1,1,1]` | array |
591
+ | `visible` | `true` | boolean |
592
+ | `renderOrder` | `1` | number |
593
+ | `size` | `[40,40]` | array |
594
+ | `color` | `"#2a6fbe"` | string |
595
+ | `opacity` | `0.8` | number |
596
+ | `waveHeight` | `0.04` | number |
597
+ | `waveSpeed` | `1` | number |
598
+ | `quality` | `"fancy"` | one of: `fancy` `simple` |
599
+ | `colors` | `{}` | object |
600
+ | `reflection` | `true` | boolean |
601
+ | `reflectionInterval` | `1000` | number |
602
+ | `foam` | `true` | boolean |
603
+ | `interaction` | `true` | boolean |
604
+ | `splash` | `true` | boolean |
605
+ | `sunDirection` | `[0.5,0.8,0.3]` | array |
606
+ | `sunColor` | `"#fff5d6"` | string |
607
+ | `sunIntensity` | `1` | number |
608
+ | `detailStrength` | `0.26` | number |
609
+ | `absorption` | `0.15` | number |
610
+ | `refraction` | `true` | boolean |
611
+ | `underwater` | `true` | boolean |
612
+
613
+ Signals: `entered(body)` · `exited(body)`
614
+
615
+ ## Gameplay behaviors — `incanto/gameplay`
616
+
617
+ Ready-made `Behavior`s auto-registered by `createGame2D`/`createGame3D` (opt out
618
+ with `gameplay: false`). Attach via `"script": {"name": "...", "props": {...}}` and
619
+ wire their signals through scene `connections`. Full guide: `incanto-gameplay-behaviors.md`.
620
+
621
+ ### `Chase`
622
+
623
+ | Prop | Default | Kind |
624
+ |---|---|---|
625
+ | `target` | `""` | string |
626
+ | `speed` | `60` | number |
627
+ | `stopRange` | `0` | number |
628
+ | `loseRange` | `0` | number |
629
+ | `moveParent` | `false` | boolean |
630
+
631
+ Signals: `reachedTarget` · `lostTarget`
632
+
633
+ ### `Collector`
634
+
635
+ | Prop | Default | Kind |
636
+ |---|---|---|
637
+ | `group` | `"player"` | string |
638
+
639
+ Signals: `totalChanged(total)`
640
+
641
+ ### `DamageOnContact`
642
+
643
+ | Prop | Default | Kind |
644
+ |---|---|---|
645
+ | `amount` | `10` | number |
646
+ | `targetGroup` | `""` | string |
647
+ | `oncePerTarget` | `true` | boolean |
648
+ | `destroySelf` | `false` | boolean |
649
+
650
+ Signals: `dealtDamage(amount, target)`
651
+
652
+ ### `FollowCamera`
653
+
654
+ | Prop | Default | Kind |
655
+ |---|---|---|
656
+ | `target` | `""` | string |
657
+ | `offset` | `[]` | array |
658
+ | `smoothing` | `0` | number |
659
+ | `deadzone` | `0` | number |
660
+
661
+ ### `Health`
662
+
663
+ | Prop | Default | Kind |
664
+ |---|---|---|
665
+ | `max` | `100` | number |
666
+ | `regenPerSec` | `0` | number |
667
+ | `invulnerableFor` | `0` | number |
668
+ | `freeOnDeath` | `false` | boolean |
669
+
670
+ Signals: `damaged(amount, current)` · `healed(amount, current)` · `died`
671
+
672
+ ### `Interactable`
673
+
674
+ | Prop | Default | Kind |
675
+ |---|---|---|
676
+ | `action` | `"interact"` | string |
677
+ | `range` | `2` | number |
678
+ | `actorGroup` | `"player"` | string |
679
+
680
+ Signals: `interacted(actor)`
681
+
682
+ ### `Lifetime`
683
+
684
+ | Prop | Default | Kind |
685
+ |---|---|---|
686
+ | `seconds` | `1` | number |
687
+ | `startOnSignal` | `false` | boolean |
688
+
689
+ Signals: `expired`
690
+
691
+ ### `MoveTo`
692
+
693
+ | Prop | Default | Kind |
694
+ |---|---|---|
695
+ | `to` | `[]` | array |
696
+ | `duration` | `1` | number |
697
+ | `ease` | `"easeInOut"` | one of: `linear` `easeIn` `easeOut` `easeInOut` |
698
+ | `startOnSignal` | `false` | boolean |
699
+
700
+ Signals: `arrived`
701
+
702
+ ### `Oscillate`
703
+
704
+ | Prop | Default | Kind |
705
+ |---|---|---|
706
+ | `axis` | `"y"` | one of: `x` `y` `z` |
707
+ | `amplitude` | `1` | number |
708
+ | `frequency` | `1` | number |
709
+ | `mode` | `"position"` | one of: `position` `rotation` `scale` |
710
+
711
+ ### `Patrol`
712
+
713
+ | Prop | Default | Kind |
714
+ |---|---|---|
715
+ | `points` | `[]` | array |
716
+ | `speed` | `60` | number |
717
+ | `loop` | `true` | boolean |
718
+ | `mode` | `"loop"` | one of: `loop` `pingpong` |
719
+ | `pauseAt` | `0` | number |
720
+
721
+ Signals: `reachedPoint(index)`
722
+
723
+ ### `Pickup`
724
+
725
+ | Prop | Default | Kind |
726
+ |---|---|---|
727
+ | `value` | `1` | number |
728
+ | `kind` | `"coin"` | string |
729
+ | `collectorGroup` | `"player"` | string |
730
+
731
+ Signals: `collected(value, other)`
732
+
733
+ ### `Projectile`
734
+
735
+ | Prop | Default | Kind |
736
+ |---|---|---|
737
+ | `speed` | `300` | number |
738
+ | `direction` | `null` | null |
739
+ | `gravity` | `0` | number |
740
+
741
+ ### `ScoreKeeper`
742
+
743
+ | Prop | Default | Kind |
744
+ |---|---|---|
745
+ | `score` | `0` | number |
746
+ | `lives` | `0` | number |
747
+ | `scoreToWin` | `0` | number |
748
+
749
+ Signals: `scoreChanged(score)` · `won` · `lost` · `lifeLost(lives)`
750
+
751
+ ### `Spawner`
752
+
753
+ | Prop | Default | Kind |
754
+ |---|---|---|
755
+ | `prefab` | `""` | string |
756
+ | `interval` | `1` | number |
757
+ | `max` | `0` | number |
758
+ | `at` | `[]` | array |
759
+ | `autoStart` | `true` | boolean |
760
+ | `total` | `0` | number |
761
+
762
+ Signals: `spawned(node)` · `finished`
763
+
764
+ ### `Wander`
765
+
766
+ | Prop | Default | Kind |
767
+ |---|---|---|
768
+ | `speed` | `40` | number |
769
+ | `radius` | `50` | number |
770
+ | `changeEvery` | `2` | number |
771
+
772
+ ### `WaveSpawner`
773
+
774
+ | Prop | Default | Kind |
775
+ |---|---|---|
776
+ | `waves` | `[]` | array |
777
+ | `autoStart` | `true` | boolean |
778
+
779
+ Signals: `waveStarted(index)` · `waveCleared(index)` · `allCleared`
780
+
781
+ ### `ZombieAI`
782
+
783
+ | Prop | Default | Kind |
784
+ |---|---|---|
785
+ | `aggroTarget` | `""` | string |
786
+ | `aggroRange` | `12` | number |
787
+ | `deAggroRange` | `0` | number |
788
+ | `chaseSpeed` | `4` | number |
789
+ | `wanderSpeed` | `1.4` | number |
790
+ | `wanderRadius` | `8` | number |
791
+ | `wanderChangeEvery` | `3` | number |
792
+ | `goalTarget` | `""` | string |
793
+ | `stopRange` | `1.2` | number |
794
+ | `moveParent` | `false` | boolean |
795
+
796
+ Signals: `enteredAggro` · `exitedAggro` · `movementStateChanged`
797
+