# 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: ```bash 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`