incanto 0.13.0 → 0.15.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 (29) hide show
  1. package/dist/3d.d.ts +40 -11
  2. package/dist/3d.js +3 -3
  3. package/dist/{create-game-J6g4QInv.js → create-game-BS-K-GY1.js} +2 -2
  4. package/dist/index.js +1 -1
  5. package/dist/{physics-3d-DhaAaKJo.js → physics-3d-TmOuCy7J.js} +1 -1
  6. package/dist/react.js +1 -1
  7. package/dist/{register-BFw4c83z.js → register-Bh_3Z39N.js} +164 -39
  8. package/dist/test.js +3 -3
  9. package/editor/assets/{agent8-BF8Jfbkl.js → agent8-DqQ2CQ5A.js} +1 -1
  10. package/editor/assets/{index-DSq0gdhE.js → index-CofH0yGY.js} +79 -7
  11. package/editor/index.html +1 -1
  12. package/package.json +1 -1
  13. package/schemas/scene.schema.json +19 -6
  14. package/skills/incanto-environment.md +22 -17
  15. package/skills/incanto-node-reference.md +7 -3
  16. package/templates-app/beacon-isle-3d/PROJECT/Status.md +1 -1
  17. package/templates-app/beacon-isle-3d/generate-world.ts +23 -20
  18. package/templates-app/beacon-isle-3d/package.json +1 -1
  19. package/templates-app/beacon-isle-3d/src/behaviors.ts +70 -4
  20. package/templates-app/beacon-isle-3d/src/game.scene.json +43 -67
  21. package/templates-app/tps-3d/package.json +1 -1
  22. package/templates-app/village-quest-3d/PROJECT/Context.md +1 -1
  23. package/templates-app/village-quest-3d/PROJECT/Requirements.md +1 -1
  24. package/templates-app/village-quest-3d/PROJECT/Structure.md +6 -1
  25. package/templates-app/village-quest-3d/generate-dressing.ts +769 -0
  26. package/templates-app/village-quest-3d/package.json +1 -1
  27. package/templates-app/village-quest-3d/src/behaviors.ts +74 -8
  28. package/templates-app/village-quest-3d/src/grove.scene.json +1 -13
  29. package/templates-app/village-quest-3d/src/village.scene.json +2989 -162
@@ -22,7 +22,7 @@
22
22
  "exposure": 1.12,
23
23
  "ambient": {
24
24
  "color": "#ffe8d4",
25
- "intensity": 0.66
25
+ "intensity": 0.85
26
26
  },
27
27
  "iblIntensity": 0.9,
28
28
  "bloom": {
@@ -138,7 +138,18 @@
138
138
  "props": {
139
139
  "size": [1920, 1920],
140
140
  "position": [0, 9.19, 0],
141
- "opacity": 1
141
+ "opacity": 1,
142
+ "swell": 0.55,
143
+ "swellWavelength": 42,
144
+ "swellDirectionDeg": 262,
145
+ "whitecaps": 0.45,
146
+ "absorption": 0.28,
147
+ "reflectionInterval": 400,
148
+ "colors": {
149
+ "trough": "#0c3d58",
150
+ "surface": "#1a7d9c",
151
+ "peak": "#9adfe0"
152
+ }
142
153
  }
143
154
  },
144
155
  {
@@ -1131,8 +1142,7 @@
1131
1142
  "style": "mesh",
1132
1143
  "position": [83.83, 13.64, 53.8],
1133
1144
  "area": [34, 34],
1134
- "density": 10,
1135
- "terrain": "../../Ground/Surface"
1145
+ "density": 10
1136
1146
  }
1137
1147
  },
1138
1148
  {
@@ -1143,8 +1153,7 @@
1143
1153
  "style": "mesh",
1144
1154
  "position": [48.69, 13.7, 42.89],
1145
1155
  "area": [34, 34],
1146
- "density": 10,
1147
- "terrain": "../../Ground/Surface"
1156
+ "density": 10
1148
1157
  }
1149
1158
  },
1150
1159
  {
@@ -1155,8 +1164,7 @@
1155
1164
  "style": "mesh",
1156
1165
  "position": [-37.46, 18.04, 29.71],
1157
1166
  "area": [34, 34],
1158
- "density": 10,
1159
- "terrain": "../../Ground/Surface"
1167
+ "density": 10
1160
1168
  }
1161
1169
  },
