@fps-games/vfx 0.3.2 → 0.3.4

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 (234) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +5 -5
  3. package/dist/effects/treasure-attention/index.d.ts +1 -1
  4. package/package.json +6 -5
  5. package/tooling/vfx-cli.mjs +31 -22
  6. package/tooling/vfx-package-resolution.mjs +8 -8
  7. package/docs/AUTHORING_EFFECTS.md +0 -297
  8. package/docs/INTEGRATION.md +0 -194
  9. package/docs/VFX_LIBRARY_ARCHITECTURE_chatgpt.md +0 -1580
  10. package/docs/VFX_LIBRARY_EXECUTION_PLAN.md +0 -229
  11. package/docs/VFX_LIBRARY_PLAN.md +0 -546
  12. package/docs/hit-flash-red-method.md +0 -155
  13. package/docs/treasure_attention_fx_babylonjs_guide.md +0 -901
  14. package/docs/vfx-ab/RESULTS.md +0 -35
  15. package/docs/vfx-ab/lumber-order/vehicle-exhaust-smoke/after.png +0 -0
  16. package/docs/vfx-ab/lumber-order/vehicle-exhaust-smoke/before.png +0 -0
  17. package/docs/vfx-ab/lumber-truck/vehicle-exhaust-smoke/after.png +0 -0
  18. package/docs/vfx-ab/lumber-truck/vehicle-exhaust-smoke/before.png +0 -0
  19. package/docs/vfx-integration_chatgpt.md +0 -462
  20. package/docs/vfx-placement-design.md +0 -164
  21. package/docs/weapon-trail-visualization.html +0 -241
  22. package/packages/EffectPackageService.ts +0 -346
  23. package/packages/SceneVfxService.ts +0 -96
  24. package/packages/build.mesh.yellow_build_upgrade_indicator/assets/runtime/simpleMeshEffect.v1.js +0 -333
  25. package/packages/build.mesh.yellow_build_upgrade_indicator/assets/shaders/mesh-effect-preview.frag.glsl +0 -25
  26. package/packages/build.mesh.yellow_build_upgrade_indicator/assets/shaders/mesh-effect-preview.vert.glsl +0 -11
  27. package/packages/build.mesh.yellow_build_upgrade_indicator/assets/textures/effect_jianbian.png +0 -0
  28. package/packages/build.mesh.yellow_build_upgrade_indicator/effect.json +0 -927
  29. package/packages/build.mesh.yellow_build_upgrade_indicator/media/contact-sheet.png +0 -0
  30. package/packages/build.mesh.yellow_build_upgrade_indicator/media/preview.gif +0 -0
  31. package/packages/build.mesh.yellow_build_upgrade_indicator/media/preview.mp4 +0 -0
  32. package/packages/build.mesh.yellow_build_upgrade_indicator/media/preview.webm +0 -0
  33. package/packages/build.mesh.yellow_build_upgrade_indicator/media/thumbnail.png +0 -0
  34. package/packages/build.mesh.yellow_build_upgrade_indicator/metadata/description.json +0 -197
  35. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/03-effect.original.json +0 -895
  36. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/03-normalized-vfx-to-babylon-report.json +0 -241
  37. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/04-preview-overrides.json +0 -542
  38. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/04-preview-tuning-report.json +0 -69
  39. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/asset-map.json +0 -125
  40. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/lineage.json +0 -44
  41. package/packages/build.particle.golden_upgrade_starburst/assets/runtime/particleEmitter.v1.js +0 -210
  42. package/packages/build.particle.golden_upgrade_starburst/assets/textures/effect_guangdian.png +0 -0
  43. package/packages/build.particle.golden_upgrade_starburst/effect.json +0 -880
  44. package/packages/build.particle.golden_upgrade_starburst/media/contact-sheet.png +0 -0
  45. package/packages/build.particle.golden_upgrade_starburst/media/preview.gif +0 -0
  46. package/packages/build.particle.golden_upgrade_starburst/media/preview.mp4 +0 -0
  47. package/packages/build.particle.golden_upgrade_starburst/media/preview.webm +0 -0
  48. package/packages/build.particle.golden_upgrade_starburst/media/thumbnail.png +0 -0
  49. package/packages/build.particle.golden_upgrade_starburst/metadata/description.json +0 -161
  50. package/packages/build.particle.golden_upgrade_starburst/provenance/03-effect.original.json +0 -762
  51. package/packages/build.particle.golden_upgrade_starburst/provenance/03-normalized-vfx-to-babylon-report.json +0 -260
  52. package/packages/build.particle.golden_upgrade_starburst/provenance/04-preview-overrides.json +0 -436
  53. package/packages/build.particle.golden_upgrade_starburst/provenance/04-preview-tuning-report.json +0 -40
  54. package/packages/build.particle.golden_upgrade_starburst/provenance/asset-map.json +0 -115
  55. package/packages/build.particle.golden_upgrade_starburst/provenance/lineage.json +0 -40
  56. package/packages/build.particle.orange_upgrade_transform_sparks/assets/runtime/particleEmitter.v1.js +0 -210
  57. package/packages/build.particle.orange_upgrade_transform_sparks/assets/textures/b5b27ab1-e740-4398-b407-848fc2b2c897.png +0 -0
  58. package/packages/build.particle.orange_upgrade_transform_sparks/effect.json +0 -887
  59. package/packages/build.particle.orange_upgrade_transform_sparks/media/preview.gif +0 -0
  60. package/packages/build.particle.orange_upgrade_transform_sparks/media/preview.mp4 +0 -0
  61. package/packages/build.particle.orange_upgrade_transform_sparks/media/preview.webm +0 -0
  62. package/packages/build.particle.orange_upgrade_transform_sparks/media/thumbnail.png +0 -0
  63. package/packages/build.particle.orange_upgrade_transform_sparks/metadata/description.json +0 -179
  64. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/03-effect.original.json +0 -859
  65. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/03-normalized-vfx-to-babylon-report.json +0 -260
  66. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/04-preview-overrides.json +0 -478
  67. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/04-preview-tuning-report.json +0 -40
  68. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/asset-map.json +0 -114
  69. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/lineage.json +0 -41
  70. package/packages/build.particle.wood_chip_dust_burst/assets/runtime/particleEmitter.v1.js +0 -210
  71. package/packages/build.particle.wood_chip_dust_burst/assets/textures/effect_yanwu4.png +0 -0
  72. package/packages/build.particle.wood_chip_dust_burst/assets/textures/suipian3.png +0 -0
  73. package/packages/build.particle.wood_chip_dust_burst/effect.json +0 -1400
  74. package/packages/build.particle.wood_chip_dust_burst/media/contact-sheet.png +0 -0
  75. package/packages/build.particle.wood_chip_dust_burst/media/preview.gif +0 -0
  76. package/packages/build.particle.wood_chip_dust_burst/media/preview.mp4 +0 -0
  77. package/packages/build.particle.wood_chip_dust_burst/media/preview.webm +0 -0
  78. package/packages/build.particle.wood_chip_dust_burst/media/thumbnail.png +0 -0
  79. package/packages/build.particle.wood_chip_dust_burst/metadata/description.json +0 -173
  80. package/packages/build.particle.wood_chip_dust_burst/provenance/03-effect.original.json +0 -1277
  81. package/packages/build.particle.wood_chip_dust_burst/provenance/03-normalized-vfx-to-babylon-report.json +0 -329
  82. package/packages/build.particle.wood_chip_dust_burst/provenance/04-preview-overrides.json +0 -749
  83. package/packages/build.particle.wood_chip_dust_burst/provenance/04-preview-tuning-report.json +0 -60
  84. package/packages/build.particle.wood_chip_dust_burst/provenance/asset-map.json +0 -146
  85. package/packages/build.particle.wood_chip_dust_burst/provenance/lineage.json +0 -69
  86. package/packages/effects/building-upgrade/effect.json +0 -6
  87. package/packages/effects/building-upgrade/index.ts +0 -387
  88. package/packages/effects/character-entrance/effect.json +0 -6
  89. package/packages/effects/character-entrance/index.ts +0 -308
  90. package/packages/effects/coin-burst/index.ts +0 -48
  91. package/packages/effects/comet-trail-flame/assets/textures/trail_5x4.webp +0 -0
  92. package/packages/effects/comet-trail-flame/index.ts +0 -107
  93. package/packages/effects/conveyor-upgrade/effect.json +0 -6
  94. package/packages/effects/conveyor-upgrade/index.ts +0 -401
  95. package/packages/effects/debris-smoke/assets/models/rock_debris.glb +0 -0
  96. package/packages/effects/debris-smoke/assets/textures/smoke22.webp +0 -0
  97. package/packages/effects/debris-smoke/index.ts +0 -102
  98. package/packages/effects/door_open_gold_flakes/assets/runtime/goldFlakes.v1.js +0 -397
  99. package/packages/effects/door_open_gold_flakes/door_open_gold_flakes.json +0 -498
  100. package/packages/effects/door_open_gold_flakes/index.ts +0 -11
  101. package/packages/effects/electric-arc/assets/textures/spark_4x4.webp +0 -0
  102. package/packages/effects/electric-arc/index.ts +0 -63
  103. package/packages/effects/energy-shield/effect.json +0 -7
  104. package/packages/effects/energy-shield/index.ts +0 -432
  105. package/packages/effects/explosion/assets/textures/baozha29.webp +0 -0
  106. package/packages/effects/explosion/assets/textures/glow01.webp +0 -0
  107. package/packages/effects/explosion/assets/textures/lizi01.webp +0 -0
  108. package/packages/effects/explosion/assets/textures/xulie_lizibaozha02_5x5.webp +0 -0
  109. package/packages/effects/explosion/index.ts +0 -115
  110. package/packages/effects/ground-tile-upgrade/effect.json +0 -6
  111. package/packages/effects/ground-tile-upgrade/index.ts +0 -410
  112. package/packages/effects/hit-flash/index.ts +0 -77
  113. package/packages/effects/laser-beam/assets/textures/laser_glow.webp +0 -0
  114. package/packages/effects/laser-beam/assets/textures/laser_noise.webp +0 -0
  115. package/packages/effects/laser-beam/index.ts +0 -6
  116. package/packages/effects/laser-beam-factory.ts +0 -146
  117. package/packages/effects/lumber-cart-suction/effect.json +0 -6
  118. package/packages/effects/lumber-cart-suction/index.ts +0 -399
  119. package/packages/effects/lumber-debris-scatter/assets/models/lumber_prop_model.glb +0 -0
  120. package/packages/effects/lumber-debris-scatter/assets/models/lumber_prop_model.glb.versions/.active +0 -1
  121. package/packages/effects/lumber-debris-scatter/assets/models/lumber_prop_model.glb.versions/1781589063890_upload.glb +0 -0
  122. package/packages/effects/lumber-debris-scatter/assets/runtime/solidParticleScatter.v1.js +0 -236
  123. package/packages/effects/lumber-debris-scatter/effect.json +0 -228
  124. package/packages/effects/lumber-debris-scatter/index.ts +0 -780
  125. package/packages/effects/lumber_vehicle_gear_spin/assets/runtime/gearSpin.v1.js +0 -202
  126. package/packages/effects/lumber_vehicle_gear_spin/index.ts +0 -11
  127. package/packages/effects/lumber_vehicle_gear_spin/lumber_vehicle_gear_spin.json +0 -338
  128. package/packages/effects/lumber_vehicle_upgrade_aura/assets/runtime/upgradeAura.v1.js +0 -353
  129. package/packages/effects/lumber_vehicle_upgrade_aura/index.ts +0 -13
  130. package/packages/effects/lumber_vehicle_upgrade_aura/lumber_vehicle_upgrade_aura.json +0 -365
  131. package/packages/effects/lumber_vehicle_wood_chips/assets/runtime/solidParticleScatter.v1.js +0 -310
  132. package/packages/effects/lumber_vehicle_wood_chips/index.ts +0 -11
  133. package/packages/effects/lumber_vehicle_wood_chips/lumber_vehicle_wood_chips.json +0 -335
  134. package/packages/effects/monster-hit/index.ts +0 -129
  135. package/packages/effects/player-upgrade/effect.json +0 -6
  136. package/packages/effects/player-upgrade/index.ts +0 -640
  137. package/packages/effects/pulse-laser-volley/assets/textures/bolt_guangshu.webp +0 -0
  138. package/packages/effects/pulse-laser-volley/index.ts +0 -215
  139. package/packages/effects/resource-collect-sparkles/effect.json +0 -6
  140. package/packages/effects/resource-collect-sparkles/index.ts +0 -254
  141. package/packages/effects/run-footstep-dust/assets/runtime/runFootstepDust.v1.js +0 -215
  142. package/packages/effects/run-footstep-dust/effect.json +0 -183
  143. package/packages/effects/run-footstep-dust/index.ts +0 -377
  144. package/packages/effects/space-shared.ts +0 -120
  145. package/packages/effects/thruster-flame/index.ts +0 -306
  146. package/packages/effects/treasure-attention/effect.json +0 -7
  147. package/packages/effects/treasure-attention/index.ts +0 -630
  148. package/packages/effects/tree-chop-dust/assets/textures/tree_chop_dust_atlas.png +0 -0
  149. package/packages/effects/tree-chop-dust/effect.json +0 -8
  150. package/packages/effects/tree-chop-dust/index.ts +0 -202
  151. package/packages/effects/tree-leaf-chop-burst/assets/runtime/particleEmitter.v1.js +0 -303
  152. package/packages/effects/tree-leaf-chop-burst/assets/textures/tree_leaf_chop_burst_leaf_atlas.png +0 -0
  153. package/packages/effects/tree-leaf-chop-burst/effect.json +0 -498
  154. package/packages/effects/tree-leaf-chop-burst/index.ts +0 -294
  155. package/packages/effects/tree_chop_dust_burst/assets/runtime/particleEmitter.v1.js +0 -318
  156. package/packages/effects/tree_chop_dust_burst/assets/textures/tree_chop_dust_burst_dust.png +0 -0
  157. package/packages/effects/tree_chop_dust_burst/index.ts +0 -13
  158. package/packages/effects/tree_chop_dust_burst/tree_chop_dust_burst.json +0 -412
  159. package/packages/effects/ufo-thread-flame/assets/textures/flame_flow.webp +0 -0
  160. package/packages/effects/ufo-thread-flame/assets/textures/flame_spike.webp +0 -0
  161. package/packages/effects/ufo-thread-flame/index.ts +0 -153
  162. package/packages/effects/vehicle-exhaust-smoke/assets/textures/vehicle_exhaust_smoke_atlas.png +0 -0
  163. package/packages/effects/vehicle-exhaust-smoke/effect.json +0 -8
  164. package/packages/effects/vehicle-exhaust-smoke/index.ts +0 -298
  165. package/packages/effects/vehicle-upgrade/effect.json +0 -6
  166. package/packages/effects/vehicle-upgrade/index.ts +0 -404
  167. package/packages/effects/weapon-trail/assets/textures/trail_wedge.png +0 -0
  168. package/packages/effects/weapon-trail/index.ts +0 -317
  169. package/packages/effects/wood-crusher-sawdust/assets/runtime/particleEmitter.v1.js +0 -312
  170. package/packages/effects/wood-crusher-sawdust/assets/textures/wood_crusher_sawdust_dust.png +0 -0
  171. package/packages/effects/wood-crusher-sawdust/assets/textures/wood_crusher_sawdust_fiber.png +0 -0
  172. package/packages/effects/wood-crusher-sawdust/index.ts +0 -43
  173. package/packages/effects/wood-crusher-sawdust/wood_crusher_sawdust.json +0 -592
  174. package/packages/effects/wood-cutter-sawdust/assets/runtime/particleEmitter.v1.js +0 -312
  175. package/packages/effects/wood-cutter-sawdust/assets/textures/wood_cutter_sawdust_chip.png +0 -0
  176. package/packages/effects/wood-cutter-sawdust/assets/textures/wood_cutter_sawdust_dust.png +0 -0
  177. package/packages/effects/wood-cutter-sawdust/index.ts +0 -43
  178. package/packages/effects/wood-cutter-sawdust/wood_cutter_sawdust.json +0 -592
  179. package/packages/effects/wood-sawdust-effect-factory.ts +0 -194
  180. package/packages/effects/wood_crusher_sawdust/assets/runtime/particleEmitter.v1.js +0 -318
  181. package/packages/effects/wood_crusher_sawdust/assets/textures/wood_crusher_sawdust_dust.png +0 -0
  182. package/packages/effects/wood_crusher_sawdust/assets/textures/wood_crusher_sawdust_fiber.png +0 -0
  183. package/packages/effects/wood_crusher_sawdust/index.ts +0 -29
  184. package/packages/effects/wood_crusher_sawdust/wood_crusher_sawdust.json +0 -592
  185. package/packages/effects/wood_cutter_sawdust/assets/runtime/particleEmitter.v1.js +0 -318
  186. package/packages/effects/wood_cutter_sawdust/assets/textures/wood_cutter_sawdust_chip.png +0 -0
  187. package/packages/effects/wood_cutter_sawdust/assets/textures/wood_cutter_sawdust_dust.png +0 -0
  188. package/packages/effects/wood_cutter_sawdust/index.ts +0 -29
  189. package/packages/effects/wood_cutter_sawdust/wood_cutter_sawdust.json +0 -592
  190. package/packages/effects/wood_peel_material_test/assets/runtime/woodPeelMaterialTest.v1.js +0 -196
  191. package/packages/effects/wood_peel_material_test/index.ts +0 -11
  192. package/packages/effects/wood_peel_material_test/wood_peel_material_test.json +0 -136
  193. package/packages/env.particle.forest_edge_fog/assets/runtime/particleEmitter.v1.js +0 -210
  194. package/packages/env.particle.forest_edge_fog/assets/textures/f12a23c4-b924-4322-a260-3d982428f1e8.png +0 -0
  195. package/packages/env.particle.forest_edge_fog/assets/textures/yuan.png +0 -0
  196. package/packages/env.particle.forest_edge_fog/effect.json +0 -854
  197. package/packages/env.particle.forest_edge_fog/media/preview.gif +0 -0
  198. package/packages/env.particle.forest_edge_fog/media/preview.mp4 +0 -0
  199. package/packages/env.particle.forest_edge_fog/media/preview.webm +0 -0
  200. package/packages/env.particle.forest_edge_fog/media/thumbnail.png +0 -0
  201. package/packages/env.particle.forest_edge_fog/metadata/description.json +0 -148
  202. package/packages/env.particle.forest_edge_fog/provenance/03-effect.original.json +0 -827
  203. package/packages/env.particle.forest_edge_fog/provenance/03-normalized-vfx-to-babylon-report.json +0 -196
  204. package/packages/env.particle.forest_edge_fog/provenance/04-preview-overrides.json +0 -432
  205. package/packages/env.particle.forest_edge_fog/provenance/04-preview-tuning-report.json +0 -28
  206. package/packages/env.particle.forest_edge_fog/provenance/asset-map.json +0 -124
  207. package/packages/env.particle.forest_edge_fog/provenance/lineage.json +0 -41
  208. package/packages/generation.ts +0 -14
  209. package/packages/index.ts +0 -14
  210. package/packages/legacy-particle-runtime.ts +0 -113
  211. package/packages/manifestRuntimePackage.ts +0 -519
  212. package/packages/registry.ts +0 -85
  213. package/packages/rendering.ts +0 -13
  214. package/packages/resource.particle.viscous_oil_suction/assets/runtime/top_disk_suction/particleEmitter.v1.js +0 -424
  215. package/packages/resource.particle.viscous_oil_suction/assets/textures/Glow ad.png +0 -0
  216. package/packages/resource.particle.viscous_oil_suction/effect.json +0 -1254
  217. package/packages/resource.particle.viscous_oil_suction/media/preview.gif +0 -0
  218. package/packages/resource.particle.viscous_oil_suction/media/preview.mp4 +0 -0
  219. package/packages/resource.particle.viscous_oil_suction/media/preview.webm +0 -0
  220. package/packages/resource.particle.viscous_oil_suction/media/thumbnail.png +0 -0
  221. package/packages/resource.particle.viscous_oil_suction/metadata/description.json +0 -122
  222. package/packages/resource.particle.viscous_oil_suction/provenance/03-effect.original.json +0 -1051
  223. package/packages/resource.particle.viscous_oil_suction/provenance/03-normalized-vfx-to-babylon-report.json +0 -200
  224. package/packages/resource.particle.viscous_oil_suction/provenance/04-preview-overrides.json +0 -581
  225. package/packages/resource.particle.viscous_oil_suction/provenance/04-preview-tuning-report.json +0 -28
  226. package/packages/resource.particle.viscous_oil_suction/provenance/asset-map.json +0 -111
  227. package/packages/resource.particle.viscous_oil_suction/provenance/lineage.json +0 -45
  228. package/packages/types.ts +0 -195
  229. package/tooling/check-dist-runtime.mjs +0 -166
  230. package/tooling/generate-index.mjs +0 -55
  231. package/tooling/test-guardrails.mjs +0 -157
  232. package/tooling/validate-boundary.mjs +0 -92
  233. package/tooling/validate-effects.mjs +0 -304
  234. package/tooling/validate.mjs +0 -53
