incanto 0.11.0 → 0.13.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 (83) hide show
  1. package/README.md +22 -0
  2. package/bin/incanto-new.mjs +87 -0
  3. package/dist/2d.d.ts +2 -2
  4. package/dist/2d.js +3 -3
  5. package/dist/3d.d.ts +246 -71
  6. package/dist/3d.js +143 -4
  7. package/dist/{behavior-Bod1AyJS.d.ts → behavior-CPibUfnH.d.ts} +4 -2
  8. package/dist/{create-game-CdWhP6ve.js → create-game-Ct86zczq.js} +5 -5
  9. package/dist/{create-game-DZ_4Nfq8.js → create-game-J6g4QInv.js} +75 -24
  10. package/dist/debug.d.ts +1 -1
  11. package/dist/{duplicate-BEvGBtb_.js → duplicate-BINwP0WG.js} +1 -1
  12. package/dist/{gameplay-Dn3yidJw.js → gameplay-sSqrUcnz.js} +75 -3
  13. package/dist/gameplay.d.ts +37 -2
  14. package/dist/gameplay.js +2 -2
  15. package/dist/index.d.ts +3 -30
  16. package/dist/index.js +4 -4
  17. package/dist/{loader-B4OEXDZ8.js → loader-BZqOKfI2.js} +3 -1
  18. package/dist/{loader-BcUDfNHn.d.ts → loader-DILt9PGC.d.ts} +1 -1
  19. package/dist/net.d.ts +1 -1
  20. package/dist/net.js +3 -3
  21. package/dist/{audio-player-Dyjg5k92.d.ts → pathfinding-RWYkNKx9.d.ts} +29 -2
  22. package/dist/{physics-2d-DweTURFt.js → physics-2d-BiIdl51r.js} +8 -4
  23. package/dist/{physics-3d-Br97Ans2.js → physics-3d-DhaAaKJo.js} +8 -4
  24. package/dist/react.d.ts +1 -1
  25. package/dist/react.js +1 -1
  26. package/dist/{register-Cwc-yCYx.js → register-BFFE1Mh1.js} +2 -2
  27. package/dist/{register-ysLR3WQS.js → register-BFw4c83z.js} +508 -123
  28. package/dist/{register-BD6zgrv_.js → register-Djwckzgx.js} +2 -2
  29. package/dist/{register-DJZXxwAn.js → register-nObreUQR.js} +1 -1
  30. package/dist/test.d.ts +2 -2
  31. package/dist/test.js +10 -10
  32. package/editor/assets/{agent8-BxNvAcLA.js → agent8-BF8Jfbkl.js} +1 -1
  33. package/editor/assets/{index-DMCQXowF.js → index-DSq0gdhE.js} +53 -41
  34. package/editor/index.html +1 -1
  35. package/package.json +4 -2
  36. package/schemas/scene.schema.json +263 -0
  37. package/skills/incanto-3d-character.md +37 -1
  38. package/skills/incanto-building-3d-games.md +83 -0
  39. package/skills/incanto-editor.md +3 -3
  40. package/skills/incanto-gameplay-behaviors.md +23 -1
  41. package/skills/incanto-node-reference.md +51 -0
  42. package/templates-app/beacon-isle-3d/PROJECT/Context.md +44 -0
  43. package/templates-app/beacon-isle-3d/PROJECT/Requirements.md +16 -0
  44. package/templates-app/beacon-isle-3d/PROJECT/Status.md +38 -0
  45. package/templates-app/beacon-isle-3d/PROJECT/Structure.md +24 -0
  46. package/templates-app/beacon-isle-3d/docs/project-3d-rules.md +38 -0
  47. package/templates-app/beacon-isle-3d/generate-world.ts +814 -0
  48. package/templates-app/beacon-isle-3d/index.html +68 -0
  49. package/templates-app/beacon-isle-3d/package.json +26 -0
  50. package/templates-app/beacon-isle-3d/src/behaviors.ts +570 -0
  51. package/templates-app/beacon-isle-3d/src/game.scene.json +2992 -0
  52. package/templates-app/beacon-isle-3d/src/main.ts +33 -0
  53. package/templates-app/beacon-isle-3d/tsconfig.json +13 -0
  54. package/templates-app/beacon-isle-3d/verify.ts +285 -0
  55. package/templates-app/beacon-isle-3d/vite.config.ts +5 -0
  56. package/templates-app/tps-3d/PROJECT/Context.md +49 -0
  57. package/templates-app/tps-3d/PROJECT/Requirements.md +38 -0
  58. package/templates-app/tps-3d/PROJECT/Status.md +41 -0
  59. package/templates-app/tps-3d/PROJECT/Structure.md +44 -0
  60. package/templates-app/tps-3d/docs/project-3d-rules.md +38 -0
  61. package/templates-app/tps-3d/index.html +244 -0
  62. package/templates-app/tps-3d/package.json +25 -0
  63. package/templates-app/tps-3d/src/behaviors.ts +405 -0
  64. package/templates-app/tps-3d/src/game.scene.json +677 -0
  65. package/templates-app/tps-3d/src/main.ts +64 -0
  66. package/templates-app/tps-3d/tsconfig.json +13 -0
  67. package/templates-app/tps-3d/verify.ts +167 -0
  68. package/templates-app/tps-3d/vite.config.ts +5 -0
  69. package/templates-app/village-quest-3d/PROJECT/Context.md +39 -0
  70. package/templates-app/village-quest-3d/PROJECT/Requirements.md +36 -0
  71. package/templates-app/village-quest-3d/PROJECT/Status.md +26 -0
  72. package/templates-app/village-quest-3d/PROJECT/Structure.md +30 -0
  73. package/templates-app/village-quest-3d/docs/project-3d-rules.md +38 -0
  74. package/templates-app/village-quest-3d/index.html +68 -0
  75. package/templates-app/village-quest-3d/package.json +25 -0
  76. package/templates-app/village-quest-3d/src/behaviors.ts +529 -0
  77. package/templates-app/village-quest-3d/src/grove.scene.json +826 -0
  78. package/templates-app/village-quest-3d/src/main.ts +35 -0
  79. package/templates-app/village-quest-3d/src/quest.ts +18 -0
  80. package/templates-app/village-quest-3d/src/village.scene.json +680 -0
  81. package/templates-app/village-quest-3d/tsconfig.json +13 -0
  82. package/templates-app/village-quest-3d/verify.ts +254 -0
  83. package/templates-app/village-quest-3d/vite.config.ts +5 -0
