Files
rshtirmer bc0ca6e08b feat: 3D asset pipeline — animated characters, model search, OrbitControls template
Add the 3D parallel to the 2D pixel art pipeline:

- scripts/find-3d-asset.mjs: search & download GLBs from Sketchfab, Poly Haven, Poly.pizza
- skills/game-3d-assets: full skill with AssetLoader (SkeletonUtils.clone), OrbitControls
  camera, fadeToAction animation crossfade, camera-relative WASD, per-model facingOffset
- skills/add-3d-assets: user-invocable /add-3d-assets command
- 3d-character-library/: 4 animated GLBs (Soldier, Xbot, Robot, Fox) with manifest.json
- templates/threejs-3d: updated with animated character controller, OrbitControls,
  AssetLoader, third-person camera follow pattern
- examples/3d-asset-test: working demo with character cycling (C key), preloading,
  world props (barrels, crates), animated enemies
- make-game pipeline: Step 1.5 now works for 3D — character selection from library,
  world object search via find-3d-asset.mjs, full subagent instructions

Key learnings baked into skill:
- SkeletonUtils.clone() is mandatory for skeletal models (regular .clone breaks → T-pose)
- Model facing varies: facingOffset per character (Soldier -Z needs +PI, Robot +Z needs 0)
- OrbitControls + target-follow is the proven third-person pattern (from official three.js example)
- Preload all GLBs with Promise.all on startup for instant character cycling

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-25 15:12:47 -05:00

27 lines
748 B
JSON

{
"name": "my-game",
"version": "1.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"test": "npx playwright test",
"test:headed": "npx playwright test --headed",
"test:ui": "npx playwright test --ui",
"test:update-snapshots": "npx playwright test --update-snapshots",
"verify": "node scripts/verify-runtime.mjs",
"validate": "node scripts/validate-architecture.mjs",
"iterate": "node scripts/iterate-client.js --url http://localhost:3000"
},
"dependencies": {
"three": "^0.183.0",
"@strudel/web": "^1.3.0"
},
"devDependencies": {
"vite": "^7.3.1",
"@playwright/test": "^1.58.0",
"@axe-core/playwright": "^4.11.0"
}
}