1162
1170
  {
@@ -1167,8 +1175,7 @@
1167
1175
  "style": "mesh",
1168
1176
  "position": [57.21, 16.3, 86.45],
1169
1177
  "area": [34, 34],
1170
- "density": 10,
1171
- "terrain": "../../Ground/Surface"
1178
+ "density": 10
1172
1179
  }
1173
1180
  },
1174
1181
  {
@@ -1179,8 +1186,7 @@
1179
1186
  "style": "mesh",
1180
1187
  "position": [-67.62, 16.83, -54.03],
1181
1188
  "area": [34, 34],
1182
- "density": 10,
1183
- "terrain": "../../Ground/Surface"
1189
+ "density": 10
1184
1190
  }
1185
1191
  },
1186
1192
  {
@@ -1191,8 +1197,7 @@
1191
1197
  "style": "mesh",
1192
1198
  "position": [0.75, 16.94, 89.68],
1193
1199
  "area": [34, 34],
1194
- "density": 10,
1195
- "terrain": "../../Ground/Surface"
1200
+ "density": 10
1196
1201
  }
1197
1202
  },
1198
1203
  {
@@ -1203,8 +1208,7 @@
1203
1208
  "style": "mesh",
1204
1209
  "position": [85.64, 12.48, -28.21],
1205
1210
  "area": [34, 34],
1206
- "density": 10,
1207
- "terrain": "../../Ground/Surface"
1211
+ "density": 10
1208
1212
  }
1209
1213
  },
1210
1214
  {
@@ -1215,8 +1219,7 @@
1215
1219
  "style": "mesh",
1216
1220
  "position": [58.99, 12.3, -5.25],
1217
1221
  "area": [34, 34],
1218
- "density": 10,
1219
- "terrain": "../../Ground/Surface"
1222
+ "density": 10
1220
1223
  }
1221
1224
  },
1222
1225
  {
@@ -1227,8 +1230,7 @@
1227
1230
  "style": "mesh",
1228
1231
  "position": [75.79, 11.98, -31.54],
1229
1232
  "area": [34, 34],
1230
- "density": 10,
1231
- "terrain": "../../Ground/Surface"
1233
+ "density": 10
1232
1234
  }
1233
1235
  },
1234
1236
  {
@@ -1239,8 +1241,7 @@
1239
1241
  "style": "mesh",
1240
1242
  "position": [28.8, 16.05, 70.6],
1241
1243
  "area": [34, 34],
1242
- "density": 10,
1243
- "terrain": "../../Ground/Surface"
1244
+ "density": 10
1244
1245
  }
1245
1246
  },
1246
1247
  {
@@ -1251,8 +1252,7 @@
1251
1252
  "style": "mesh",
1252
1253
  "position": [-74.91, 19.52, -21.04],
1253
1254
  "area": [34, 34],
1254
- "density": 10,
1255
- "terrain": "../../Ground/Surface"
1255
+ "density": 10
1256
1256
  }
1257
1257
  },
1258
1258
  {
@@ -1263,8 +1263,7 @@
1263
1263
  "style": "mesh",
1264
1264
  "position": [5.38, 16.51, 37.28],
1265
1265
  "area": [34, 34],
1266
- "density": 10,
1267
- "terrain": "../../Ground/Surface"
1266
+ "density": 10
1268
1267
  }
1269
1268
  },
1270
1269
  {
@@ -1275,8 +1274,7 @@
1275
1274
  "style": "mesh",
1276
1275
  "position": [-9.71, 15.43, -10.63],
1277
1276
  "area": [34, 34],
1278
- "density": 10,
1279
- "terrain": "../../Ground/Surface"
1277
+ "density": 10
1280
1278
  }
1281
1279
  },
1282
1280
  {
@@ -1287,8 +1285,7 @@
1287
1285
  "style": "mesh",
1288
1286
  "position": [-61.97, 20.04, 41.88],
1289
1287
  "area": [34, 34],
1290
- "density": 10,
1291
- "terrain": "../../Ground/Surface"
1288
+ "density": 10
1292
1289
  }
1293
1290
  },
1294
1291
  {
@@ -1297,8 +1294,7 @@
1297
1294
  "props": {
1298
1295
  "position": [33.23, 14.62, 36.95],
1299
1296
  "area": [12, 12],
1300
- "seed": 357653252,
1301
- "terrain": "../../Ground/Surface"
1297
+ "seed": 357653252
1302
1298
  }
1303
1299
  },
