incanto 0.71.0 → 0.73.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 (92) hide show
  1. package/bin/incanto-check.mjs +114 -42
  2. package/bin/incanto-editor.mjs +15 -9
  3. package/bin/incanto-feel.mjs +11 -1
  4. package/bin/incanto-play.mjs +11 -1
  5. package/bin/incanto-playtest.mjs +11 -1
  6. package/bin/incanto-verify.mjs +9 -2
  7. package/dist/2d.d.ts +29 -4
  8. package/dist/2d.js +3 -3
  9. package/dist/3d.d.ts +137 -15
  10. package/dist/3d.js +6 -6
  11. package/dist/{agent8-Cfmd3ar_.js → agent8-CHTT4unP.js} +1 -1
  12. package/dist/{audio-player-L8yccdMP.d.ts → audio-player-BOrk4eQx.d.ts} +1 -1
  13. package/dist/{behavior-Dcz0fr1S.d.ts → behavior-J1cmVah0.d.ts} +9 -1
  14. package/dist/{create-game-LCHBLfA4.js → create-game-CAu-ucHg.js} +8 -7
  15. package/dist/{create-game-CH4kt78v.js → create-game-CbTLFjis.js} +37 -13
  16. package/dist/debug.d.ts +1 -1
  17. package/dist/debug.js +1 -1
  18. package/dist/editor.js +1036 -930
  19. package/dist/{environment-presets-99BzP_L-.js → environment-presets-BsFJM3v0.js} +277 -60
  20. package/dist/{gameplay-CNULJvwh.js → gameplay-CRte0OVf.js} +589 -35
  21. package/dist/gameplay.d.ts +136 -4
  22. package/dist/gameplay.js +2 -2
  23. package/dist/index.d.ts +6 -4
  24. package/dist/index.js +6 -6
  25. package/dist/{loader-8-IHvbKD.d.ts → loader-BAeWMYfF.d.ts} +10 -3
  26. package/dist/net.d.ts +2 -2
  27. package/dist/net.js +2 -2
  28. package/dist/{physics-2d-FhrXUc6B.js → physics-2d-CovokK7s.js} +94 -11
  29. package/dist/{physics-3d-CFEGxBXZ.js → physics-3d-BiK6Emwn.js} +202 -15
  30. package/dist/{picking-DVo7fI13.js → picking-Dtd8JInh.js} +2 -2
  31. package/dist/react.d.ts +1 -1
  32. package/dist/react.js +1 -1
  33. package/dist/{register-BYQCBySi.js → register-CY9QCCZs.js} +45 -9
  34. package/dist/{register-DuVdzxbq.js → register-CjociOtt.js} +19 -4
  35. package/dist/{replay-DEvp3kyV.js → replay-B6BbgGM_.js} +55 -12
  36. package/dist/{replay-F7IZHdFR.d.ts → replay-wZK5Ok5c.d.ts} +2 -2
  37. package/dist/{save-slots-Bvuh2p_r.js → save-slots-CEUGeLuB.js} +57 -3
  38. package/dist/{split-screen-eULetcg-.js → split-screen-BxZ5rBe7.js} +4 -4
  39. package/dist/{split-screen-CIYf1zSf.d.ts → split-screen-D6sx8z3Z.d.ts} +2 -2
  40. package/dist/{sprite-animation-CqR2o3SA.js → sprite-animation-Bz3DHD_4.js} +1 -1
  41. package/dist/{src-_jk0qLsS.js → src-D-dnVrFY.js} +1 -1
  42. package/dist/{test-CmN54kWv.js → test-DZmCFz0Q.js} +162 -30
  43. package/dist/test.d.ts +56 -5
  44. package/dist/test.js +2 -2
  45. package/dist/{touch-BnCyPA0G.js → touch-CioTZB-y.js} +1 -1
  46. package/dist/vite.d.ts +8 -1
  47. package/dist/vite.js +22 -5
  48. package/editor/assets/{agent8-yLIEYHbd.js → agent8-GuZ5u5bi.js} +1 -1
  49. package/editor/assets/{debug-u31w_yhq.js → debug-BbxionO2.js} +1 -1
  50. package/editor/assets/{index-DK9xMGpW.js → index-CNlTzQbm.js} +92 -92
  51. package/editor/index.html +1 -1
  52. package/package.json +1 -1
  53. package/schemas/scene.schema.json +634 -10
  54. package/skills/incanto-3d-character.md +113 -5
  55. package/skills/incanto-assets.md +9 -3
  56. package/skills/incanto-behaviors-and-scripts.md +26 -2
  57. package/skills/incanto-building-2d-games.md +15 -0
  58. package/skills/incanto-building-3d-games.md +45 -0
  59. package/skills/incanto-editor.md +10 -1
  60. package/skills/incanto-environment.md +7 -2
  61. package/skills/incanto-game-feel.md +16 -11
  62. package/skills/incanto-gameplay-behaviors.md +174 -15
  63. package/skills/incanto-node-reference.md +122 -45
  64. package/skills/incanto-physics-and-input.md +67 -5
  65. package/skills/incanto-scene-json-authoring.md +37 -1
  66. package/skills/incanto-verifying-your-game.md +19 -2
  67. package/templates-app/beacon-isle-3d/PROJECT/Status.md +8 -0
  68. package/templates-app/beacon-isle-3d/PROJECT/Structure.md +3 -0
  69. package/templates-app/beacon-isle-3d/package.json +1 -1
  70. package/templates-app/beacon-isle-3d/src/game.scene.json +512 -184
  71. package/templates-app/beacon-isle-3d/verify.ts +144 -0
  72. package/templates-app/molehill-2d/package.json +1 -1
  73. package/templates-app/platformer-2d/PROJECT/Status.md +7 -0
  74. package/templates-app/platformer-2d/PROJECT/Structure.md +3 -0
  75. package/templates-app/platformer-2d/package.json +1 -1
  76. package/templates-app/platformer-2d/src/game.scene.json +319 -93
  77. package/templates-app/platformer-2d/verify.ts +54 -0
  78. package/templates-app/star-survivor/package.json +1 -1
  79. package/templates-app/star-survivor/src/game.scene.json +18 -9
  80. package/templates-app/tps-3d/PROJECT/Context.md +1 -1
  81. package/templates-app/tps-3d/PROJECT/Status.md +40 -1
  82. package/templates-app/tps-3d/PROJECT/Structure.md +19 -0
  83. package/templates-app/tps-3d/package.json +1 -1
  84. package/templates-app/tps-3d/src/behaviors.ts +9 -0
  85. package/templates-app/tps-3d/src/cover.scene.json +26 -0
  86. package/templates-app/tps-3d/src/game.scene.json +379 -80
  87. package/templates-app/tps-3d/src/main.ts +14 -0
  88. package/templates-app/tps-3d/src/pillar.scene.json +25 -0
  89. package/templates-app/tps-3d/verify.ts +582 -3
  90. package/templates-app/village-quest-3d/package.json +1 -1
  91. package/templates-app/village-quest-3d/src/grove.scene.json +98 -46
  92. package/templates-app/village-quest-3d/src/village.scene.json +449 -223
