1.8 KiB
1.8 KiB
Collecting Asteroids Task Type
Match asteroids to cargo ships by weight sum. Each page has 3 ships with cargo bays and ~12 asteroids scattered across the page. Child draws lines connecting asteroids to ships so that asteroid values sum to ship capacity.
Layout
- 3 ships per page with cargo bay images
- 2 asteroid types per page (70:30 ratio distribution)
- 12 asteroids per page scattered with absolute positioning
- Hero images: splitter ships from
assets/hero-images/splitters/ - Footer images: cabin interiors from
assets/footers/cabin{1-9}.jpeg - Cargo bay images:
assets/icons/pack4-cargobay/cargo-bay{1-9}.png - Asteroid images:
assets/icons/pack3-asteroids/asteroid{1-16}.png
Asteroid Placement Rules
- Distribute asteroids evenly across the page area using grid-based approach
- Asteroids must not overlap with ships or cargo bays
- Each asteroid has a numeric value (1-20) displayed on it
- Scale formula:
scale = baseScale + 0.15 * value(default baseScale: 0.30) - No editor-first approach — generate everything via AI first, editor comes later for fine-tuning
Validation
Use verify script to check that asteroid values can be partitioned to ship capacities:
node scripts/verify.mjs --ships 10,10,14 --asteroids 3,2,1,4,5,2,3,6,5,4,1,6
Always verify solvability after generating or editing asteroid values.
Scripts
scripts/verify.mjs— solver to verify asteroid-to-ship partition (stdout → Claude reads)scripts/transform-collecting3.mjs— bulk asset replacement utility
Editor
editor.html?file={docId} — drag asteroids and ship circles, adjust values and scales.
Key controls:
- Drag: move asteroid/ship position
+/-: change asteroid value (1-20 range)[/]: rotate ±5° (Shift = ±1°)</.>: adjust base scale per asteroid type- Save: writes to
docs/{docId}.data.json