1304
1300
  {
@@ -1307,8 +1303,7 @@
1307
1303
  "props": {
1308
1304
  "position": [-82.3, 19.31, -38.23],
1309
1305
  "area": [12, 12],
1310
- "seed": 398696966,
1311
- "terrain": "../../Ground/Surface"
1306
+ "seed": 398696966
1312
1307
  }
1313
1308
  },
1314
1309
  {
@@ -1317,8 +1312,7 @@
1317
1312
  "props": {
1318
1313
  "position": [-33.36, 18.6, 50.95],
1319
1314
  "area": [12, 12],
1320
- "seed": 400708434,
1321
- "terrain": "../../Ground/Surface"
1315
+ "seed": 400708434
1322
1316
  }
1323
1317
  },
1324
1318
  {
@@ -1327,8 +1321,7 @@
1327
1321
  "props": {
1328
1322
  "position": [-9.78, 17.14, 45.89],
1329
1323
  "area": [12, 12],
1330
- "seed": 575315232,
1331
- "terrain": "../../Ground/Surface"
1324
+ "seed": 575315232
1332
1325
  }
1333
1326
  },
1334
1327
  {
@@ -1337,8 +1330,7 @@
1337
1330
  "props": {
1338
1331
  "position": [55.02, 13.26, 39.6],
1339
1332
  "area": [12, 12],
1340
- "seed": 73428741,
1341
- "terrain": "../../Ground/Surface"
1333
+ "seed": 73428741
1342
1334
  }
1343
1335
  },
1344
1336
  {
@@ -1347,8 +1339,7 @@
1347
1339
  "props": {
1348
1340
  "position": [-49.05, 16.91, -30.14],
1349
1341
  "area": [12, 12],
1350
- "seed": 258165764,
1351
- "terrain": "../../Ground/Surface"
1342
+ "seed": 258165764
1352
1343
  }
1353
1344
  },
1354
1345
  {
@@ -1357,8 +1348,7 @@
1357
1348
  "props": {
1358
1349
  "position": [17.86, 16.44, 76.99],
1359
1350
  "area": [12, 12],
1360
- "seed": 22178236,
1361
- "terrain": "../../Ground/Surface"
1351
+ "seed": 22178236
1362
1352
  }
1363
1353
  },
1364
1354
  {
@@ -1367,8 +1357,7 @@
1367
1357
  "props": {
1368
1358
  "position": [-5.95, 13.7, -35.97],
1369
1359
  "area": [12, 12],
1370
- "seed": 359604670,
1371
- "terrain": "../../Ground/Surface"
1360
+ "seed": 359604670
1372
1361
  }
1373
1362
  },
1374
1363
  {
@@ -1377,8 +1366,7 @@
1377
1366
  "props": {
1378
1367
  "position": [-51.11, 18.29, -4.34],
1379
1368
  "area": [12, 12],
1380
- "seed": 723951523,
1381
- "terrain": "../../Ground/Surface"
1369
+ "seed": 723951523
1382
1370
  }
1383
1371
  },