@@ -60,6 +60,10 @@
60
60
  "anims/jump": {
61
61
  "type": "animation",
62
62
  "url": "https://agent8-games.verse8.io/assets/3d/animations/mixamorig/jump.glb"
63
+ },
64
+ "anims/shoot": {
65
+ "type": "animation",
66
+ "url": "https://agent8-games.verse8.io/assets/3d/animations/mixamorig/shoot.glb"
63
67
  }
64
68
  },
65
69
  "root": {
@@ -93,9 +97,11 @@
93
97
  "size": [48, 0.1, 48],
94
98
  "material": { "color": "#3a4253", "roughness": 1 },
95
99
  "receiveShadow": true
96
- }
100
+ },
101
+ "uid": "n_fhrx2w1swdg4aouk"
97
102
  }
98
- ]
103
+ ],
104
+ "uid": "n_a9g237qshrv6q3zr"
99
105
  },
100
106
  {
101
107
  "name": "Wall1",
@@ -113,9 +119,11 @@
113
119
  "size": [49, 3, 0.5],
114
120
  "material": { "color": "#4a5468", "roughness": 0.9 },
115
121
  "receiveShadow": true
116
- }
122
+ },
123
+ "uid": "n_7zgr4tm46gypk29z"
117
124
  }
118
- ]
125
+ ],
126
+ "uid": "n_dva41ykintj4ckoz"
119
127
  },