@@ -0,0 +1,826 @@
1
+ {
2
+ "format": 1,
3
+ "type": "scene",
4
+ "dimension": "3d",
5
+ "name": "WolfGrove",
6
+ "environment": {
7
+ "sky": {
8
+ "type": "atmosphere",
9
+ "elevationDeg": 14,
10
+ "azimuthDeg": 230,
11
+ "turbidity": 5,
12
+ "rayleigh": 3.2
13
+ },
14
+ "fog": {
15
+ "near": 20,
16
+ "far": 80
17
+ },
18
+ "shadows": {
19
+ "mapSize": 2048
20
+ },
21
+ "exposure": 1.0,
22
+ "ambient": {
23
+ "color": "#a8b4e0",
24
+ "intensity": 0.95
25
+ },
26
+ "iblIntensity": 0.85,
27
+ "background": "#141322",
28
+ "post": {
29
+ "vignette": 0.34,
30
+ "saturation": 0.88,
31
+ "contrast": 1.05
32
+ },
33
+ "bloom": {
34
+ "threshold": 0.85,
35
+ "strength": 0.5
36
+ }
37
+ },
38
+ "physics": {
39
+ "gravity": [0, -9.81, 0]
40
+ },
41
+ "input": {
42
+ "move": {
43
+ "type": "vector2",
44
+ "keys": {
45
+ "up": ["KeyW", "ArrowUp"],
46
+ "down": ["KeyS", "ArrowDown"],
47
+ "left": ["KeyA", "ArrowLeft"],
48
+ "right": ["KeyD", "ArrowRight"]
49
+ }
50
+ },
51
+ "jump": {
52
+ "type": "button",
53
+ "keys": ["Space"]
54
+ },
55
+ "sprint": {
56
+ "type": "button",
57
+ "keys": ["ShiftLeft", "ShiftRight"]
58
+ },
59
+ "interact": {
60
+ "type": "button",
61
+ "keys": ["KeyE"]
62
+ },
63
+ "attack": {
64
+ "type": "button",
65
+ "keys": ["Mouse0", "KeyF"]
66
+ },
67
+ "restart": {
68
+ "type": "button",
69
+ "keys": ["KeyR"]
70
+ }
71
+ },
72
+ "assets": {
73
+ "characters/base": {
74
+ "type": "model",
75
+ "url": "https://agent8-games.verse8.io/assets/3d/characters/realistic style/base-model.glb"
76
+ },
77
+ "anims/idle": {
78
+ "type": "animation",
79
+ "url": "https://agent8-games.verse8.io/assets/3d/animations/mixamorig/idle-00.glb"
80
+ },
81
+ "anims/walk": {
82
+ "type": "animation",
83
+ "url": "https://agent8-games.verse8.io/assets/3d/animations/mixamorig/walk.glb"
84
+ },
85
+ "anims/run": {
86
+ "type": "animation",
87
+ "url": "https://agent8-games.verse8.io/assets/3d/animations/mixamorig/run-medium.glb"
88
+ },
89
+ "anims/runFast": {
90
+ "type": "animation",
91
+ "url": "https://agent8-games.verse8.io/assets/3d/animations/mixamorig/run-fast.glb"
92
+ },
93
+ "anims/jump": {
94
+ "type": "animation",
95
+ "url": "https://agent8-games.verse8.io/assets/3d/animations/mixamorig/jump.glb"
96
+ },
97
+ "anims/attack": {
98
+ "type": "animation",
99
+ "url": "https://agent8-games.verse8.io/assets/3d/animations/mixamorig/melee-attack.glb"
100
+ }
101
+ },
102
+ "root": {
103
+ "name": "Game",
104
+ "type": "Node",
105
+ "script": {
106
+ "name": "GroveDirector"
107
+ },
108
+ "children": [
109
+ {
110
+ "name": "Ground",
111
+ "type": "StaticBody3D",
112
+ "props": {
113
+ "collider": {
114
+ "shape": "box",
115
+ "size": [40, 0.1, 32]
116
+ },
117
+ "position": [0, -0.05, 0]
118
+ },
119
+ "children": [
120
+ {
121
+ "name": "Moss",
122
+ "type": "MeshInstance3D",
123
+ "props": {
124
+ "mesh": "box",
125
+ "size": [40, 0.1, 32],
126
+ "material": {
127
+ "color": "#2f4030",
128
+ "roughness": 1
129
+ },
130
+ "receiveShadow": true
131
+ }
132
+ }
133
+ ]
134
+ },
135
+ {
136
+ "name": "Maze",
137
+ "type": "Node3D"
138
+ },
139
+ {
140
+ "name": "Scenery",
141
+ "type": "Node3D",
142
+ "props": {
143
+ "static": true
144
+ },
145
+ "children": [
146
+ {
147
+ "name": "Pine1",
148
+ "type": "Tree3D",
149
+ "props": {
150
+ "position": [-18, 0, -13],
151
+ "type": "conifer",
152
+ "seed": 7,
153
+ "height": 9
154
+ }
155
+ },
156
+ {
157
+ "name": "Pine2",
158
+ "type": "Tree3D",
159
+ "props": {
160
+ "position": [18, 0, -12],
161
+ "type": "conifer",
162
+ "seed": 13,
163
+ "height": 8
164
+ }
165
+ },
166
+ {
167
+ "name": "Pine3",
168
+ "type": "Tree3D",
169
+ "props": {
170
+ "position": [-17, 0, 12],
171
+ "type": "dead",
172
+ "seed": 29,
173
+ "height": 7
174
+ }
175
+ },
176
+ {
177
+ "name": "Pine4",
178
+ "type": "Tree3D",
179
+ "props": {
180
+ "position": [17, 0, 13],
181
+ "type": "conifer",
182
+ "seed": 41,
183
+ "height": 10
184
+ }
185
+ },
186
+ {
187
+ "name": "Moon",
188
+ "type": "DirectionalLight3D",
189
+ "props": {
190
+ "position": [-14, 22, 8],
191
+ "intensity": 2.4,
192
+ "color": "#aebaff",
193
+ "castShadow": true,
194
+ "shadowArea": 36
195
+ }
196
+ }
197
+ ]
198
+ },
199
+ {
200
+ "name": "Wolves",
201
+ "type": "Node3D",
202
+ "children": [
203
+ {
204
+ "name": "Wolf1",
205
+ "type": "Node3D",
206
+ "groups": ["wolf"],
207
+ "script": {
208
+ "name": "PathFollow",
209
+ "props": {
210
+ "speed": 2.4,
211
+ "loop": true
212
+ }
213
+ },
214
+ "children": [
215
+ {
216
+ "name": "Body",
217
+ "type": "MeshInstance3D",
218
+ "props": {
219
+ "mesh": "box",
220
+ "size": [0.55, 0.5, 1.3],
221
+ "position": [0, 0, 0],
222
+ "material": {
223
+ "color": "#3b3b44",
224
+ "roughness": 0.9
225
+ },
226
+ "castShadow": true
227
+ }
228
+ },
229
+ {
230
+ "name": "Head",
231
+ "type": "MeshInstance3D",
232
+ "props": {
233
+ "mesh": "box",
234
+ "size": [0.4, 0.38, 0.5],
235
+ "position": [0, 0.18, 0.75],
236
+ "material": {
237
+ "color": "#46464f",
238
+ "roughness": 0.9
239
+ },
240
+ "castShadow": true
241
+ }
242
+ },
243
+ {
244
+ "name": "EyeL",
245
+ "type": "MeshInstance3D",
246
+ "props": {
247
+ "mesh": "sphere",
248
+ "size": [0.07, 0.07, 0.07],
249
+ "position": [-0.1, 0.24, 1.0],
250
+ "material": {
251
+ "color": "#ff3030",
252
+ "emissive": "#ff3030",
253
+ "emissiveIntensity": 2
254
+ }
255
+ }
256
+ },
257
+ {
258
+ "name": "EyeR",
259
+ "type": "MeshInstance3D",
260
+ "props": {
261
+ "mesh": "sphere",
262
+ "size": [0.07, 0.07, 0.07],
263
+ "position": [0.1, 0.24, 1.0],
264
+ "material": {
265
+ "color": "#ff3030",
266
+ "emissive": "#ff3030",
267
+ "emissiveIntensity": 2
268
+ }
269
+ }
270
+ },
271
+ {
272
+ "name": "Tail",
273
+ "type": "MeshInstance3D",
274
+ "props": {
275
+ "mesh": "box",
276
+ "size": [0.12, 0.12, 0.55],
277
+ "position": [0, 0.12, -0.85],
278
+ "rotation": [-20, 0, 0],
279
+ "material": {
280
+ "color": "#33333b",
281
+ "roughness": 0.9
282
+ },
283
+ "castShadow": true
284
+ }
285
+ },
286
+ {
287
+ "name": "GrowlSfx",
288
+ "type": "AudioPlayer",
289
+ "props": {
290
+ "preset": "hurt",
291
+ "volume": 0.35,
292
+ "pitch": 0.5,
293
+ "spatial": true,
294
+ "refDistance": 3,
295
+ "maxDistance": 24
296
+ }
297
+ },
298
+ {
299
+ "name": "Fang",
300
+ "type": "Area3D",
301
+ "props": {
302
+ "position": [0, 0.1, 0.55],
303
+ "collider": {
304
+ "shape": "box",
305
+ "size": [0.6, 0.8, 0.7]
306
+ }
307
+ },
308
+ "script": {
309
+ "name": "DamageOnContact",
310
+ "props": {
311
+ "amount": 25,
312
+ "targetGroup": "player",
313
+ "oncePerTarget": false,
314
+ "repeatEvery": 1.1
315
+ }
316
+ }
317
+ }
318
+ ]
319
+ },
320
+ {
321
+ "name": "Wolf2",
322
+ "type": "Node3D",
323
+ "groups": ["wolf"],
324
+ "script": {
325
+ "name": "PathFollow",
326
+ "props": {
327
+ "speed": 2.4,
328
+ "loop": true
329
+ }
330
+ },
331
+ "children": [
332
+ {
333
+ "name": "Body",
334
+ "type": "MeshInstance3D",
335
+ "props": {
336
+ "mesh": "box",
337
+ "size": [0.55, 0.5, 1.3],
338
+ "position": [0, 0, 0],
339
+ "material": {
340
+ "color": "#3b3b44",
341
+ "roughness": 0.9
342
+ },
343
+ "castShadow": true
344
+ }
345
+ },
346
+ {
347
+ "name": "Head",
348
+ "type": "MeshInstance3D",
349
+ "props": {
350
+ "mesh": "box",
351
+ "size": [0.4, 0.38, 0.5],
352
+ "position": [0, 0.18, 0.75],
353
+ "material": {
354
+ "color": "#46464f",
355
+ "roughness": 0.9
356
+ },
357
+ "castShadow": true
358
+ }
359
+ },
360
+ {
361
+ "name": "EyeL",
362
+ "type": "MeshInstance3D",
363
+ "props": {
364
+ "mesh": "sphere",
365
+ "size": [0.07, 0.07, 0.07],
366
+ "position": [-0.1, 0.24, 1.0],
367
+ "material": {
368
+ "color": "#ff3030",
369
+ "emissive": "#ff3030",
370
+ "emissiveIntensity": 2
371
+ }
372
+ }
373
+ },
374
+ {
375
+ "name": "EyeR",
376
+ "type": "MeshInstance3D",
377
+ "props": {
378
+ "mesh": "sphere",
379
+ "size": [0.07, 0.07, 0.07],
380
+ "position": [0.1, 0.24, 1.0],
381
+ "material": {
382
+ "color": "#ff3030",
383
+ "emissive": "#ff3030",
384
+ "emissiveIntensity": 2
385
+ }
386
+ }
387
+ },
388
+ {
389
+ "name": "Tail",
390
+ "type": "MeshInstance3D",
391
+ "props": {
392
+ "mesh": "box",
393
+ "size": [0.12, 0.12, 0.55],
394
+ "position": [0, 0.12, -0.85],
395
+ "rotation": [-20, 0, 0],
396
+ "material": {
397
+ "color": "#33333b",
398
+ "roughness": 0.9
399
+ },
400
+ "castShadow": true
401
+ }
402
+ },
403
+ {
404
+ "name": "GrowlSfx",
405
+ "type": "AudioPlayer",
406
+ "props": {
407
+ "preset": "hurt",
408
+ "volume": 0.35,
409
+ "pitch": 0.45,
410
+ "spatial": true,
411
+ "refDistance": 3,
412
+ "maxDistance": 24
413
+ }
414
+ },
415
+ {
416
+ "name": "Fang",
417
+ "type": "Area3D",
418
+ "props": {
419
+ "position": [0, 0.1, 0.55],
420
+ "collider": {
421
+ "shape": "box",
422
+ "size": [0.6, 0.8, 0.7]
423
+ }
424
+ },
425
+ "script": {
426
+ "name": "DamageOnContact",
427
+ "props": {
428
+ "amount": 25,
429
+ "targetGroup": "player",
430
+ "oncePerTarget": false,
431
+ "repeatEvery": 1.1
432
+ }
433
+ }
434
+ }
435
+ ]
436
+ },
437
+ {
438
+ "name": "Wolf3",
439
+ "type": "Node3D",
440
+ "groups": ["wolf"],
441
+ "script": {
442
+ "name": "PathFollow",
443
+ "props": {
444
+ "speed": 2.4,
445
+ "loop": true
446
+ }
447
+ },
448
+ "children": [
449
+ {
450
+ "name": "Body",
451
+ "type": "MeshInstance3D",
452
+ "props": {
453
+ "mesh": "box",
454
+ "size": [0.55, 0.5, 1.3],
455
+ "position": [0, 0, 0],
456
+ "material": {
457
+ "color": "#3b3b44",
458
+ "roughness": 0.9
459
+ },
460
+ "castShadow": true
461
+ }
462
+ },
463
+ {
464
+ "name": "Head",
465
+ "type": "MeshInstance3D",
466
+ "props": {
467
+ "mesh": "box",
468
+ "size": [0.4, 0.38, 0.5],
469
+ "position": [0, 0.18, 0.75],
470
+ "material": {
471
+ "color": "#46464f",
472
+ "roughness": 0.9
473
+ },
474
+ "castShadow": true
475
+ }
476
+ },
477
+ {
478
+ "name": "EyeL",
479
+ "type": "MeshInstance3D",
480
+ "props": {
481
+ "mesh": "sphere",
482
+ "size": [0.07, 0.07, 0.07],
483
+ "position": [-0.1, 0.24, 1.0],
484
+ "material": {
485
+ "color": "#ff3030",
486
+ "emissive": "#ff3030",
487
+ "emissiveIntensity": 2
488
+ }
489
+ }
490
+ },
491
+ {
492
+ "name": "EyeR",
493
+ "type": "MeshInstance3D",
494
+ "props": {
495
+ "mesh": "sphere",
496
+ "size": [0.07, 0.07, 0.07],
497
+ "position": [0.1, 0.24, 1.0],
498
+ "material": {
499
+ "color": "#ff3030",
500
+ "emissive": "#ff3030",
501
+ "emissiveIntensity": 2
502
+ }
503
+ }
504
+ },
505
+ {
506
+ "name": "Tail",
507
+ "type": "MeshInstance3D",
508
+ "props": {
509
+ "mesh": "box",
510
+ "size": [0.12, 0.12, 0.55],
511
+ "position": [0, 0.12, -0.85],
512
+ "rotation": [-20, 0, 0],
513
+ "material": {
514
+ "color": "#33333b",
515
+ "roughness": 0.9
516
+ },
517
+ "castShadow": true
518
+ }
519
+ },
520
+ {
521
+ "name": "GrowlSfx",
522
+ "type": "AudioPlayer",
523
+ "props": {
524
+ "preset": "hurt",
525
+ "volume": 0.35,
526
+ "pitch": 0.55,
527
+ "spatial": true,
528
+ "refDistance": 3,
529
+ "maxDistance": 24
530
+ }
531
+ },
532
+ {
533
+ "name": "Fang",
534
+ "type": "Area3D",
535
+ "props": {
536
+ "position": [0, 0.1, 0.55],
537
+ "collider": {
538
+ "shape": "box",
539
+ "size": [0.6, 0.8, 0.7]
540
+ }
541
+ },
542
+ "script": {
543
+ "name": "DamageOnContact",
544
+ "props": {
545
+ "amount": 25,
546
+ "targetGroup": "player",
547
+ "oncePerTarget": false,
548
+ "repeatEvery": 1.1
549
+ }
550
+ }
551
+ }
552
+ ]
553
+ }
554
+ ]
555
+ },
556
+ {
557
+ "name": "ReturnPortal",
558
+ "type": "Area3D",
559
+ "props": {
560
+ "position": [3.5, 1.2, 13.5],
561
+ "collider": {
562
+ "shape": "box",
563
+ "size": [1.8, 2.4, 0.8]
564
+ }
565
+ },
566
+ "children": [
567
+ {
568
+ "name": "Arch",
569
+ "type": "MeshInstance3D",
570
+ "props": {
571
+ "mesh": "box",
572
+ "size": [2.2, 2.8, 0.3],
573
+ "position": [0, 0.2, 0.6],
574
+ "material": {
575
+ "color": "#5c4632",
576
+ "roughness": 0.9
577
+ },
578
+ "castShadow": true
579
+ }
580
+ },
581
+ {
582
+ "name": "Glow",
583
+ "type": "MeshInstance3D",
584
+ "props": {
585
+ "mesh": "box",
586
+ "size": [1.6, 2.2, 0.1],
587
+ "position": [0, 0.1, 0.6],
588
+ "material": {
589
+ "color": "#7fd4ff",
590
+ "emissive": "#7fd4ff",
591
+ "emissiveIntensity": 1.4,
592
+ "opacity": 0.55
593
+ }
594
+ }
595
+ }
596
+ ]
597
+ },
598
+ {
599
+ "name": "Player",
600
+ "type": "RigidBody3D",
601
+ "groups": ["player"],
602
+ "props": {
603
+ "position": [0, 1.4, 13],
604
+ "fixedRotation": true,
605
+ "friction": 0,
606
+ "collider": {
607
+ "shape": "capsule",
608
+ "radius": 0.34,
609
+ "height": 1
610
+ }
611
+ },
612
+ "children": [
613
+ {
614
+ "name": "Controller",
615
+ "type": "CharacterController3D",
616
+ "props": {
617
+ "view": "free",
618
+ "camDistance": 4.6,
619
+ "eyeHeight": 1.1,
620
+ "maxSpeed": 4.0,
621
+ "sprintMultiplier": 1.8,
622
+ "pitchMin": -0.5,
623
+ "pitchMax": 1.1,
624
+ "animations": {
625
+ "idle": "$anims/idle",
626
+ "walk": "$anims/walk",
627
+ "run": "$anims/run",
628
+ "fastRun": "$anims/runFast",
629
+ "airborne": "$anims/jump"
630
+ }
631
+ },
632
+ "script": {
633
+ "name": "SwordStrike"
634
+ }
635
+ },
636
+ {
637
+ "name": "Skin",
638
+ "type": "ModelInstance3D",
639
+ "props": {
640
+ "model": "$characters/base",
641
+ "targetHeight": 1.7,
642
+ "animation": "$anims/idle",
643
+ "castShadow": true,
644
+ "position": [0, -0.85, 0]
645
+ }
646
+ },
647
+ {
648
+ "name": "SwordMount",
649
+ "type": "BoneAttachment3D",
650
+ "props": {
651
+ "target": "../Skin",
652
+ "bone": "RightHand"
653
+ },
654
+ "children": [
655
+ {
656
+ "name": "Blade",
657
+ "type": "MeshInstance3D",
658
+ "props": {
659
+ "mesh": "box",
660
+ "size": [0.045, 0.7, 0.045],
661
+ "position": [0, 0.42, 0],
662
+ "material": {
663
+ "color": "#d8dde8",
664
+ "metalness": 0.9,
665
+ "roughness": 0.25
666
+ },
667
+ "castShadow": true
668
+ }
669
+ },
670
+ {
671
+ "name": "Guard",
672
+ "type": "MeshInstance3D",
673
+ "props": {
674
+ "mesh": "box",
675
+ "size": [0.16, 0.04, 0.06],
676
+ "position": [0, 0.09, 0],
677
+ "material": {
678
+ "color": "#8a6d3a",
679
+ "metalness": 0.7,
680
+ "roughness": 0.4
681
+ }
682
+ }
683
+ },
684
+ {
685
+ "name": "SwordTip",
686
+ "type": "Node3D",
687
+ "props": {
688
+ "position": [0, 0.78, 0]
689
+ },
690
+ "children": [
691
+ {
692
+ "name": "SwingTrail",
693
+ "type": "Trail3D",
694
+ "props": {
695
+ "width": 0.26,
696
+ "color": "#cfe8ff",
697
+ "opacity": 0.9,
698
+ "seconds": 0.25,
699
+ "additive": true,
700
+ "emitting": false,
701
+ "minDistance": 0.02
702
+ }
703
+ }
704
+ ]
705
+ }
706
+ ]
707
+ },
708
+ {
709
+ "name": "DashTrail",
710
+ "type": "Trail3D",
711
+ "props": {
712
+ "width": 0.5,
713
+ "color": "#ffffff",
714
+ "opacity": 0.3,
715
+ "seconds": 0.45,
716
+ "emitting": false,
717
+ "position": [0, -0.4, 0]
718
+ }
719
+ },
720
+ {
721
+ "name": "SwingSfx",
722
+ "type": "AudioPlayer",
723
+ "props": {
724
+ "preset": "shoot",
725
+ "volume": 0.35,
726
+ "pitch": 0.55
727
+ }
728
+ },
729
+ {
730
+ "name": "HitSfx",
731
+ "type": "AudioPlayer",
732
+ "props": {
733
+ "preset": "hit",
734
+ "volume": 0.6
735
+ }
736
+ }
737
+ ],
738
+ "script": {
739
+ "name": "Health",
740
+ "props": {
741
+ "max": 100,
742
+ "invulnerableFor": 0.8
743
+ }
744
+ }
745
+ },
746
+ {
747
+ "name": "Camera",
748
+ "type": "Camera3D",
749
+ "props": {
750
+ "current": true,
751
+ "position": [0, 4, 19]
752
+ }
753
+ },
754
+ {
755
+ "name": "WinSfx",
756
+ "type": "AudioPlayer",
757
+ "props": {
758
+ "preset": "win",
759
+ "volume": 0.6
760
+ }
761
+ },
762
+ {
763
+ "name": "HUD",
764
+ "type": "HudLayer",
765
+ "children": [
766
+ {
767
+ "name": "Quest",
768
+ "type": "UiText",
769
+ "uid": "n_gq_quest",
770
+ "props": {
771
+ "text": "Wolves left: 3",
772
+ "size": 16,
773
+ "anchor": "topLeft",
774
+ "shadow": true
775
+ }
776
+ },
777
+ {
778
+ "name": "HP",
779
+ "type": "UiBar",
780
+ "uid": "n_gq_hp",
781
+ "props": {
782
+ "anchor": "topRight",
783
+ "value": 100,
784
+ "max": 100,
785
+ "width": 160
786
+ }
787
+ },
788
+ {
789
+ "name": "Banner",
790
+ "type": "UiBanner",
791
+ "uid": "n_gq_banner",
792
+ "props": {
793
+ "anchor": "center"
794
+ }
795
+ },
796
+ {
797
+ "name": "Hint",
798
+ "type": "UiText",
799
+ "uid": "n_gq_hint",
800
+ "props": {
801
+ "text": "click/F strike \u00b7 Shift sprint \u00b7 portal returns home",
802
+ "size": 12,
803
+ "color": "#cccccc",
804
+ "anchor": "bottomRight",
805
+ "shadow": true
806
+ }
807
+ }
808
+ ]
809
+ }
810
+ ]
811
+ },
812
+ "connections": [
813
+ {
814
+ "signal": "triggerEnter",
815
+ "from": "ReturnPortal",
816
+ "to": "/root",
817
+ "handler": "onPortalEnter"
818
+ },
819
+ {
820
+ "signal": "died",
821
+ "from": "Player",
822
+ "to": "/root",
823
+ "handler": "onPlayerDown"
824
+ }
825
+ ]
826
+ }