create-aura3d 3.0.0 → 4.0.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 (402) hide show
  1. package/README.md +1 -1
  2. package/dist/agent-skills.d.ts +38 -0
  3. package/dist/agent-skills.d.ts.map +1 -0
  4. package/dist/agent-skills.js +103 -0
  5. package/dist/agent-skills.js.map +1 -0
  6. package/dist/cli.js +32 -5
  7. package/dist/cli.js.map +1 -1
  8. package/dist/index.d.ts +32 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +52 -10
  11. package/dist/index.js.map +1 -1
  12. package/dist/showcase-spec-artifacts.d.ts +1 -1
  13. package/dist/showcase-spec-game-geometry-extractor.js +8 -11
  14. package/dist/showcase-spec-game-geometry-extractor.js.map +1 -1
  15. package/dist/template-hdri.d.ts +12 -0
  16. package/dist/template-hdri.d.ts.map +1 -0
  17. package/dist/template-hdri.js +49 -0
  18. package/dist/template-hdri.js.map +1 -0
  19. package/hdri/ATTRIBUTION.md +8 -0
  20. package/hdri/autumn_field_puresky_1k.hdr +0 -0
  21. package/hdri/kloppenheim_06_puresky_1k.hdr +0 -0
  22. package/hdri/night-2k.hdr +0 -0
  23. package/hdri/studio_small_08_1k.hdr +0 -0
  24. package/package.json +14 -10
  25. package/skills/agent-files/AGENTS.md +3 -0
  26. package/skills/aura3d-animation-studio/SKILL.md +153 -0
  27. package/skills/aura3d-animation-studio/references/shot-looks.md +26 -0
  28. package/skills/aura3d-art-direction/SKILL.md +84 -0
  29. package/skills/aura3d-art-direction/references/failure-gallery.md +64 -0
  30. package/skills/aura3d-art-direction/references/framing-and-shots.md +45 -0
  31. package/skills/aura3d-art-direction/references/look-recipes.md +32 -0
  32. package/skills/aura3d-art-direction/references/quality-bar.md +103 -0
  33. package/skills/aura3d-art-direction/references/reference-frames.md +82 -0
  34. package/skills/aura3d-assets/SKILL.md +132 -0
  35. package/skills/aura3d-assets/references/preview-under-look.md +26 -0
  36. package/skills/aura3d-browser-game/SKILL.md +127 -0
  37. package/skills/aura3d-browser-game/references/genre-looks.md +52 -0
  38. package/skills/aura3d-character-animation/SKILL.md +129 -0
  39. package/skills/aura3d-character-animation/references/stage-and-lighting.md +31 -0
  40. package/skills/aura3d-core/SKILL.md +121 -0
  41. package/skills/aura3d-core/references/boundaries.md +91 -0
  42. package/skills/aura3d-evidence-review/SKILL.md +106 -0
  43. package/skills/aura3d-game-art/SKILL.md +118 -0
  44. package/skills/aura3d-game-art/references/sheet-check.mjs +58 -0
  45. package/skills/aura3d-game-art/references/sprite-palettes.md +25 -0
  46. package/skills/aura3d-materials-environments/SKILL.md +139 -0
  47. package/skills/aura3d-performance/SKILL.md +97 -0
  48. package/skills/aura3d-retexture/SKILL.md +115 -0
  49. package/skills/aura3d-retexture/references/geometry-hash.mjs +89 -0
  50. package/skills/aura3d-scene-authoring/SKILL.md +132 -0
  51. package/skills/aura3d-scene-authoring/references/look-by-family.md +28 -0
  52. package/skills/aura3d-threejs-migration/SKILL.md +125 -0
  53. package/skills/aura3d-threejs-migration/references/look-mapping.md +27 -0
  54. package/skills/llms.txt +117 -0
  55. package/skills/manifest.json +163 -0
  56. package/skills/meshy-cli/SKILL.md +133 -0
  57. package/templates/animation-channel/.claude/CLAUDE.md +3 -0
  58. package/templates/animation-channel/.github/workflows/aura3d-lookdev.yml +67 -0
  59. package/templates/animation-channel/AGENTS.md +3 -0
  60. package/templates/animation-channel/package.json +4 -3
  61. package/templates/animation-channel/src/main.ts +5 -6
  62. package/templates/animation-channel/src/render-plan.ts +5 -3
  63. package/templates/animation-channel/tests/look-floor.ts +270 -0
  64. package/templates/animation-channel/tests/route-health.spec.ts +13 -0
  65. package/templates/animation-channel/tests/screenshot.spec.ts +10 -5
  66. package/templates/animation-channel/vite.config.ts +7 -0
  67. package/templates/animation-studio/.claude/CLAUDE.md +3 -0
  68. package/templates/animation-studio/.github/workflows/aura3d-lookdev.yml +67 -0
  69. package/templates/animation-studio/AGENTS.md +2 -70
  70. package/templates/animation-studio/package.json +5 -4
  71. package/templates/animation-studio/public/aura-assets/luma.thumb.svg +1 -1
  72. package/templates/animation-studio/public/aura-assets/miko.thumb.svg +1 -1
  73. package/templates/{falling-blocks-starter/public/aura-assets/showcaseBlockfallCabinet.thumb.svg → animation-studio/public/aura-assets/moonGarden.thumb.svg} +1 -1
  74. package/templates/animation-studio/scripts/build-clip-library.ts +6 -5
  75. package/templates/animation-studio/scripts/resolve-asset.ts +7 -4
  76. package/templates/animation-studio/src/asset-contract.ts +19 -0
  77. package/templates/animation-studio/src/aura-assets.ts +651 -54
  78. package/templates/animation-studio/src/scene-player.ts +6 -6
  79. package/templates/animation-studio/src/set-templates.ts +13 -9
  80. package/templates/animation-studio/tests/look-floor.ts +270 -0
  81. package/templates/animation-studio/tests/route-health.spec.ts +2 -2
  82. package/templates/animation-studio/tests/screenshot.spec.ts +18 -10
  83. package/templates/animation-studio/vite.config.ts +2 -0
  84. package/templates/architecture-interior/.claude/CLAUDE.md +3 -0
  85. package/templates/architecture-interior/.github/workflows/aura3d-lookdev.yml +67 -0
  86. package/templates/architecture-interior/AGENTS.md +3 -0
  87. package/templates/architecture-interior/README.md +16 -0
  88. package/templates/architecture-interior/aura.assets.json +24 -0
  89. package/templates/architecture-interior/package.json +24 -0
  90. package/templates/architecture-interior/public/aura-assets/kenneyModularDungeonRoomSmall.a7e74a5f.glb +0 -0
  91. package/templates/architecture-interior/src/aura-assets.ts +16 -0
  92. package/templates/architecture-interior/src/main.ts +23 -0
  93. package/templates/architecture-interior/tests/look-floor.ts +270 -0
  94. package/templates/{three-compat-architecture-interior → architecture-interior}/tests/route-health.spec.ts +3 -3
  95. package/templates/architecture-interior/tests/screenshot.spec.ts +21 -0
  96. package/templates/architecture-interior/vite.config.ts +7 -0
  97. package/templates/arena-shooter/.claude/CLAUDE.md +3 -0
  98. package/templates/arena-shooter/.github/workflows/aura3d-lookdev.yml +67 -0
  99. package/templates/arena-shooter/AGENTS.md +3 -0
  100. package/templates/arena-shooter/README.md +45 -0
  101. package/templates/arena-shooter/aura.assets.json +62 -0
  102. package/templates/arena-shooter/index.html +32 -0
  103. package/templates/arena-shooter/package.json +23 -0
  104. package/templates/arena-shooter/playwright.config.ts +15 -0
  105. package/templates/arena-shooter/public/aura-assets/craft_miner.de323205.glb +0 -0
  106. package/templates/arena-shooter/public/aura-assets/craft_racer.bce8cb3d.glb +0 -0
  107. package/templates/arena-shooter/public/aura-assets/meteor_detailed.f30379ab.glb +0 -0
  108. package/templates/arena-shooter/src/aura-assets.ts +56 -0
  109. package/templates/arena-shooter/src/main.ts +616 -0
  110. package/templates/arena-shooter/tests/look-floor.ts +270 -0
  111. package/templates/arena-shooter/tests/playable.spec.ts +56 -0
  112. package/templates/arena-shooter/tests/route-health.spec.ts +87 -0
  113. package/templates/arena-shooter/tests/screenshot.spec.ts +22 -0
  114. package/templates/arena-shooter/tsconfig.json +15 -0
  115. package/templates/arena-shooter/vite.config.ts +7 -0
  116. package/templates/asset-inspector/.claude/CLAUDE.md +3 -0
  117. package/templates/asset-inspector/.github/workflows/aura3d-lookdev.yml +67 -0
  118. package/templates/asset-inspector/AGENTS.md +3 -0
  119. package/templates/asset-inspector/README.md +13 -0
  120. package/templates/asset-inspector/aura.assets.json +24 -0
  121. package/templates/{three-compat-custom-threejs-migration → asset-inspector}/package.json +6 -4
  122. package/templates/asset-inspector/public/aura-assets/kenneyCarKitSedanSports.2889c428.glb +0 -0
  123. package/templates/asset-inspector/src/aura-assets.ts +16 -0
  124. package/templates/asset-inspector/src/main.ts +23 -0
  125. package/templates/asset-inspector/tests/look-floor.ts +270 -0
  126. package/templates/{three-compat-character-viewer → asset-inspector}/tests/route-health.spec.ts +3 -3
  127. package/templates/asset-inspector/tests/screenshot.spec.ts +21 -0
  128. package/templates/asset-inspector/vite.config.ts +7 -0
  129. package/templates/character-controller/.claude/CLAUDE.md +3 -0
  130. package/templates/character-controller/.github/workflows/aura3d-lookdev.yml +67 -0
  131. package/templates/character-controller/AGENTS.md +3 -0
  132. package/templates/character-controller/README.md +7 -1
  133. package/templates/character-controller/aura.assets.json +29 -22
  134. package/templates/character-controller/index.html +4 -5
  135. package/templates/character-controller/package.json +6 -5
  136. package/templates/character-controller/playwright.config.ts +1 -0
  137. package/templates/character-controller/public/aura-assets/auraclash-player-rig.glb +0 -0
  138. package/templates/character-controller/src/aura-assets.ts +25 -7
  139. package/templates/character-controller/src/main.ts +190 -47
  140. package/templates/character-controller/tests/certified-rig.spec.ts +2 -2
  141. package/templates/character-controller/tests/look-floor.ts +270 -0
  142. package/templates/character-controller/tests/route-health.spec.ts +49 -4
  143. package/templates/character-controller/tests/screenshot.spec.ts +17 -5
  144. package/templates/character-controller/vite.config.ts +7 -0
  145. package/templates/character-viewer/.claude/CLAUDE.md +3 -0
  146. package/templates/character-viewer/.github/workflows/aura3d-lookdev.yml +67 -0
  147. package/templates/character-viewer/AGENTS.md +3 -0
  148. package/templates/character-viewer/README.md +13 -0
  149. package/templates/character-viewer/aura.assets.json +24 -0
  150. package/templates/{three-compat-asset-inspector → character-viewer}/package.json +6 -4
  151. package/templates/character-viewer/public/aura-assets/kenneyMiniForestCharacterArcher.0fd0f92e.glb +0 -0
  152. package/templates/character-viewer/src/aura-assets.ts +16 -0
  153. package/templates/character-viewer/src/main.ts +21 -0
  154. package/templates/character-viewer/tests/look-floor.ts +270 -0
  155. package/templates/{three-compat-custom-threejs-migration → character-viewer}/tests/route-health.spec.ts +3 -3
  156. package/templates/character-viewer/tests/screenshot.spec.ts +21 -0
  157. package/templates/character-viewer/vite.config.ts +7 -0
  158. package/templates/cinematic-scene/.claude/CLAUDE.md +3 -0
  159. package/templates/cinematic-scene/.github/workflows/aura3d-lookdev.yml +67 -0
  160. package/templates/cinematic-scene/AGENTS.md +3 -0
  161. package/templates/cinematic-scene/README.md +11 -2
  162. package/templates/cinematic-scene/package.json +4 -3
  163. package/templates/cinematic-scene/src/main.ts +46 -11
  164. package/templates/cinematic-scene/tests/look-floor.ts +270 -0
  165. package/templates/cinematic-scene/tests/route-health.spec.ts +31 -3
  166. package/templates/cinematic-scene/tests/screenshot.spec.ts +34 -45
  167. package/templates/cinematic-scene/vite.config.ts +7 -0
  168. package/templates/custom-scene/.claude/CLAUDE.md +3 -0
  169. package/templates/custom-scene/.github/workflows/aura3d-lookdev.yml +67 -0
  170. package/templates/custom-scene/AGENTS.md +3 -0
  171. package/templates/custom-scene/README.md +13 -0
  172. package/templates/custom-scene/aura.assets.json +24 -0
  173. package/templates/{three-compat-character-viewer → custom-scene}/package.json +6 -4
  174. package/templates/custom-scene/public/aura-assets/kenneyPirateKitShipMedium.279ea019.glb +0 -0
  175. package/templates/custom-scene/src/aura-assets.ts +16 -0
  176. package/templates/custom-scene/src/main.ts +23 -0
  177. package/templates/custom-scene/tests/look-floor.ts +270 -0
  178. package/templates/{three-compat-asset-inspector → custom-scene}/tests/route-health.spec.ts +3 -3
  179. package/templates/custom-scene/tests/screenshot.spec.ts +21 -0
  180. package/templates/custom-scene/vite.config.ts +7 -0
  181. package/templates/episode-builder/.claude/CLAUDE.md +3 -0
  182. package/templates/episode-builder/.github/workflows/aura3d-lookdev.yml +67 -0
  183. package/templates/episode-builder/AGENTS.md +3 -0
  184. package/templates/episode-builder/package.json +4 -3
  185. package/templates/episode-builder/src/main.ts +5 -3
  186. package/templates/episode-builder/src/render-plan.ts +5 -3
  187. package/templates/episode-builder/tests/look-floor.ts +270 -0
  188. package/templates/episode-builder/tests/route-health.spec.ts +11 -0
  189. package/templates/episode-builder/tests/screenshot.spec.ts +10 -4
  190. package/templates/episode-builder/vite.config.ts +7 -0
  191. package/templates/falling-blocks-starter/.claude/CLAUDE.md +3 -0
  192. package/templates/falling-blocks-starter/.github/workflows/aura3d-lookdev.yml +67 -0
  193. package/templates/falling-blocks-starter/AGENTS.md +3 -0
  194. package/templates/falling-blocks-starter/README.md +10 -1
  195. package/templates/falling-blocks-starter/aura.assets.json +40 -23
  196. package/templates/falling-blocks-starter/package.json +4 -3
  197. package/templates/falling-blocks-starter/public/aura-assets/quaternius-cube-crate.glb +0 -0
  198. package/templates/falling-blocks-starter/public/aura-assets/quaternius-wall-modular.glb +0 -0
  199. package/templates/falling-blocks-starter/src/aura-assets.ts +33 -10
  200. package/templates/falling-blocks-starter/src/main.ts +317 -96
  201. package/templates/falling-blocks-starter/tests/look-floor.ts +270 -0
  202. package/templates/falling-blocks-starter/tests/playable.spec.ts +51 -18
  203. package/templates/falling-blocks-starter/tests/route-health.spec.ts +17 -7
  204. package/templates/falling-blocks-starter/tests/screenshot.spec.ts +21 -0
  205. package/templates/falling-blocks-starter/vite.config.ts +7 -0
  206. package/templates/fighting-game/.claude/CLAUDE.md +3 -0
  207. package/templates/fighting-game/.github/workflows/aura3d-lookdev.yml +67 -0
  208. package/templates/fighting-game/AGENTS.md +3 -0
  209. package/templates/fighting-game/README.md +2 -0
  210. package/templates/fighting-game/aura.assets.json +56 -46
  211. package/templates/fighting-game/package.json +5 -3
  212. package/templates/fighting-game/public/aura-assets/auraclash-player-rig.glb +0 -0
  213. package/templates/fighting-game/public/aura-assets/auraclash-rival-rig.glb +0 -0
  214. package/templates/fighting-game/src/aura-assets.ts +54 -20
  215. package/templates/fighting-game/src/game/fighters.ts +57 -12
  216. package/templates/fighting-game/src/main.ts +135 -53
  217. package/templates/fighting-game/tests/certified-rig.spec.ts +1 -1
  218. package/templates/fighting-game/tests/gameplay-smoke.spec.ts +25 -33
  219. package/templates/fighting-game/tests/look-floor.ts +270 -0
  220. package/templates/fighting-game/tests/route-health.spec.ts +23 -4
  221. package/templates/fighting-game/tests/screenshot.spec.ts +10 -4
  222. package/templates/fighting-game/vite.config.ts +7 -0
  223. package/templates/large-scene/.claude/CLAUDE.md +3 -0
  224. package/templates/large-scene/.github/workflows/aura3d-lookdev.yml +67 -0
  225. package/templates/large-scene/AGENTS.md +3 -0
  226. package/templates/large-scene/README.md +13 -0
  227. package/templates/large-scene/aura.assets.json +40 -0
  228. package/templates/{three-compat-architecture-interior → large-scene}/package.json +6 -4
  229. package/templates/large-scene/public/aura-assets/kenneyMiniForestRocksHigh.226728a0.glb +0 -0
  230. package/templates/large-scene/public/aura-assets/kenneyMiniForestTree.0075d505.glb +0 -0
  231. package/templates/large-scene/src/aura-assets.ts +28 -0
  232. package/templates/large-scene/src/main.ts +43 -0
  233. package/templates/large-scene/tests/look-floor.ts +270 -0
  234. package/templates/large-scene/tests/route-health.spec.ts +16 -0
  235. package/templates/large-scene/tests/screenshot.spec.ts +21 -0
  236. package/templates/large-scene/vite.config.ts +7 -0
  237. package/templates/material-authoring/.claude/CLAUDE.md +3 -0
  238. package/templates/material-authoring/.github/workflows/aura3d-lookdev.yml +67 -0
  239. package/templates/material-authoring/AGENTS.md +3 -0
  240. package/templates/material-authoring/README.md +15 -0
  241. package/templates/material-authoring/aura.assets.json +24 -0
  242. package/templates/material-authoring/package.json +24 -0
  243. package/templates/material-authoring/public/aura-assets/kenneyCarKitSedanSports.2889c428.glb +0 -0
  244. package/templates/material-authoring/src/aura-assets.ts +16 -0
  245. package/templates/material-authoring/src/main.ts +78 -0
  246. package/templates/material-authoring/tests/look-floor.ts +270 -0
  247. package/templates/material-authoring/tests/route-health.spec.ts +16 -0
  248. package/templates/material-authoring/tests/screenshot.spec.ts +21 -0
  249. package/templates/material-authoring/vite.config.ts +7 -0
  250. package/templates/mini-game/.claude/CLAUDE.md +3 -0
  251. package/templates/mini-game/.github/workflows/aura3d-lookdev.yml +67 -0
  252. package/templates/mini-game/AGENTS.md +3 -0
  253. package/templates/mini-game/README.md +9 -6
  254. package/templates/mini-game/aura.assets.json +177 -36
  255. package/templates/mini-game/package.json +4 -2
  256. package/templates/mini-game/public/aura-assets/kaykit-barbarian.glb +0 -0
  257. package/templates/mini-game/public/aura-assets/kenneyPlatformerKitKey.2e930961.glb +0 -0
  258. package/templates/mini-game/public/aura-assets/kenneyPlatformerKitStar.a102a1b9.glb +0 -0
  259. package/templates/mini-game/public/aura-assets/quaternius-crate.glb +0 -0
  260. package/templates/mini-game/public/aura-assets/quaternius-cube-crate.glb +0 -0
  261. package/templates/mini-game/src/aura-assets.ts +140 -32
  262. package/templates/mini-game/src/main.ts +204 -71
  263. package/templates/mini-game/tests/certified-rig.spec.ts +2 -2
  264. package/templates/mini-game/tests/look-floor.ts +270 -0
  265. package/templates/mini-game/tests/playable.spec.ts +23 -2
  266. package/templates/mini-game/tests/route-health.spec.ts +2 -2
  267. package/templates/mini-game/tests/screenshot.spec.ts +44 -53
  268. package/templates/mini-game/vite.config.ts +7 -0
  269. package/templates/postprocess-scene/.claude/CLAUDE.md +3 -0
  270. package/templates/postprocess-scene/.github/workflows/aura3d-lookdev.yml +67 -0
  271. package/templates/postprocess-scene/AGENTS.md +3 -0
  272. package/templates/postprocess-scene/README.md +17 -0
  273. package/templates/postprocess-scene/aura.assets.json +38 -0
  274. package/templates/postprocess-scene/package.json +24 -0
  275. package/templates/postprocess-scene/public/aura-assets/showcaseLuma.ef389217.glb +0 -0
  276. package/templates/postprocess-scene/public/aura-assets/showcaseMiko.fcdc2b75.glb +0 -0
  277. package/templates/postprocess-scene/src/aura-assets.ts +28 -0
  278. package/templates/postprocess-scene/src/main.ts +29 -0
  279. package/templates/postprocess-scene/tests/look-floor.ts +270 -0
  280. package/templates/postprocess-scene/tests/route-health.spec.ts +16 -0
  281. package/templates/postprocess-scene/tests/screenshot.spec.ts +21 -0
  282. package/templates/postprocess-scene/vite.config.ts +7 -0
  283. package/templates/premium-product-viewer/.claude/CLAUDE.md +3 -0
  284. package/templates/premium-product-viewer/.github/workflows/aura3d-lookdev.yml +67 -0
  285. package/templates/premium-product-viewer/AGENTS.md +3 -0
  286. package/templates/premium-product-viewer/README.md +18 -0
  287. package/templates/premium-product-viewer/aura.assets.json +24 -0
  288. package/templates/premium-product-viewer/package.json +24 -0
  289. package/templates/premium-product-viewer/public/aura-assets/khronosToyCar.01a60862.glb +0 -0
  290. package/templates/premium-product-viewer/src/aura-assets.ts +16 -0
  291. package/templates/premium-product-viewer/src/main.ts +33 -0
  292. package/templates/premium-product-viewer/tests/look-floor.ts +270 -0
  293. package/templates/premium-product-viewer/tests/route-health.spec.ts +16 -0
  294. package/templates/premium-product-viewer/tests/screenshot.spec.ts +21 -0
  295. package/templates/premium-product-viewer/vite.config.ts +7 -0
  296. package/templates/product-viewer/.claude/CLAUDE.md +3 -0
  297. package/templates/product-viewer/.github/workflows/aura3d-lookdev.yml +67 -0
  298. package/templates/product-viewer/AGENTS.md +3 -0
  299. package/templates/product-viewer/README.md +10 -8
  300. package/templates/product-viewer/package.json +4 -2
  301. package/templates/product-viewer/src/aura-assets.ts +1 -1
  302. package/templates/product-viewer/src/main.ts +78 -19
  303. package/templates/product-viewer/tests/look-floor.ts +270 -0
  304. package/templates/product-viewer/tests/route-health.spec.ts +19 -1
  305. package/templates/product-viewer/tests/screenshot.spec.ts +35 -41
  306. package/templates/product-viewer/vite.config.ts +7 -0
  307. package/templates/prompt-animation-channel/.claude/CLAUDE.md +3 -0
  308. package/templates/prompt-animation-channel/.github/workflows/aura3d-lookdev.yml +67 -0
  309. package/templates/prompt-animation-channel/AGENTS.md +3 -0
  310. package/templates/prompt-animation-channel/package.json +4 -3
  311. package/templates/prompt-animation-channel/src/main.ts +5 -3
  312. package/templates/prompt-animation-channel/src/render-plan.ts +5 -3
  313. package/templates/prompt-animation-channel/tests/look-floor.ts +270 -0
  314. package/templates/prompt-animation-channel/tests/route-health.spec.ts +12 -1
  315. package/templates/prompt-animation-channel/tests/screenshot.spec.ts +10 -4
  316. package/templates/prompt-animation-channel/tests/storyboard-playback.spec.ts +1 -1
  317. package/templates/prompt-animation-channel/vite.config.ts +7 -0
  318. package/templates/racing-starter/.claude/CLAUDE.md +3 -0
  319. package/templates/racing-starter/.github/workflows/aura3d-lookdev.yml +67 -0
  320. package/templates/racing-starter/AGENTS.md +3 -0
  321. package/templates/racing-starter/README.md +8 -6
  322. package/templates/racing-starter/package.json +4 -3
  323. package/templates/racing-starter/src/main.ts +169 -123
  324. package/templates/racing-starter/tests/geometry-certification.json +34 -0
  325. package/templates/racing-starter/tests/look-floor.ts +270 -0
  326. package/templates/racing-starter/tests/playable.spec.ts +63 -80
  327. package/templates/racing-starter/tests/route-health.spec.ts +14 -12
  328. package/templates/racing-starter/tests/screenshot.spec.ts +21 -0
  329. package/templates/racing-starter/vite.config.ts +7 -0
  330. package/templates/character-controller/public/aura-assets/showcaseWalkAnimatedGirl.93872fc2.glb +0 -0
  331. package/templates/character-controller/public/aura-assets/showcaseWalkAnimatedGirl.thumb.svg +0 -1
  332. package/templates/falling-blocks-starter/public/aura-assets/showcaseBlockfallCabinet.679d52fe.glb +0 -0
  333. package/templates/fighting-game/public/aura-assets/showcaseRunnerRobot.252b3a16.glb +0 -0
  334. package/templates/fighting-game/public/aura-assets/showcaseRunnerRobot.thumb.svg +0 -1
  335. package/templates/fighting-game/public/aura-assets/showcaseWalkAnimatedGirl.93872fc2.glb +0 -0
  336. package/templates/fighting-game/public/aura-assets/showcaseWalkAnimatedGirl.thumb.svg +0 -1
  337. package/templates/mini-game/public/aura-assets/showcaseKenneyOobiPlatformerHero.3f821141.glb +0 -0
  338. package/templates/mini-game/public/aura-assets/showcaseKenneyOobiPlatformerHero.thumb.svg +0 -1
  339. package/templates/three-compat-architecture-interior/aura.assets.json +0 -7
  340. package/templates/three-compat-architecture-interior/src/aura-assets.ts +0 -3
  341. package/templates/three-compat-architecture-interior/src/main.ts +0 -27
  342. package/templates/three-compat-architecture-interior/tests/screenshot.spec.ts +0 -15
  343. package/templates/three-compat-asset-inspector/aura.assets.json +0 -7
  344. package/templates/three-compat-asset-inspector/src/aura-assets.ts +0 -3
  345. package/templates/three-compat-asset-inspector/src/main.ts +0 -17
  346. package/templates/three-compat-asset-inspector/tests/screenshot.spec.ts +0 -15
  347. package/templates/three-compat-character-viewer/aura.assets.json +0 -7
  348. package/templates/three-compat-character-viewer/src/aura-assets.ts +0 -3
  349. package/templates/three-compat-character-viewer/src/main.ts +0 -17
  350. package/templates/three-compat-character-viewer/tests/screenshot.spec.ts +0 -15
  351. package/templates/three-compat-custom-threejs-migration/aura.assets.json +0 -7
  352. package/templates/three-compat-custom-threejs-migration/src/aura-assets.ts +0 -3
  353. package/templates/three-compat-custom-threejs-migration/src/main.ts +0 -16
  354. package/templates/three-compat-custom-threejs-migration/tests/screenshot.spec.ts +0 -15
  355. package/templates/three-compat-large-scene/aura.assets.json +0 -7
  356. package/templates/three-compat-large-scene/package.json +0 -22
  357. package/templates/three-compat-large-scene/src/aura-assets.ts +0 -3
  358. package/templates/three-compat-large-scene/src/main.ts +0 -31
  359. package/templates/three-compat-large-scene/tests/route-health.spec.ts +0 -16
  360. package/templates/three-compat-large-scene/tests/screenshot.spec.ts +0 -15
  361. package/templates/three-compat-material-authoring/aura.assets.json +0 -7
  362. package/templates/three-compat-material-authoring/package.json +0 -22
  363. package/templates/three-compat-material-authoring/src/aura-assets.ts +0 -3
  364. package/templates/three-compat-material-authoring/src/main.ts +0 -33
  365. package/templates/three-compat-material-authoring/tests/route-health.spec.ts +0 -16
  366. package/templates/three-compat-material-authoring/tests/screenshot.spec.ts +0 -15
  367. package/templates/three-compat-postprocess-scene/aura.assets.json +0 -7
  368. package/templates/three-compat-postprocess-scene/package.json +0 -22
  369. package/templates/three-compat-postprocess-scene/src/aura-assets.ts +0 -3
  370. package/templates/three-compat-postprocess-scene/src/main.ts +0 -17
  371. package/templates/three-compat-postprocess-scene/tests/route-health.spec.ts +0 -16
  372. package/templates/three-compat-postprocess-scene/tests/screenshot.spec.ts +0 -15
  373. package/templates/three-compat-premium-product-viewer/aura.assets.json +0 -7
  374. package/templates/three-compat-premium-product-viewer/package.json +0 -22
  375. package/templates/three-compat-premium-product-viewer/src/aura-assets.ts +0 -3
  376. package/templates/three-compat-premium-product-viewer/src/main.ts +0 -18
  377. package/templates/three-compat-premium-product-viewer/tests/route-health.spec.ts +0 -16
  378. package/templates/three-compat-premium-product-viewer/tests/screenshot.spec.ts +0 -15
  379. /package/templates/{three-compat-architecture-interior → architecture-interior}/index.html +0 -0
  380. /package/templates/{three-compat-architecture-interior → architecture-interior}/playwright.config.ts +0 -0
  381. /package/templates/{three-compat-architecture-interior → architecture-interior}/tsconfig.json +0 -0
  382. /package/templates/{three-compat-asset-inspector → asset-inspector}/index.html +0 -0
  383. /package/templates/{three-compat-asset-inspector → asset-inspector}/playwright.config.ts +0 -0
  384. /package/templates/{three-compat-asset-inspector → asset-inspector}/tsconfig.json +0 -0
  385. /package/templates/{three-compat-character-viewer → character-viewer}/index.html +0 -0
  386. /package/templates/{three-compat-character-viewer → character-viewer}/playwright.config.ts +0 -0
  387. /package/templates/{three-compat-character-viewer → character-viewer}/tsconfig.json +0 -0
  388. /package/templates/{three-compat-custom-threejs-migration → custom-scene}/index.html +0 -0
  389. /package/templates/{three-compat-custom-threejs-migration → custom-scene}/playwright.config.ts +0 -0
  390. /package/templates/{three-compat-custom-threejs-migration → custom-scene}/tsconfig.json +0 -0
  391. /package/templates/{three-compat-large-scene → large-scene}/index.html +0 -0
  392. /package/templates/{three-compat-large-scene → large-scene}/playwright.config.ts +0 -0
  393. /package/templates/{three-compat-large-scene → large-scene}/tsconfig.json +0 -0
  394. /package/templates/{three-compat-material-authoring → material-authoring}/index.html +0 -0
  395. /package/templates/{three-compat-material-authoring → material-authoring}/playwright.config.ts +0 -0
  396. /package/templates/{three-compat-material-authoring → material-authoring}/tsconfig.json +0 -0
  397. /package/templates/{three-compat-postprocess-scene → postprocess-scene}/index.html +0 -0
  398. /package/templates/{three-compat-postprocess-scene → postprocess-scene}/playwright.config.ts +0 -0
  399. /package/templates/{three-compat-postprocess-scene → postprocess-scene}/tsconfig.json +0 -0
  400. /package/templates/{three-compat-premium-product-viewer → premium-product-viewer}/index.html +0 -0
  401. /package/templates/{three-compat-premium-product-viewer → premium-product-viewer}/playwright.config.ts +0 -0
  402. /package/templates/{three-compat-premium-product-viewer → premium-product-viewer}/tsconfig.json +0 -0