@@ -1,498 +0,0 @@
1
- {
2
- "schemaVersion": "vfx-effect-package/1.0",
3
- "id": "build.particle.door_open_gold_flakes",
4
- "name": {
5
- "zh": "开门光效",
6
- "en": "Door Open Light FX"
7
- },
8
- "source": {
9
- "engine": "babylon",
10
- "engineVersion": "8.56.2",
11
- "projectPath": "D:/project/lumber_order",
12
- "rootAsset": "src/assets/vfx/effects/door_open_gold_flakes",
13
- "sourceId": "lumber_order/door_open_gold_flakes",
14
- "extractedAt": "2026-06-02T00:00:00.000Z",
15
- "extractorVersion": "manual-lumber-order-vfx/0.1.0",
16
- "canonicalSource": "local",
17
- "legacyId": null,
18
- "previousIds": []
19
- },
20
- "assets": {
21
- "textures": [],
22
- "materials": [],
23
- "meshes": [],
24
- "shaders": [],
25
- "sounds": [],
26
- "scripts": [
27
- {
28
- "kind": "script",
29
- "id": "gold_flakes_v1",
30
- "packagePath": "assets/runtime/goldFlakes.v1.js",
31
- "runtimeId": "goldFlakes/v1",
32
- "engine": "babylon",
33
- "moduleFormat": "esm",
34
- "exports": [
35
- "createGoldFlakesRuntime",
36
- "runtimeContract"
37
- ],
38
- "mimeType": "text/javascript"
39
- }
40
- ],
41
- "raw": []
42
- },
43
- "emitters": [
44
- {
45
- "name": "door_open_gold_flakes_main",
46
- "sourceNodeName": "door_open_gold_flakes_main",
47
- "enabled": true,
48
- "type": "GoldFlakes",
49
- "duration": 1.25,
50
- "effectScale": 1,
51
- "flakeCount": 30,
52
- "areaRadius": 0.72,
53
- "riseHeight": 1.35,
54
- "staggerTime": 0.34,
55
- "scaleX": 1,
56
- "scaleY": 1,
57
- "scaleZ": 1,
58
- "flakeWidth": 0.055,
59
- "flakeHeight": 0.18,
60
- "flakeAlpha": 0.9,
61
- "groundOffsetY": 0.06,
62
- "hdrIntensity": 1.8,
63
- "lightRayCount": 7,
64
- "lightRaySpread": 0.82,
65
- "lightRayWidth": 0.3,
66
- "lightRayHeight": 1.75,
67
- "lightRayOffsetY": 0.62,
68
- "lightRayAlpha": 0.92,
69
- "lightRayScaleX": 1,
70
- "lightRayScaleY": 1,
71
- "lightRayScaleZ": 1,
72
- "lightRayStaggerTime": 0.16,
73
- "glowWidth": 1.55,
74
- "glowHeight": 1.08,
75
- "glowOffsetY": 0.42,
76
- "glowAlpha": 0.72,
77
- "glowIntensity": 4.2,
78
- "glowColor": {
79
- "r": 1,
80
- "g": 0.9,
81
- "b": 0.42,
82
- "a": 1
83
- },
84
- "flakeColor": {
85
- "r": 1,
86
- "g": 0.78,
87
- "b": 0.18,
88
- "a": 1
89
- },
90
- "runtime": {
91
- "adapter": "goldFlakes/v1",
92
- "stopAfterSeconds": 1.25,
93
- "disposeOnComplete": true
94
- }
95
- }
96
- ],
97
- "runtime": {
98
- "driver": "goldFlakes",
99
- "defaultMesh": null,
100
- "defaultOffset": {
101
- "x": 0,
102
- "y": 0,
103
- "z": 0
104
- },
105
- "start": [
106
- "Instantiate Babylon runtime for door_open_gold_flakes"
107
- ],
108
- "update": [
109
- "Apply Babylon tunable parameter overrides"
110
- ],
111
- "stop": [
112
- "Stop and dispose runtime resources"
113
- ],
114
- "adapters": [
115
- {
116
- "id": "goldFlakes/v1",
117
- "engine": "babylon",
118
- "entry": "assets/runtime/goldFlakes.v1.js",
119
- "moduleFormat": "esm",
120
- "exports": [
121
- "createGoldFlakesRuntime",
122
- "runtimeContract"
123
- ]
124
- }
125
- ]
126
- },
127
- "tunableParams": [
128
- {
129
- "key": "door_open_gold_flakes.flakeCount",
130
- "labelZh": "金片数量",
131
- "type": "number",
132
- "default": 30,
133
- "min": 1,
134
- "max": 120,
135
- "step": 1,
136
- "target": {
137
- "emitter": "door_open_gold_flakes_main",
138
- "property": "flakeCount",
139
- "operator": "set"
140
- }
141
- },
142
- {
143
- "key": "door_open_gold_flakes.areaRadius",
144
- "labelZh": "生成范围",
145
- "type": "number",
146
- "default": 0.72,
147
- "min": 0.05,
148
- "max": 3,
149
- "step": 0.01,
150
- "target": {
151
- "emitter": "door_open_gold_flakes_main",
152
- "property": "areaRadius",
153
- "operator": "set"
154
- }
155
- },
156
- {
157
- "key": "door_open_gold_flakes.riseHeight",
158
- "labelZh": "上升高度",
159
- "type": "number",
160
- "default": 1.35,
161
- "min": 0.1,
162
- "max": 5,
163
- "step": 0.01,
164
- "target": {
165
- "emitter": "door_open_gold_flakes_main",
166
- "property": "riseHeight",
167
- "operator": "set"
168
- }
169
- },
170
- {
171
- "key": "door_open_gold_flakes.staggerTime",
172
- "labelZh": "错开时间",
173
- "type": "number",
174
- "default": 0.34,
175
- "min": 0,
176
- "max": 2,
177
- "step": 0.01,
178
- "target": {
179
- "emitter": "door_open_gold_flakes_main",
180
- "property": "staggerTime",
181
- "operator": "set"
182
- }
183
- },
184
- {
185
- "key": "door_open_gold_flakes.flakeSize",
186
- "labelZh": "金片大小",
187
- "type": "number",
188
- "default": 1,
189
- "min": 0.2,
190
- "max": 4,
191
- "step": 0.01,
192
- "targets": [
193
- {
194
- "emitter": "door_open_gold_flakes_main",
195
- "property": "flakeWidth",
196
- "operator": "scaleDefault",
197
- "defaultValue": 0.055
198
- },
199
- {
200
- "emitter": "door_open_gold_flakes_main",
201
- "property": "flakeHeight",
202
- "operator": "scaleDefault",
203
- "defaultValue": 0.18
204
- }
205
- ]
206
- },
207
- {
208
- "key": "door_open_gold_flakes.flakeColor",
209
- "labelZh": "金片颜色",
210
- "type": "color",
211
- "default": "#ffc72e",
212
- "target": {
213
- "emitter": "door_open_gold_flakes_main",
214
- "property": "flakeColor",
215
- "operator": "set"
216
- }
217
- },
218
- {
219
- "key": "door_open_gold_flakes.scaleX",
220
- "labelZh": "X缩放",
221
- "type": "number",
222
- "default": 1,
223
- "min": 0.05,
224
- "max": 5,
225
- "step": 0.01,
226
- "target": {
227
- "emitter": "door_open_gold_flakes_main",
228
- "property": "scaleX",
229
- "operator": "set"
230
- }
231
- },
232
- {
233
- "key": "door_open_gold_flakes.scaleY",
234
- "labelZh": "Y缩放",
235
- "type": "number",
236
- "default": 1,
237
- "min": 0.05,
238
- "max": 5,
239
- "step": 0.01,
240
- "target": {
241
- "emitter": "door_open_gold_flakes_main",
242
- "property": "scaleY",
243
- "operator": "set"
244
- }
245
- },
246
- {
247
- "key": "door_open_gold_flakes.scaleZ",
248
- "labelZh": "Z缩放",
249
- "type": "number",
250
- "default": 1,
251
- "min": 0.05,
252
- "max": 5,
253
- "step": 0.01,
254
- "target": {
255
- "emitter": "door_open_gold_flakes_main",
256
- "property": "scaleZ",
257
- "operator": "set"
258
- }
259
- },
260
- {
261
- "key": "door_open_gold_flakes.hdrIntensity",
262
- "labelZh": "HDR强度",
263
- "type": "number",
264
- "default": 1.8,
265
- "min": 0,
266
- "max": 6,
267
- "step": 0.01,
268
- "target": {
269
- "emitter": "door_open_gold_flakes_main",
270
- "property": "hdrIntensity",
271
- "operator": "set"
272
- }
273
- },
274
- {
275
- "key": "door_open_gold_flakes.flakeAlpha",
276
- "labelZh": "金片透明度",
277
- "type": "number",
278
- "default": 0.9,
279
- "min": 0,
280
- "max": 1,
281
- "step": 0.01,
282
- "target": {
283
- "emitter": "door_open_gold_flakes_main",
284
- "property": "flakeAlpha",
285
- "operator": "set"
286
- }
287
- },
288
- {
289
- "key": "door_open_gold_flakes.effectScale",
290
- "labelZh": "整体缩放",
291
- "type": "number",
292
- "default": 1,
293
- "min": 0.1,
294
- "max": 4,
295
- "step": 0.01,
296
- "target": {
297
- "emitter": "door_open_gold_flakes_main",
298
- "property": "effectScale",
299
- "operator": "set"
300
- }
301
- },
302
- {
303
- "key": "door_open_gold_flakes.lightRayCount",
304
- "labelZh": "光片数量",
305
- "type": "number",
306
- "default": 7,
307
- "min": 0,
308
- "max": 12,
309
- "step": 1,
310
- "target": {
311
- "emitter": "door_open_gold_flakes_main",
312
- "property": "lightRayCount",
313
- "operator": "set"
314
- }
315
- },
316
- {
317
- "key": "door_open_gold_flakes.lightRaySize",
318
- "labelZh": "光片大小",
319
- "type": "number",
320
- "default": 1,
321
- "min": 0.2,
322
- "max": 3,
323
- "step": 0.01,
324
- "targets": [
325
- {
326
- "emitter": "door_open_gold_flakes_main",
327
- "property": "lightRayWidth",
328
- "operator": "scaleDefault",
329
- "defaultValue": 0.22
330
- },
331
- {
332
- "emitter": "door_open_gold_flakes_main",
333
- "property": "lightRayHeight",
334
- "operator": "scaleDefault",
335
- "defaultValue": 1.45
336
- }
337
- ]
338
- },
339
- {
340
- "key": "door_open_gold_flakes.lightRayAlpha",
341
- "labelZh": "光片透明度",
342
- "type": "number",
343
- "default": 0.92,
344
- "min": 0,
345
- "max": 1,
346
- "step": 0.01,
347
- "target": {
348
- "emitter": "door_open_gold_flakes_main",
349
- "property": "lightRayAlpha",
350
- "operator": "set"
351
- }
352
- },
353
- {
354
- "key": "door_open_gold_flakes.lightRayScaleX",
355
- "labelZh": "光片X缩放",
356
- "type": "number",
357
- "default": 1,
358
- "min": 0.05,
359
- "max": 5,
360
- "step": 0.01,
361
- "target": {
362
- "emitter": "door_open_gold_flakes_main",
363
- "property": "lightRayScaleX",
364
- "operator": "set"
365
- }
366
- },
367
- {
368
- "key": "door_open_gold_flakes.lightRayScaleY",
369
- "labelZh": "光片Y缩放",
370
- "type": "number",
371
- "default": 1,
372
- "min": 0.05,
373
- "max": 5,
374
- "step": 0.01,
375
- "target": {
376
- "emitter": "door_open_gold_flakes_main",
377
- "property": "lightRayScaleY",
378
- "operator": "set"
379
- }
380
- },
381
- {
382
- "key": "door_open_gold_flakes.lightRayScaleZ",
383
- "labelZh": "光片Z缩放",
384
- "type": "number",
385
- "default": 1,
386
- "min": 0.05,
387
- "max": 5,
388
- "step": 0.01,
389
- "target": {
390
- "emitter": "door_open_gold_flakes_main",
391
- "property": "lightRayScaleZ",
392
- "operator": "set"
393
- }
394
- },
395
- {
396
- "key": "door_open_gold_flakes.glowIntensity",
397
- "labelZh": "光芒强度",
398
- "type": "number",
399
- "default": 4.2,
400
- "min": 0,
401
- "max": 8,
402
- "step": 0.01,
403
- "target": {
404
- "emitter": "door_open_gold_flakes_main",
405
- "property": "glowIntensity",
406
- "operator": "set"
407
- }
408
- },
409
- {
410
- "key": "door_open_gold_flakes.glowColor",
411
- "labelZh": "光片颜色",
412
- "type": "color",
413
- "default": "#ffe66b",
414
- "target": {
415
- "emitter": "door_open_gold_flakes_main",
416
- "property": "glowColor",
417
- "operator": "set"
418
- }
419
- },
420
- {
421
- "key": "door_open_gold_flakes.duration",
422
- "labelZh": "生命周期",
423
- "type": "number",
424
- "default": 1.25,
425
- "min": 0.1,
426
- "max": 5,
427
- "step": 0.01,
428
- "unit": "s",
429
- "target": {
430
- "emitter": "door_open_gold_flakes_main",
431
- "property": "duration",
432
- "operator": "set"
433
- }
434
- }
435
- ],
436
- "babylon": {
437
- "driver": "goldFlakes",
438
- "previewConfig": {
439
- "textureUrl": null,
440
- "emitterCount": 1,
441
- "effectFile": "door_open_gold_flakes.json",
442
- "normalizedVfx": null
443
- }
444
- },
445
- "debug": {
446
- "playAnchor": "player",
447
- "livePreview": true
448
- },
449
- "review": {
450
- "status": "draft",
451
- "artistNotes": [
452
- "Gold flakes rise straight upward in a staggered area for a door opening effect.",
453
- "Flakes keep a fixed upright orientation and do not use random rotation.",
454
- "Distribution is deterministic but offset so the field does not look grid-like."
455
- ],
456
- "approvedBy": null,
457
- "approvedAt": null
458
- },
459
- "recording": {
460
- "provider": "local-placeholder",
461
- "recordedAt": "2026-06-02T00:00:00.000Z",
462
- "mimeType": "image/png",
463
- "durationSec": 1.25,
464
- "fps": 0,
465
- "media": {
466
- "previewVideo": null,
467
- "previewWebm": null,
468
- "previewMp4": null,
469
- "previewGif": null,
470
- "thumbnail": "media/thumbnail.png",
471
- "contactSheet": "media/contact-sheet.png",
472
- "gcsUri": null
473
- }
474
- },
475
- "search": {
476
- "tags": [
477
- "babylon",
478
- "door open",
479
- "gold flakes",
480
- "rising particles",
481
- "reward feedback",
482
- "casual game"
483
- ],
484
- "descriptionEn": "A field of upright gold flakes that rise straight upward with staggered timing for door opening feedback.",
485
- "useCases": [
486
- "door opening",
487
- "gate unlock",
488
- "reward reveal"
489
- ],
490
- "negativeUseCases": [
491
- "upgrade spiral",
492
- "gear spin",
493
- "dust burst",
494
- "wood chips"
495
- ]
496
- },
497
- "legacyIds": []
498
- }
@@ -1,11 +0,0 @@
1
- import manifest from './door_open_gold_flakes.json';
2
- import runtimeUrl from './assets/runtime/goldFlakes.v1.js?url';
3
- import { createManifestRuntimeEffectPackage } from '../../manifestRuntimePackage';
4
-
5
- export const doorOpenGoldFlakesEffectPackage = createManifestRuntimeEffectPackage({
6
- id: 'door_open_gold_flakes',
7
- manifest,
8
- assetUrls: {
9
- 'assets/runtime/goldFlakes.v1.js': runtimeUrl,
10
- },
11
- });
@@ -1,63 +0,0 @@
1
- // 受击电弧(移植自 babylon-laser createElectricPS, 特效#4)。
2
- // 序列帧粒子(spark_4x4 16帧4x4)绕宿主的立方壳层抖动,受击窗口内持续吐火花。BLENDMODE_ADD。
3
- import { ParticleSystem } from '@babylonjs/core/Particles/particleSystem';
4
- import { Texture } from '@babylonjs/core/Materials/Textures/texture';
5
- import { Color4 } from '@babylonjs/core/Maths/math.color';
6
- import { Vector3 } from '@babylonjs/core/Maths/math.vector';
7
- import type { VfxEffectPackage, VfxParamValues } from '../../types';
8
- import sparkTextureUrl from './assets/textures/spark_4x4.webp?url';
9
-
10
- interface ElectricArcParams extends VfxParamValues {
11
- radius: number;
12
- rate: number;
13
- duration: number;
14
- }
15
-
16
- const DEFAULT_PARAMS: ElectricArcParams = { radius: 1.2, rate: 48, duration: 0.55 };
17
-
18
- export const electricArcEffectPackage: VfxEffectPackage<ElectricArcParams> = {
19
- id: 'electric-arc',
20
- nameZh: '受击电弧',
21
- placement: 'world',
22
- debugAnchor: 'playerRight',
23
- defaultParams: DEFAULT_PARAMS,
24
- debugParams: [
25
- { key: 'radius', label: '环绕半径', kind: 'scale', min: 0.3, max: 4, step: 0.05 },
26
- { key: 'rate', label: '电弧密度', kind: 'number', min: 0, max: 150, step: 1 },
27
- { key: 'duration', label: '持续(s)', kind: 'lifetime', min: 0.1, max: 3, step: 0.05 },
28
- ],
29
-
30
- create({ scene, root, position, params }) {
31
- root.position.copyFrom(position);
32
- const radius = params.radius;
33
- const e = radius * 0.9;
34
- const ps = new ParticleSystem('vfx_elec_ps', 80, scene, null, true); // 序列帧
35
- const tex = new Texture(sparkTextureUrl, scene); tex.hasAlpha = true;
36
- ps.particleTexture = tex;
37
- ps.spriteCellWidth = 128; ps.spriteCellHeight = 128;
38
- ps.startSpriteCellID = 0; ps.endSpriteCellID = 15; ps.spriteCellChangeSpeed = 3;
39
- ps.spriteRandomStartCell = true;
40
- ps.emitter = position.clone();
41
- ps.minEmitBox = new Vector3(-e, -e, -e); ps.maxEmitBox = new Vector3(e, e, e);
42
- ps.direction1 = new Vector3(-0.3, -0.3, -0.3); ps.direction2 = new Vector3(0.3, 0.3, 0.3);
43
- ps.minSize = radius * 2.2; ps.maxSize = radius * 3.6;
44
- ps.minLifeTime = 0.16; ps.maxLifeTime = 0.38;
45
- ps.minInitialRotation = -Math.PI; ps.maxInitialRotation = Math.PI;
46
- ps.color1 = new Color4(0.85, 0.95, 1, 1); ps.color2 = new Color4(0.5, 0.75, 1, 1); ps.colorDead = new Color4(0.2, 0.4, 1, 0);
47
- ps.blendMode = ParticleSystem.BLENDMODE_ADD;
48
- ps.minEmitPower = 0; ps.maxEmitPower = 0.5;
49
- ps.emitRate = params.rate;
50
- ps.start();
51
-
52
- // 受击窗口:duration 后关 emitRate,再等粒子消亡后销毁
53
- let disposed = false;
54
- const stopTimer = window.setTimeout(() => { ps.emitRate = 0; }, params.duration * 1000);
55
- const disposeTimer = window.setTimeout(() => disposeAll(), (params.duration + 0.5) * 1000);
56
- function disposeAll(): void {
57
- if (disposed) return; disposed = true;
58
- window.clearTimeout(stopTimer); window.clearTimeout(disposeTimer);
59
- ps.dispose(); tex.dispose(); root.dispose();
60
- }
61
- return { root, dispose() { disposeAll(); } };
62
- },
63
- };
@@ -1,7 +0,0 @@
1
- {
2
- "id": "energy-shield",
3
- "nameZh": "半球玻璃罩",
4
- "search": {
5
- "tags": ["hemisphere", "glass", "dome", "bloom", "shader", "marble", "flow"]
6
- }
7
- }