add-assets
Performance Notes
- Take your time to do this thoroughly
- Quality is more important than speed
- Do not skip validation steps
Add Assets
Replace basic geometric shapes (circles, rectangles) with pixel art sprites for all game entities. Every character, enemy, item, and projectile gets a recognizable visual identity — all generated as code, no external image files needed.
Instructions
Analyze the game at $ARGUMENTS (or the current directory if no path given).
First, load the game-assets skill to get the full pixel art system, archetypes, and integration patterns.
Step 1: Audit
- Read
package.jsonto identify the engine (Phaser or Three.js — this skill is Phaser-focused) - Read
src/core/Constants.jsto understand entity types, colors, and sizes - Read all entity files (
src/entities/*.js) and find everygenerateTexture(),fillCircle(),fillRect(), orfillEllipse()call that creates an entity sprite - Read scene files to check for inline shape drawing used as game entities
- List every entity that currently uses geometric shapes
Step 2: Plan
Present a table of sprites to create:
| Entity | Archetype | Grid | Frames | Description |
|---|---|---|---|---|
| Player (personality) | Personality | 32x48 | 1-4 | Caricature of [name], scale 4 |
| Player (generic) | Humanoid | 16x16 | 4 | ... |
| Enemy X | Flying | 16x16 | 2 | ... |
| Pickup | Item | 8x8 | 1 | ... |
If the game features a real person or named personality, default to the Personality archetype for the player character. This uses a 32x48 grid at scale 4 (128x192px rendered, ~35% of canvas height) — large enough to recognize the personality at a glance.
Choose the palette that best matches the game's existing color scheme:
- DARK — gothic, horror, dark fantasy
- BRIGHT — arcade, platformer, casual
- RETRO — NES-style, muted tones
Grid sizes range from 8x8 (tiny pickups) through 16x16 (standard entities) to 32x48 (personality characters). Named characters always use the Personality archetype to ensure the meme hook — recognizing the person — lands immediately.
Step 3: Implement
- Create
src/core/PixelRenderer.js— therenderPixelArt()andrenderSpriteSheet()utility functions - Create
src/sprites/palette.js— the shared color palette - Create sprite data files in
src/sprites/:player.js— player idle + walk framesenemies.js— all enemy type sprites and framesitems.js— pickups, gems, hearts, etc.projectiles.js— bullets, fireballs, bolts (if applicable)
- Update each entity constructor:
- Replace
fillCircle()/generateTexture()withrenderPixelArt()orrenderSpriteSheet() - Add Phaser animations for entities with multiple frames
- Adjust physics body dimensions if sprite size changed (
setCircle()orsetSize())
- Replace
- For static items (gems, pickups), add a bob tween if not already present
Step 4: Verify
- Run
npm run buildto confirm no errors - Check that collision detection still works (physics bodies may need size adjustments)
- List all files created and modified
- Remind the user to run the game and check visuals
- Suggest running
/game-creator:qa-gameto update visual regression snapshots since all entities look different now
Example Usage
Standard game
/add-assets examples/asteroid-dodge
Result: Audits all entities using geometric shapes → creates src/sprites/ with player, asteroids, and gem pixel art → replaces fillCircle()/fillRect() with renderPixelArt() → collision bounds adjusted.
Personality game (from tweet)
/add-assets examples/nick-land-dodger
Result: Detects named personality → uses 32x48 Personality archetype at scale 4 → recognizable caricature as player character → enemies and items get themed pixel art.
Troubleshooting
Sprites appear but are wrong size
Cause: Pixel art dimensions don't match original hitbox. Fix: Keep sprite dimensions close to the original fillRect/fillCircle size. Adjust collision bounds if needed.
Sprites don't appear
Cause: Canvas texture not created before first render frame. Fix: Generate textures in scene preload() or create(), not in update().
Next Step
Tell the user:
Your game entities now have pixel art sprites instead of geometric shapes! Each character, enemy, and item has a distinct visual identity.
Files created:
src/core/PixelRenderer.js— rendering enginesrc/sprites/palette.js— shared color palettesrc/sprites/player.js,enemies.js,items.js— sprite dataRun the game to see the new visuals. If you have Playwright tests, run
/game-creator:qa-gameto update the visual regression snapshots.