@@ -5,64 +5,74 @@
5
5
  "typegen": "src/aura-assets.ts",
6
6
  "assets": [
7
7
  {
8
- "id": "showcaseWalkAnimatedGirl",
8
+ "id": "auraclashPlayerRig",
9
9
  "type": "model",
10
10
  "format": "glb",
11
- "source": "public/aura-assets/showcaseWalkAnimatedGirl.93872fc2.glb",
12
- "outputPath": "public/aura-assets/showcaseWalkAnimatedGirl.93872fc2.glb",
13
- "url": "/aura-assets/showcaseWalkAnimatedGirl.93872fc2.glb",
14
- "hash": "sha256-93872fc24240a071b6195d6f1339f40b09b3308dc998311252d21ebd9042d8c6",
15
- "sizeBytes": 3791152,
16
- "bounds": [
17
- 86.929,
18
- 161.836,
19
- 37.758
20
- ],
21
- "materials": [
22
- "material_0",
23
- "material_1",
24
- "material_0_0",
25
- "material_0_1",
26
- "material_0_2",
27
- "material_0_3",
28
- "material_0_4"
29
- ],
11
+ "source": "public/aura-assets/auraclash-player-rig.glb",
12
+ "outputPath": "public/aura-assets/auraclash-player-rig.glb",
13
+ "url": "/aura-assets/auraclash-player-rig.glb",
14
+ "hash": "sha256-3318d671632878ed27b8af6de88c6e5ca647e0d4a04cf03780d555fa07cec087",
15
+ "sizeBytes": 7822664,
16
+ "materials": [],
30
17
  "animations": [
31
- "Take 001"
18
+ "Crouch_Idle_Loop",
19
+ "Death01",
20
+ "Hit_Chest",
21
+ "Hit_Head",
22
+ "Idle_Loop",
23
+ "Jump_Loop",
24
+ "Punch_Cross",
25
+ "Punch_Jab",
26
+ "Sprint_Loop",
27
+ "Sword_Attack",
28
+ "Walk_Loop",
29
+ "Sword_Block"
32
30
  ],
33
31
  "textures": [],
34
- "thumbnailUrl": "/aura-assets/showcaseWalkAnimatedGirl.thumb.svg"
32
+ "libraryId": "auraclash-player-rig",
33
+ "libraryKit": "characters/humanoid-pbr",
34
+ "license": "CC0",
35
+ "attribution": "Quaternius",
36
+ "sourcePage": "https://quaternius.itch.io/modular-character-outfits-fantasy",
37
+ "bounds": [
38
+ 1.669,
39
+ 1.788,
40
+ 0.349
41
+ ]
35
42
  },
36
43
  {
37
- "id": "showcaseRunnerRobot",
44
+ "id": "auraclashRivalRig",
38
45
  "type": "model",
39
46
  "format": "glb",
40
- "source": "public/aura-assets/showcaseRunnerRobot.252b3a16.glb",
41
- "outputPath": "public/aura-assets/showcaseRunnerRobot.252b3a16.glb",
42
- "url": "/aura-assets/showcaseRunnerRobot.252b3a16.glb",
43
- "hash": "sha256-252b3a16d5a8d7fd67a4304ec8135d4fa492802a31bc2fc2d4614e130a1f4e73",
44
- "sizeBytes": 5500216,
45
- "bounds": [
46
- 17.509,
47
- 9.101,
48
- 27.461
49
- ],
50
- "materials": [
51
- "HEAD",
52
- "EYES",
53
- "BODY",
54
- "HINGE",
55
- "material",
56
- "material_5"
57
- ],
47
+ "source": "public/aura-assets/auraclash-rival-rig.glb",
48
+ "outputPath": "public/aura-assets/auraclash-rival-rig.glb",
49
+ "url": "/aura-assets/auraclash-rival-rig.glb",
50
+ "hash": "sha256-c8d844dc4a70bc5d548c1bdd5c20c7a2f336529088fd350098431adf87cdf13b",
51
+ "sizeBytes": 4732472,
52
+ "materials": [],
58
53
  "animations": [
59
- "IDLE",
60
- "WALK",
61
- "RUN",
62
- "ALL"
54
+ "Hit_Knockback",
55
+ "Idle_FoldArms_Loop",
56
+ "LayToIdle",
57
+ "Melee_Hook",
58
+ "NinjaJump_Idle_Loop",
59
+ "Shield_Dash_RM",
60
+ "Sword_Block",
61
+ "Sword_Regular_A",
62
+ "Sword_Regular_Combo",
63
+ "Zombie_Walk_Fwd_Loop"
63
64
  ],
64
65
  "textures": [],
65
- "thumbnailUrl": "/aura-assets/showcaseRunnerRobot.thumb.svg"
66
+ "libraryId": "auraclash-rival-rig",
67
+ "libraryKit": "characters/humanoid-pbr",
68
+ "license": "CC0",
69
+ "attribution": "Quaternius",
70
+ "sourcePage": "https://quaternius.itch.io/modular-character-outfits-fantasy",
71
+ "bounds": [
72
+ 1.799,
73
+ 1.869,
74
+ 0.373
75
+ ]
66
76
  }
67
77
  ]