1384
1372
  {
@@ -1474,7 +1462,7 @@
1474
1462
  "type": "MeshInstance3D",
1475
1463
  "props": {
1476
1464
  "mesh": "cylinder",
1477
- "size": [3, 11, 3],
1465
+ "size": [1.5, 11, 1.5],
1478
1466
  "material": {
1479
1467
  "color": "#e8e2d4",
1480
1468
  "roughness": 0.8
@@ -1488,7 +1476,7 @@
1488
1476
  "type": "MeshInstance3D",
1489
1477
  "props": {
1490
1478
  "mesh": "cylinder",
1491
- "size": [3.06, 1.6, 3.06],
1479
+ "size": [1.56, 1.6, 1.56],
1492
1480
  "position": [0, 1.2, 0],
1493
1481
  "material": {
1494
1482
  "color": "#b8452e",
@@ -1625,7 +1613,7 @@
1625
1613
  "type": "MeshInstance3D",
1626
1614
  "props": {
1627
1615
  "mesh": "cylinder",
1628
- "size": [1.6, 1.2, 1.6],
1616
+ "size": [0.8, 1.2, 0.8],
1629
1617
  "material": {
1630
1618
  "color": "#7d8494",
1631
1619
  "roughness": 0.9
@@ -1713,7 +1701,7 @@
1713
1701
  "type": "MeshInstance3D",
1714
1702
  "props": {
1715
1703
  "mesh": "cylinder",
1716
- "size": [1.6, 1.2, 1.6],
1704
+ "size": [0.8, 1.2, 0.8],
1717
1705
  "material": {
1718
1706
  "color": "#7d8494",
1719
1707
  "roughness": 0.9
@@ -1801,7 +1789,7 @@
1801
1789
  "type": "MeshInstance3D",
1802
1790
  "props": {
1803
1791
  "mesh": "cylinder",
1804
- "size": [1.6, 1.2, 1.6],
1792
+ "size": [0.8, 1.2, 0.8],
1805
1793
  "material": {
1806
1794
  "color": "#7d8494",
1807
1795
  "roughness": 0.9
@@ -2690,18 +2678,6 @@
2690
2678
  }
2691
2679
  ]
2692
2680
  },
2693
- {
2694
- "name": "DashTrail",
2695
- "type": "Trail3D",
2696
- "props": {
2697
- "width": 0.5,
2698
- "color": "#ffffff",
2699
- "opacity": 0.28,
2700
- "seconds": 0.45,
2701
- "emitting": false,
2702
- "position": [0, -0.4, 0]
2703
- }
2704
- },
2705
2681
  {
2706
2682
  "name": "SwingSfx",
2707
2683
  "type": "AudioPlayer",
@@ -2728,8 +2704,8 @@
2728
2704
  "name": "DayNight",
2729
2705
  "props": {
2730
2706
  "paused": true,
2731
- "startHour": 17.5,
2732
- "nightDarkness": 0.42,
2707
+ "startHour": 17.25,
2708
+ "nightDarkness": 0.32,
2733
2709
  "maxSunElevationDeg": 48
2734
2710
  }
2735
2711
  }
@@ -13,7 +13,7 @@
13
13
  "@dimforge/rapier2d-compat": "0.19.3",
14
14
  "@dimforge/rapier3d-compat": "0.19.3",
15
15
  "@pixiv/three-vrm": "^3.5.3",
16
- "incanto": "^0.13.0",
16
+ "incanto": "^0.15.0",
17
17
  "three": "^0.184.0"
18
18
  },
19
19
  "devDependencies": {
@@ -19,7 +19,7 @@ again button.
19
19
  | `UiDialogue` + choices | the Elder conversation IS the quest state machine |
20
20
  | `UiButton` | the play-again button |
21
21
  | `findPath` + `PathFollow` | wolf patrol rings through the hedge maze |
22
- | `Trail3D` | sword arc + sprint dash trail |
22
+ | `Trail3D` | sword arc |
23
23
  | `engine.sfx.startVoice('wind')` | live ambience that rises as you run |
24
24
  | `goToScene` | village ⇄ grove, with the black fade |
25
25
  | controller `animations` map | idle/walk/run/sprint/jump — zero animation code |
@@ -26,7 +26,7 @@
26
26
  ## Feel
27
27
 
28
28
  - Wind ambience always present, louder + higher while sprinting.
29
- - Dash trail only while sprinting.
29
+ - Sprint FEEL: per-stride foot-dust puffs + a soft camera FOV kick (no body ribbon).
30
30
  - Village = warm sunset; grove = cold dusk, denser fog, moonlight.
31
31
 
32
32
  ## Verification (must stay green)
@@ -4,11 +4,16 @@
4
4
  index.html canvas + loading bar
5
5
  src/main.ts preload GLB/anim assets → createGame3D (village)
6
6
  src/village.scene.json sunset village: Elder (Interactable), gate Area3D,
7
- player rig (controller `animations` map, Trail3D ×2),
7
+ player rig (controller `animations` map, sword Trail3D),
8
8
  HUD (UiText/UiBanner/UiDialogue/UiButton)
9
9
  src/grove.scene.json dusk grove: 3 wolves (PathFollow), return portal,
10
10
  empty `Maze` holder (hedges are built at runtime)
11
11
  src/behaviors.ts GROVE_GRID + VillageDirector / GroveDirector / SwordStrike
12
+ generate-dressing.ts VILLAGE dressing generator: rebuilds environment + the
13
+ visual `Village` subtree (timber cottages, fences,
14
+ lanterns, stall, grass/flowers, treelines) — edit
15
+ numbers, `bun generate-dressing.ts`, reload. Gameplay
16
+ nodes (Elder/Player/HUD/GroveGate) are preserved.
12
17
  src/quest.ts cross-scene quest flags (module singleton)
13
18
  verify.ts audit + headless quest E2E + replay determinism
14
19
  ```