120
128
  {
121
129
  "name": "Wall2",
@@ -133,9 +141,11 @@
133
141
  "size": [49, 3, 0.5],
134
142
  "material": { "color": "#4a5468", "roughness": 0.9 },
135
143
  "receiveShadow": true
136
- }
144
+ },
145
+ "uid": "n_m70mrkagrg1igwdk"
137
146
  }
138
- ]
147
+ ],
148
+ "uid": "n_9gan2h8arfads6nj"
139
149
  },
140
150
  {
141
151
  "name": "Wall3",
@@ -153,9 +163,11 @@
153
163
  "size": [0.5, 3, 48],
154
164
  "material": { "color": "#4a5468", "roughness": 0.9 },
155
165
  "receiveShadow": true
156
- }
166
+ },
167
+ "uid": "n_i5eorlm18c6o3x10"
157
168
  }
158
- ]
169
+ ],
170
+ "uid": "n_pibc3l5f1peblsvr"
159
171
  },
160
172
  {
161
173
  "name": "Wall4",
@@ -173,16 +185,42 @@
173
185
  "size": [0.5, 3, 48],
174
186
  "material": { "color": "#4a5468", "roughness": 0.9 },
175
187
  "receiveShadow": true
176
- }
188
+ },
189
+ "uid": "n_w7s4c7cv69pfnbk7"
177
190
  }
178
- ]
191
+ ],
192
+ "uid": "n_4lh2uesc09jprpaf"
179
193
  },
180
194
  {
181
195
  "name": "Cover1",
196
+ "instance": "cover.scene.json",
197
+ "overrides": { "position": [-8, 0.6, -8] },
198
+ "uid": "n_wrzlr0jqbyxh7m11"
199
+ },
200
+ {
201
+ "name": "Cover2",
202
+ "instance": "cover.scene.json",
203
+ "overrides": { "position": [8, 0.6, -8] },
204
+ "uid": "n_6ailumev172o037a"
205
+ },
206
+ {
207
+ "name": "Pillar1",
208
+ "instance": "pillar.scene.json",
209
+ "overrides": { "position": [-14, 2, 6] },
210
+ "uid": "n_xeh6r9631usk2i6w"
211
+ },
212
+ {
213
+ "name": "Pillar2",
214
+ "instance": "pillar.scene.json",
215
+ "overrides": { "position": [14, 2, 6] },
216
+ "uid": "n_7ksm42z50jbh13np"
217
+ },
218
+ {
219
+ "name": "Ramp",
182
220
  "type": "StaticBody3D",
183
221
  "props": {
184
- "collider": { "shape": "box", "size": [2, 1.2, 2] },
185
- "position": [-8, 0.6, -8]
222
+ "collider": { "shape": "box", "size": [5, 0.6, 3] },
223
+ "position": [0, 0.3, -14]
186
224
  },
187
225
  "children": [
188
226
  {
@@ -190,113 +228,327 @@
190
228
  "type": "MeshInstance3D",
191
229
  "props": {
192
230
  "mesh": "box",
193
- "size": [2, 1.2, 2],
194
- "material": { "color": "#5b6678", "roughness": 0.85, "metalness": 0.1 },
231
+ "size": [5, 0.6, 3],
232
+ "material": { "color": "#5b6678", "roughness": 0.85 },
195
233
  "castShadow": true,
196
234
  "receiveShadow": true
235
+ },
236
+ "uid": "n_fgwyll0y26mldnum"
237
+ }
238
+ ],
239
+ "uid": "n_3jp7mtbnbx0rhv29"
240
+ },
241
+ {
242
+ "name": "Sun",
243
+ "type": "DirectionalLight3D",
244
+ "props": {
245
+ "position": [38, 70, 28],
246
+ "intensity": 2,
247
+ "castShadow": true,
248
+ "shadowArea": 58,
249
+ "shadowMapSize": 2048
250
+ },
251
+ "uid": "n_23zij3jcjcb72y70"
252
+ },
253
+ {
254
+ "name": "FillLight",
255
+ "type": "DirectionalLight3D",
256
+ "props": { "position": [-38, 36, -28], "intensity": 0.4, "color": "#b9d4ff" },
257
+ "uid": "n_28u31t86eb8xnyjc"
258
+ },
259
+ {
260
+ "name": "Curb",
261
+ "type": "StaticBody3D",
262
+ "uid": "n_m7pib5xw39k54m05",
263
+ "props": {
264
+ "position": [6, 0.15, -12],
265
+ "collider": { "shape": "box", "size": [1, 0.3, 3] }
266
+ },
267
+ "children": [
268
+ {
269
+ "name": "Skin",
270
+ "type": "MeshInstance3D",
271
+ "uid": "n_rt7knp3ltzhzozar",
272
+ "props": {
273
+ "mesh": "box",
274
+ "size": [1, 0.3, 3],
275
+ "castShadow": true,
276
+ "receiveShadow": true,
277
+ "material": { "color": "#8a8f98", "roughness": 0.9 }
197
278
  }
198
279
  }
199
280
  ]
200
281
  },