68
78
  }
@@ -11,11 +11,13 @@
11
11
  "test": "playwright test tests/route-health.spec.ts tests/gameplay-smoke.spec.ts tests/certified-rig.spec.ts --workers=1"
12
12
  },
13
13
  "dependencies": {
14
- "@aura3d/engine": "3.0.0",
15
- "@aura3d/navigation-recast": "3.0.0"
14
+ "@aura3d/engine": "4.0.0",
15
+ "@aura3d/navigation-recast": "4.0.0",
16
+ "@aura3d/assets": "4.0.0"
16
17
  },
17
18
  "devDependencies": {
18
- "@playwright/test": "^1.52.0",
19
+ "@playwright/test": "1.59.1",
20
+ "@types/node": "^22.15.30",
19
21
  "typescript": "^5.8.3",
20
22
  "vite": "^7.3.2"
21
23
  }
@@ -2,41 +2,75 @@ import { defineAuraAssets } from "@aura3d/engine";
2
2
 
3
3
  export const assets = defineAuraAssets({
4
4
  /*
5
- * Certified E1 hero rigs ship as the default fighters (see
6
- * docs/rendering/skinning-and-morphs.md "Certified hero rigs"):
7
- * - player: showcaseWalkAnimatedGirl (humanoid-a) / "Take 001"
8
- * - rival: showcaseRunnerRobot (creature) / "WALK"
5
+ * Library humanoid rigs ship as the default fighters (#481 mapping;
6
+ * characters/humanoid-pbr kit, CC0/Quaternius):
7
+ * - player: auraclashPlayerRig / "Idle_Loop"
8
+ * - rival: auraclashRivalRig / "Zombie_Walk_Fwd_Loop"
9
9
  *
10
10
  * Swap in your own fighter GLBs with the Aura3D CLI and keep these keys so
11
11
  * src/main.ts keeps mounting typed models instead of source placeholders:
12
12
  *
13
- * npx @aura3d/cli@latest assets add ./assets/player-fighter.glb --name showcaseWalkAnimatedGirl
14
- * npx @aura3d/cli@latest assets add ./assets/rival-fighter.glb --name showcaseRunnerRobot
13
+ * npx @aura3d/cli@latest assets add ./assets/player-fighter.glb --name auraclashPlayerRig
14
+ * npx @aura3d/cli@latest assets add ./assets/rival-fighter.glb --name auraclashRivalRig
15
15
  */
16
- showcaseWalkAnimatedGirl: {
16
+ auraclashPlayerRig: {
17
17
  type: "model",
18
18
  format: "glb",
19
- url: "/aura-assets/showcaseWalkAnimatedGirl.93872fc2.glb",
20
- bounds: [86.929, 161.836, 37.758],
21
- hash: "sha256-93872fc24240a071b6195d6f1339f40b09b3308dc998311252d21ebd9042d8c6",
19
+ url: "/aura-assets/auraclash-player-rig.glb",
20
+ bounds: [1.669, 1.788, 0.349],
21
+ hash: "sha256-3318d671632878ed27b8af6de88c6e5ca647e0d4a04cf03780d555fa07cec087",
22
22
  metadata: {
23
- materials: ["material_0", "material_1", "material_0_0", "material_0_1", "material_0_2", "material_0_3", "material_0_4"],
24
- animations: ["Take 001"],
23
+ materials: [],
24
+ animations: [
25
+ "Crouch_Idle_Loop",
26
+ "Death01",
27
+ "Hit_Chest",
28
+ "Hit_Head",
29
+ "Idle_Loop",
30
+ "Jump_Loop",
31
+ "Punch_Cross",
32
+ "Punch_Jab",
33
+ "Sprint_Loop",
34
+ "Sword_Attack",
35
+ "Walk_Loop",
36
+ "Sword_Block"
37
+ ],
25
38
  textures: [],
26
- thumbnailUrl: "/aura-assets/showcaseWalkAnimatedGirl.thumb.svg"
39
+ thumbnailUrl: "",
40
+ libraryId: "auraclash-player-rig",
41
+ libraryKit: "characters/humanoid-pbr",
42
+ license: "CC0",
43
+ attribution: "Quaternius",
44
+ sourcePage: "https://quaternius.itch.io/modular-character-outfits-fantasy"
27
45
  }
28
46
  },
29
- showcaseRunnerRobot: {
47
+ auraclashRivalRig: {
30
48
  type: "model",
31
49
  format: "glb",
32
- url: "/aura-assets/showcaseRunnerRobot.252b3a16.glb",
33
- bounds: [17.509, 9.101, 27.461],
34
- hash: "sha256-252b3a16d5a8d7fd67a4304ec8135d4fa492802a31bc2fc2d4614e130a1f4e73",
50
+ url: "/aura-assets/auraclash-rival-rig.glb",
51
+ bounds: [1.799, 1.869, 0.373],
52
+ hash: "sha256-c8d844dc4a70bc5d548c1bdd5c20c7a2f336529088fd350098431adf87cdf13b",
35
53
  metadata: {
36
- materials: ["HEAD", "EYES", "BODY", "HINGE", "material", "material_5"],
37
- animations: ["IDLE", "WALK", "RUN", "ALL"],
54
+ materials: [],
55
+ animations: [
56
+ "Hit_Knockback",
57
+ "Idle_FoldArms_Loop",
58
+ "LayToIdle",
59
+ "Melee_Hook",
60
+ "NinjaJump_Idle_Loop",
61
+ "Shield_Dash_RM",
62
+ "Sword_Block",
63
+ "Sword_Regular_A",
64
+ "Sword_Regular_Combo",
65
+ "Zombie_Walk_Fwd_Loop"
66
+ ],
38
67
  textures: [],
39
- thumbnailUrl: "/aura-assets/showcaseRunnerRobot.thumb.svg"
68
+ thumbnailUrl: "",
69
+ libraryId: "auraclash-rival-rig",
70
+ libraryKit: "characters/humanoid-pbr",
71
+ license: "CC0",
72
+ attribution: "Quaternius",
73
+ sourcePage: "https://quaternius.itch.io/modular-character-outfits-fantasy"
40
74
  }
41
75
  }
42
76
  } as const);
@@ -8,20 +8,49 @@ import {
8
8
  primitives
9
9
  } from "@aura3d/engine";
10
10
 
11
+ /**
12
+ * T0.9a clip-map contract (Q-06-8 / #488). The engine's `validateClipMap` lives
13
+ * on the in-repo lane barrel, which the published `@aura3d/engine` does not
14
+ * export, so a scaffolded project could not type-check or bundle the import.
15
+ * Same contract here: every required state must map to an embedded clip
16
+ * (else FIGHTER_CLIP_MISSING with the list); each stand-in warns once.
17
+ */
18
+ interface AuraClipMapEntry {
19
+ readonly clip: string;
20
+ readonly standIn?: boolean;
21
+ }
22
+
23
+ function validateClipMap<State extends string>(
24
+ map: Record<State, AuraClipMapEntry>,
25
+ options: { readonly availableClips: readonly string[]; readonly requiredStates: readonly State[]; readonly label: string }
26
+ ): void {
27
+ const available = new Set(options.availableClips);
28
+ const missing: string[] = [];
29
+ for (const state of options.requiredStates) {
30
+ const entry = map[state];
31
+ if (!entry || !available.has(entry.clip)) {
32
+ missing.push(entry ? `${state}→"${entry.clip}"` : state);
33
+ } else if (entry.standIn === true) {
34
+ console.warn(`FIGHTER_CLIP_STAND_IN: ${options.label} state "${state}" stands in with "${entry.clip}".`);
35
+ }
36
+ }
37
+ if (missing.length > 0) throw new Error(`FIGHTER_CLIP_MISSING (${options.label}): ${missing.join(", ")}`);
38
+ }
39
+
11
40
  export type FighterId = "player" | "rival";
12
41
  /**
13
- * Certified E1 hero rigs mounted as the two fighters. The asset keys ARE the
14
- * certification roster ids (docs/rendering/skinning-and-morphs.md), so the
15
- * mounted asset id asserts directly against the roster:
16
- * - player: showcaseWalkAnimatedGirl (humanoid-a) / "Take 001"
17
- * - rival: showcaseRunnerRobot (creature) / "WALK"
42
+ * Library humanoid rigs mounted as the two fighters (#481 mapping;
43
+ * characters/humanoid-pbr kit). The asset keys ARE the manifest ids, so the
44
+ * mounted asset id asserts directly against the template manifest:
45
+ * - player: auraclashPlayerRig / "Idle_Loop"
46
+ * - rival: auraclashRivalRig / "Zombie_Walk_Fwd_Loop"
18
47
  */
19
- export const PLAYER_FIGHTER_ASSET = "showcaseWalkAnimatedGirl" as const;
20
- export const RIVAL_FIGHTER_ASSET = "showcaseRunnerRobot" as const;
48
+ export const PLAYER_FIGHTER_ASSET = "auraclashPlayerRig" as const;
49
+ export const RIVAL_FIGHTER_ASSET = "auraclashRivalRig" as const;
21
50
  export type FighterAssetKey = typeof PLAYER_FIGHTER_ASSET | typeof RIVAL_FIGHTER_ASSET;
22
51
  export const FIGHTER_CERTIFIED_CLIP: Record<FighterId, string> = {
23
- player: "Take 001",
24
- rival: "WALK"
52
+ player: "Idle_Loop",
53
+ rival: "Zombie_Walk_Fwd_Loop"
25
54
  };
26
55
  export type FighterClip = "idle" | "walk" | "jump" | "dash" | "guard" | "light" | "heavy" | "special" | "hitstun";
27
56
 
@@ -47,10 +76,10 @@ export const REQUIRED_FIGHTER_CLIPS: readonly FighterClip[] = [
47
76
  ];
48
77
 
49
78
  export const publicAssetInstructions = [
50
- "certified default heroes: showcaseWalkAnimatedGirl (player) + showcaseRunnerRobot (rival)",
79
+ "certified default heroes: auraclashPlayerRig (player) + auraclashRivalRig (rival)",
51
80
  "npx @aura3d/cli@latest assets search \"animated humanoid fighting character\" --profile fighting-character --json",
52
- "npx @aura3d/cli@latest assets resolve \"animated humanoid fighting character\" --name showcaseWalkAnimatedGirl --profile fighting-character",
53
- "npx @aura3d/cli@latest assets resolve \"animated creature fighting character\" --name showcaseRunnerRobot --profile fighting-character",
81
+ "npx @aura3d/cli@latest assets resolve \"animated humanoid fighting character\" --name auraclashPlayerRig --profile fighting-character",
82
+ "npx @aura3d/cli@latest assets resolve \"animated creature fighting character\" --name auraclashRivalRig --profile fighting-character",
54
83
  "npx @aura3d/cli@latest assets validate-game --profile fighting-character --json"
55
84
  ] as const;
56
85
 
@@ -95,6 +124,22 @@ export function createFighterAnimationController(
95
124
  id: FighterId,
96
125
  asset?: AuraAssetRef<"model">
97
126
  ): AnimationController<FighterClip> {
127
+ if (asset) {
128
+ // Adopt the T0.9a clip-map contract (Q-06-8 / #488): every fighter state
129
+ // resolves through `validateClipMap` against the embedded GLB clips, so an
130
+ // absent clip throws FIGHTER_CLIP_MISSING and stand-ins warn uniformly.
131
+ const certified = FIGHTER_CERTIFIED_CLIP[id];
132
+ // No fallback to the certified clip: an asset without embedded animation
133
+ // metadata must fail validation, not pass it by assumption.
134
+ const embedded = asset.metadata?.animations;
135
+ const availableClips = Array.isArray(embedded)
136
+ ? embedded.filter((clip): clip is string => typeof clip === "string")
137
+ : [];
138
+ const clipMap = Object.fromEntries(
139
+ REQUIRED_FIGHTER_CLIPS.map((state) => [state, { clip: certified, standIn: true as const }])
140
+ ) as Record<FighterClip, AuraClipMapEntry>;
141
+ validateClipMap(clipMap, { availableClips, requiredStates: REQUIRED_FIGHTER_CLIPS, label: id });
142
+ }
98
143
  return new AnimationController<FighterClip>({
99
144
  id: `${id}-animation-controller`,
100
145
  ...(asset ? { clipRegistry: animationClipRegistry(asset) } : {}),