201
282
  {
202
- "name": "Cover2",
283
+ "name": "Ledge",
203
284
  "type": "StaticBody3D",
285
+ "uid": "n_yic221rb7bf3dqlp",
204
286
  "props": {
205
- "collider": { "shape": "box", "size": [2, 1.2, 2] },
206
- "position": [8, 0.6, -8]
287
+ "position": [-6, 0.45, -12],
288
+ "collider": { "shape": "box", "size": [1, 0.9, 3] }
207
289
  },
208
290
  "children": [
209
291
  {
210
292
  "name": "Skin",
211
293
  "type": "MeshInstance3D",
294
+ "uid": "n_h0518v6sh56dkggp",
212
295
  "props": {
213
296
  "mesh": "box",
214
- "size": [2, 1.2, 2],
215
- "material": { "color": "#5b6678", "roughness": 0.85, "metalness": 0.1 },
297
+ "size": [1, 0.9, 3],
216
298
  "castShadow": true,
217
- "receiveShadow": true
299
+ "receiveShadow": true,
300
+ "material": { "color": "#6b7078", "roughness": 0.9 }
218
301
  }
219
302
  }
220
303
  ]
221
304
  },
222
305
  {
223
- "name": "Pillar1",
306
+ "name": "Hill",
224
307
  "type": "StaticBody3D",
308
+ "uid": "n_d0fkn4oeipz3zeqs",
225
309
  "props": {
226
- "collider": { "shape": "box", "size": [1.1, 4, 1.1] },
227
- "position": [-14, 2, 6]
310
+ "position": [10, 1.286, -20],
311
+ "collider": { "shape": "box", "size": [4, 0.3, 3] },
312
+ "rotation": [0, 0, 40]
228
313
  },
229
314
  "children": [
230
315
  {
231
316
  "name": "Skin",
232
317
  "type": "MeshInstance3D",
318
+ "uid": "n_9ee5kmwfusu9g3qy",
233
319
  "props": {
234
320
  "mesh": "box",
235
- "size": [1.1, 4, 1.1],
236
- "material": { "color": "#454f61", "roughness": 0.95 },
237
- "castShadow": true
321
+ "size": [4, 0.3, 3],
322
+ "castShadow": true,
323
+ "receiveShadow": true,
324
+ "material": { "color": "#7a8a5a", "roughness": 0.9 }
238
325
  }
239
326
  }
240
327
  ]
241
328
  },
242
329
  {
243
- "name": "Pillar2",
330
+ "name": "HillTop",
244
331
  "type": "StaticBody3D",
332
+ "uid": "n_glh0dpbpa5i8izg3",
245
333
  "props": {
246
- "collider": { "shape": "box", "size": [1.1, 4, 1.1] },
247
- "position": [14, 2, 6]
334
+ "position": [13.032, 1.286, -20],
335
+ "collider": { "shape": "box", "size": [3, 2.571, 3] }
248
336
  },
249
337
  "children": [
250
338
  {
251
339
  "name": "Skin",
252
340
  "type": "MeshInstance3D",
341
+ "uid": "n_5283g7n7zukt91tz",
253
342
  "props": {
254
343
  "mesh": "box",
255
- "size": [1.1, 4, 1.1],
256
- "material": { "color": "#454f61", "roughness": 0.95 },
257
- "castShadow": true
344
+ "size": [3, 2.571, 3],
345
+ "castShadow": true,
346
+ "receiveShadow": true,
347
+ "material": { "color": "#7a8a5a", "roughness": 0.9 }
258
348
  }
259
349
  }
260
350
  ]
261
351
  },
262
352
  {
263
- "name": "Ramp",
353
+ "name": "Cliff",
264
354
  "type": "StaticBody3D",
355
+ "uid": "n_khek9wvhy0l8ks8r",
265
356
  "props": {
266
- "collider": { "shape": "box", "size": [5, 0.6, 3] },
267
- "position": [0, 0.3, -14]
357
+ "position": [18, 1.879, -20],
358
+ "collider": { "shape": "box", "size": [4, 0.3, 3] },
359
+ "rotation": [0, 0, 70]
268
360
  },
269
361
  "children": [
270
362
  {
271
363
  "name": "Skin",
272
364
  "type": "MeshInstance3D",
365
+ "uid": "n_1px010aspvz8bjlo",
273
366
  "props": {
274
367
  "mesh": "box",
275
- "size": [5, 0.6, 3],
276
- "material": { "color": "#5b6678", "roughness": 0.85 },
368
+ "size": [4, 0.3, 3],
277
369
  "castShadow": true,
278
- "receiveShadow": true
370
+ "receiveShadow": true,
371
+ "material": { "color": "#5a5a66", "roughness": 0.9 }
279
372
  }
280
373
  }
281
374
  ]
282
375
  },
283
376
  {
284
- "name": "Sun",
285
- "type": "DirectionalLight3D",
377
+ "name": "CliffTop",
378
+ "type": "StaticBody3D",
379
+ "uid": "n_z257x74mbjjdrhjg",
286
380
  "props": {
287
- "position": [38, 70, 28],
288
- "intensity": 2,
289
- "castShadow": true,
290
- "shadowArea": 58,
291
- "shadowMapSize": 2048
292
- }
381
+ "position": [20.184, 1.879, -20],
382
+ "collider": { "shape": "box", "size": [3, 3.759, 3] }
383
+ },
384
+ "children": [
385
+ {
386
+ "name": "Skin",
387
+ "type": "MeshInstance3D",
388
+ "uid": "n_q5lamsioudv2pvos",
389
+ "props": {
390
+ "mesh": "box",
391
+ "size": [3, 3.759, 3],
392
+ "castShadow": true,
393
+ "receiveShadow": true,
394
+ "material": { "color": "#5a5a66", "roughness": 0.9 }
395
+ }
396
+ }
397
+ ]
293
398
  },
294
399
  {
295
- "name": "FillLight",
296
- "type": "DirectionalLight3D",
297
- "props": { "position": [-38, 36, -28], "intensity": 0.4, "color": "#b9d4ff" }
400
+ "name": "Lift",
401
+ "type": "StaticBody3D",
402
+ "uid": "n_dof21x23423au6ry",
403
+ "props": {
404
+ "position": [-18, 0.3, -20],
405
+ "collider": { "shape": "box", "size": [3, 0.6, 3] }
406
+ },
407
+ "script": {
408
+ "name": "Patrol",
409
+ "props": {
410
+ "points": [[-18, 0.3, -20], [-10, 0.3, -20]],
411
+ "speed": 2,
412
+ "mode": "pingpong",
413
+ "facePath": "Skin",
414
+ "turnSpeed": 2
415
+ }
416
+ },
417
+ "children": [
418
+ {
419
+ "name": "Skin",
420
+ "type": "MeshInstance3D",
421
+ "uid": "n_7fz2e5w5tg0dww78",
422
+ "props": {
423
+ "mesh": "box",
424
+ "size": [3, 0.6, 3],
425
+ "castShadow": true,
426
+ "receiveShadow": true,
427
+ "material": { "color": "#b08a4a", "roughness": 0.8 }
428
+ }
429
+ }
430
+ ]
431
+ },
432
+ {
433
+ "name": "Mortar",
434
+ "type": "Node3D",
435
+ "uid": "n_i8b5hrnspxz4ayz8",
436
+ "props": { "position": [-20, 0.5, 20] },
437
+ "script": {
438
+ "name": "Spawner",
439
+ "props": {
440
+ "prefab": "Shell",
441
+ "interval": 1,
442
+ "max": 4,
443
+ "at": [0, 1, 0],
444
+ "autoStart": false
445
+ }
446
+ },
447
+ "children": [
448
+ {
449
+ "name": "Skin",
450
+ "type": "MeshInstance3D",
451
+ "uid": "n_hfpshodulxhpuojh",
452
+ "props": {
453
+ "mesh": "box",
454
+ "size": [0.8, 1, 0.8],
455
+ "castShadow": true,
456
+ "material": { "color": "#4b5563", "roughness": 0.9 }
457
+ }
458
+ },
459
+ {
460
+ "name": "Shell",
461
+ "type": "Node3D",
462
+ "uid": "n_izn5k1gxwrolcoi7",
463
+ "props": { "visible": false },
464
+ "script": {
465
+ "name": "Projectile",
466
+ "props": { "speed": 8, "direction": [0.8, 0.6, 0], "gravity": 9.81 }
467
+ },
468
+ "children": [
469
+ {
470
+ "name": "Skin",
471
+ "type": "MeshInstance3D",
472
+ "uid": "n_s0naouowv8dl2qtv",
473
+ "props": {
474
+ "mesh": "sphere",
475
+ "size": [0.15, 0.15, 0.15],
476
+ "material": {
477
+ "color": "#f97316",
478
+ "emissive": "#f97316",
479
+ "emissiveIntensity": 0.8
480
+ }
481
+ }
482
+ },
483
+ {
484
+ "name": "Life",
485
+ "type": "Node3D",
486
+ "uid": "n_silxb3jtl0ymj60m",
487
+ "script": { "name": "Lifetime", "props": { "seconds": 3, "freeParent": true } }
488
+ }
489
+ ]
490
+ }
491
+ ]
492
+ },
493
+ {
494
+ "name": "Mine",
495
+ "type": "Node3D",
496
+ "uid": "n_k7e92pmsstpjdwnz",
497
+ "props": { "position": [20, 0.5, 20] },
498
+ "script": { "name": "Lifetime", "props": { "seconds": 1.5, "startOnSignal": true } },
499
+ "children": [
500
+ {
501
+ "name": "Skin",
502
+ "type": "MeshInstance3D",
503
+ "uid": "n_cnf1w18yth1dqgdk",
504
+ "props": {
505
+ "mesh": "cylinder",
506
+ "size": [0.35, 0.2, 0.35],
507
+ "castShadow": true,
508
+ "material": { "color": "#dc2626", "roughness": 0.5 }
509
+ }
510
+ },
511
+ {
512
+ "name": "Trigger",
513
+ "type": "Area3D",
514
+ "uid": "n_oiuomj18rhutetd5",
515
+ "props": { "collider": { "shape": "sphere", "radius": 1 } }
516
+ }
517
+ ]
518
+ },
519
+ {
520
+ "name": "Bait",
521
+ "type": "Area3D",
522
+ "uid": "n_aogqugzbj5id2h6o",
523
+ "groups": ["pickup"],
524
+ "props": {
525
+ "position": [21, 0.5, 12],
526
+ "collider": { "shape": "sphere", "radius": 0.8 }
527
+ },
528
+ "script": {
529
+ "name": "Pickup",
530
+ "props": { "value": 1, "kind": "bait", "collectorGroup": "enemy" }
531
+ },
532
+ "children": [
533
+ {
534
+ "name": "Skin",
535
+ "type": "MeshInstance3D",
536
+ "uid": "n_b406hxmbano9gtyh",
537
+ "props": {
538
+ "mesh": "sphere",
539
+ "size": [0.25, 0.25, 0.25],
540
+ "castShadow": true,
541
+ "material": {
542
+ "color": "#22c55e",
543
+ "emissive": "#22c55e",
544
+ "emissiveIntensity": 0.5
545
+ }
546
+ }
547
+ }
548
+ ]
298
549
  }
299
- ]
550
+ ],
551
+ "uid": "n_9yavlr08c9026im9"
300
552
  },
301
553
  {
302
554
  "name": "Player",
@@ -322,7 +574,15 @@
322
574
  "pitchMin": -0.5,
323
575
  "pitchMax": 1.1,
324
576
  "coyoteSeconds": 0.12,
325
- "jumpBufferSeconds": 0.15
577
+ "jumpBufferSeconds": 0.15,
578
+ "jumpCutMultiplier": 0.45,
579
+ "maxJumps": 2,
580
+ "airControl": 0.5,
581
+ "fallGravity": 3,
582
+ "stepHeight": 0.4,
583
+ "jumpVelocity": 5,
584
+ "cameraCollision": true,
585
+ "platformCarry": true
326
586
  },
327
587
  "script": { "name": "Shoot" },
328
588
  "uid": "n_ltyrn17s5l9tizgp"
@@ -336,7 +596,8 @@
336
596
  "animation": "$anims/idle",
337
597
  "castShadow": true,
338
598
  "position": [0, -0.85, 0]
339
- }
599
+ },
600
+ "uid": "n_sirva2bpp1i01f1u"
340
601
  },
341
602
  {
342
603
  "name": "Muzzle",
@@ -352,7 +613,8 @@
352
613
  "spatial": true,
353
614
  "refDistance": 3,
354
615
  "maxDistance": 50
355
- }
616
+ },
617
+ "uid": "n_r6cpq75vhtxu4q18"
356
618
  },
357
619
  {
358
620
  "name": "KillSfx",
@@ -363,29 +625,40 @@
363
625
  "spatial": true,
364
626
  "refDistance": 4,
365
627
  "maxDistance": 60
366
- }
628
+ },
629
+ "uid": "n_fw07t0wpfd7wwtrb"
367
630
  },
368
631
  {
369
632
  "name": "EmptySfx",
370
633
  "type": "AudioPlayer",
371
- "props": { "preset": "blip", "volume": 0.4, "pitch": 0.7 }
634
+ "props": { "preset": "blip", "volume": 0.4, "pitch": 0.7 },
635
+ "uid": "n_0vtkipp7h0so4mx2"
372
636
  },
373
637
  {
374
638
  "name": "Flash",
375
639
  "type": "OmniLight3D",
376
- "props": { "color": "#ffd27f", "intensity": 0, "range": 7 }
640
+ "props": { "color": "#ffd27f", "intensity": 0, "range": 7 },
641
+ "uid": "n_s3033w4bwtacojs1"
377
642
  }
378
- ]
379
- }
643
+ ],
644
+ "uid": "n_jstha9c29p0dlioy"
645
+ },
646
+ { "name": "Catch", "type": "Respawn", "uid": "n_ygw9hloc5vihrr6l" }
380
647
  ],
381
648
  "uid": "n_nx7dsn65lts2arru"
382
649
  },
383
650
  {
384
651
  "name": "Camera",
385
652
  "type": "Camera3D",
386
- "props": { "position": [0, 2.6, 23], "fov": 70, "current": true, "far": 400 }
653
+ "props": { "position": [0, 2.6, 23], "fov": 70, "current": true, "far": 400 },
654
+ "uid": "n_fldx3xcpdr27y1a3"
655
+ },
656
+ {
657
+ "name": "HurtSfx",
658
+ "type": "AudioPlayer",
659
+ "props": { "preset": "hurt", "volume": 0.6 },
660
+ "uid": "n_oz5kawq52q4wmece"
387
661
  },
388
- { "name": "HurtSfx", "type": "AudioPlayer", "props": { "preset": "hurt", "volume": 0.6 } },
389
662
  {
390
663
  "name": "Spawner",
391
664
  "type": "Node3D",
@@ -408,7 +681,10 @@
408
681
  "props": {
409
682
  "position": [0, 0.95, -20],
410
683
  "visible": false,
411
- "collider": { "shape": "capsule", "radius": 0.4, "height": 1.1 }
684
+ "collider": { "shape": "capsule", "radius": 0.4, "height": 1.1 },
685
+ "slopeLimitDeg": 50,
686
+ "stickToGround": true,
687
+ "stepHeight": 0.7
412
688
  },
413
689
  "script": { "name": "Health", "props": { "max": 30, "freeOnDeath": true } },
414
690
  "children": [
@@ -425,17 +701,25 @@
425
701
  "emissiveIntensity": 0.4
426
702
  },
427
703
  "castShadow": true
428
- }
429
- },
430
- {
431
- "name": "Eye",
432
- "type": "MeshInstance3D",
433
- "props": {
434
- "mesh": "sphere",
435
- "size": [0.12, 0.12, 0.12],
436
- "position": [0, 0.55, 0.32],
437
- "material": { "color": "#ffec5c", "emissive": "#ffd000", "emissiveIntensity": 2 }
438
- }
704
+ },
705
+ "uid": "n_cn4tjqgi2tk2t724",
706
+ "children": [
707
+ {
708
+ "name": "Eye",
709
+ "type": "MeshInstance3D",
710
+ "props": {
711
+ "mesh": "sphere",
712
+ "size": [0.12, 0.12, 0.12],
713
+ "position": [0, 0.55, 0.32],
714
+ "material": {
715
+ "color": "#ffec5c",
716
+ "emissive": "#ffd000",
717
+ "emissiveIntensity": 2
718
+ }
719
+ },
720
+ "uid": "n_xjsfyhxuxp0wkse1"
721
+ }
722
+ ]
439
723
  },
440
724
  {
441
725
  "name": "AI",
@@ -446,7 +730,9 @@
446
730
  "target": "/root/Player",
447
731
  "speed": 2.6,
448
732
  "stopRange": 1.8,
449
- "moveParent": true
733
+ "moveParent": true,
734
+ "facePath": "../Skin",
735
+ "turnSpeed": 3
450
736
  }
451
737
  },
452
738
  "uid": "n_9qza6f0diwm3b24n"
@@ -479,7 +765,8 @@
479
765
  "maxDistance": 35,
480
766
  "rolloff": "inverse",
481
767
  "pitch": 0.6
482
- }
768
+ },
769
+ "uid": "n_jznb5aprs78r1qs0"
483
770
  }
484
771
  ],
485
772
  "uid": "n_17sotvbult7pgelw"
@@ -497,7 +784,8 @@
497
784
  "area": [44, 44],
498
785
  "seed": 17,
499
786
  "height": 6
500
- }
787
+ },
788
+ "uid": "n_ttfovkru8078togk"
501
789
  },
502
790
  {
503
791
  "name": "Hud",
@@ -517,7 +805,8 @@
517
805
  {
518
806
  "name": "PausedTitle",
519
807
  "type": "UiText",
520
- "props": { "text": "Paused", "size": 24 }
808
+ "props": { "text": "Paused", "size": 24 },
809
+ "uid": "n_ffjlx3r053emjjhc"
521
810
  },
522
811
  {
523
812
  "name": "ResumeHint",
@@ -526,16 +815,19 @@
526
815
  "text": "Esc to resume · Enter to restart",
527
816
  "size": 13,
528
817
  "color": "#c9d2dd"
529
- }
818
+ },
819
+ "uid": "n_atxlw44pqdn146zj"
530
820
  },
531
821
  { "name": "Volume", "type": "UiVolumeSlider", "uid": "n_5p4124fbnjxx8s0c" },
532
822
  { "name": "Mute", "type": "UiMuteToggle", "uid": "n_e1lyn3mvsy3vj2qr" },
533
823
  { "name": "Quality", "type": "UiQualitySelect", "uid": "n_35r1h71i75yft3ex" },
534
824
  { "name": "RenderScale", "type": "UiRenderScaleSelect", "uid": "n_emg840df89fqsriw" },
535
825
  { "name": "FrameCap", "type": "UiFrameCapSelect", "uid": "n_mgqwgghn0bx900ip" }
536
- ]
826
+ ],
827
+ "uid": "n_8bcregfz1ajwi03l"
537
828
  }
538
- ]
829
+ ],
830
+ "uid": "n_dimifr19c9et8cr4"
539
831
  }
540
832
  ],
541
833
  "uid": "n_h46qaejxdqadqc1c"
@@ -544,6 +836,13 @@
544
836
  { "signal": "died", "from": "Player", "to": "/root", "handler": "loseLife" },
545
837
  { "signal": "lifeLost", "from": "/root", "to": "Player", "handler": "reviveFull" },
546
838
  { "signal": "damaged", "from": "Player", "to": "HurtSfx", "handler": "play" },
547
- { "signal": "allCleared", "from": "Spawner", "to": "Hud", "handler": "onAllCleared" }
839
+ { "signal": "allCleared", "from": "Spawner", "to": "Hud", "handler": "onAllCleared" },
840
+ {
841
+ "signal": "triggerEnter",
842
+ "from": "Arena/Mine/Trigger",
843
+ "to": "Arena/Mine",
844
+ "handler": "startTimer",
845
+ "filter": { "group": "player" }
846
+ }
548
847
  ]
549
848
  }