Pixel Art Professional
Overview
This Skill provides advanced pixel art techniques for refining and polishing sprites. It handles dithering patterns, palette optimization, color theory, shading techniques, and antialiasing for professional-quality pixel art.
When to Use
Use this Skill when the user:
- Wants to apply "dithering" or mentions dither patterns
- Asks about "palette optimization" or "color reduction"
- Mentions "shading", "highlights", "shadows", or "lighting"
- Requests "antialiasing", "smoothing", or "edge refinement"
- Talks about "color ramps", "gradients", or "color theory"
- Wants to "polish" or "refine" existing pixel art
- Mentions specific techniques like "Bayer dithering" or "Floyd-Steinberg"
Trigger Keywords: dithering, palette, shading, antialiasing, smooth, gradient, color ramp, polish, refine, color theory, quantize
Instructions
1. Understanding Dithering
Dithering creates the illusion of additional colors by mixing pixels of available colors in patterns.
When to Use Dithering:
- Reducing color count (e.g., 256 colors → 16 colors)
- Creating smooth gradients with limited palettes
- Simulating textures (fabric, metal, stone)
- Retro aesthetic (classic games used dithering extensively)
Dithering Algorithms:
Ordered Dithering (Bayer Matrix):
- Uses fixed pattern matrix (2x2, 4x4, 8x8)
- Predictable, regular pattern
- Best for: textures, backgrounds, retro look
- Fast and consistent
Error Diffusion (Floyd-Steinberg):
- Distributes color error to neighboring pixels
- More organic, less regular pattern
- Best for: gradients, natural images, smooth transitions
- Slower but higher quality
Common Dithering Patterns:
- Checkerboard: Simple 2-color alternating pattern
- Bayer 2x2: Basic ordered dithering
- Bayer 4x4: More subtle ordered dithering
- Bayer 8x8: Very subtle, near-gradient appearance
- Floyd-Steinberg: Error diffusion for smooth gradients
2. Palette Management
Color Quantization:
Use mcp__aseprite__quantize_palette to reduce sprite colors intelligently:
- Analyzes sprite colors
- Finds optimal limited palette
- Remaps pixels to new palette
- Preserves visual quality
Palette Optimization Workflow:
- Get current sprite info and palette
- Decide target color count (4, 8, 16, 32, 64, 256)
- Apply quantization with optional dithering
- Review and adjust palette if needed
Common Palette Sizes:
- 4 colors: Game Boy, ZX Spectrum per-sprite
- 8 colors: CGA, early arcade
- 16 colors: NES, Master System, early VGA
- 32 colors: SNES per-background, Amiga OCS
- 64 colors: Genesis, PC Engine
- 256 colors: VGA, SNES full palette, Amiga AGA
Palette Theory:
- Color Ramps: Gradual transitions from dark to light for shading
- Hue Shifting: Changing hue slightly in shadows/highlights for vibrant look
- Saturation: Higher saturation in midtones, lower in shadows/highlights
- Contrast: Ensure sufficient contrast between key elements
3. Shading Techniques
Types of Shading:
Flat Shading (No Shading):
- Single color per surface
- Simple, iconic look
- Best for: UI icons, simple sprites, minimalist style
Cell Shading (Hard Shading):
- Distinct color bands with hard edges
- 2-3 colors per surface (base, shadow, highlight)
- Best for: cartoon style, bold graphics, readable sprites
Soft Shading (Dithered Shading):
- Gradual transitions using dithering
- Smooth appearance with limited colors
- Best for: realistic look, smooth surfaces, gradients
Pixel Clusters:
- Manual dithering with strategic pixel placement
- Organic, hand-crafted appearance
- Best for: metal, fabric textures, custom look
Shading Workflow:
- Identify light source direction
- Determine base color
- Create darker shade for shadows (hue shift toward blue/purple)
- Create lighter shade for highlights (hue shift toward yellow/white)
- Apply shadows on surfaces away from light
- Apply highlights on surfaces toward light
- Add reflected light in deep shadows (subtle)
Common Shading Mistakes:
- Pure black shadows (use dark hue-shifted colors instead)
- Pure white highlights (use light tinted colors instead)
- No hue shifting (shadows/highlights same hue as base)
- Pillow shading (shading around edges instead of from light source)
4. Antialiasing
Purpose: Smooth jagged edges and diagonal lines by adding intermediate colors.
When to Use Antialiasing:
- Diagonal lines look jagged
- Curves appear stepped
- Edges need smoothing
- Higher resolution sprites (64x64+)
When NOT to Use Antialiasing:
- Very small sprites (16x16 or smaller)
- Intentional pixelated aesthetic
- High-contrast situations (AA reduces contrast)
- Limited palette (need intermediate colors)
Manual Antialiasing Technique:
- Identify jagged edge
- Find intermediate color between edge and background
- Place intermediate pixels at edge "steps"
- Use 1-pixel wide AA (avoid thick fuzzy edges)
- AA selectively (not every edge needs it)
Automated Antialiasing:
- Some tools offer automatic edge smoothing
- Use with caution (can blur intended sharpness)
- Manual AA gives better control
5. Color Theory for Pixel Art
HSV/HSB Model:
- Hue: Color type (red, blue, green, etc.)
- Saturation: Color intensity (vivid vs. gray)
- Value/Brightness: Lightness (dark vs. light)
Creating Color Ramps:
- Start with base color (midtone)
- Create shadow: lower value, optionally shift hue toward cool (blue/purple)
- Create highlight: raise value, optionally shift hue toward warm (yellow/white)
- Create midtone between base and shadow
- Create midtone between base and highlight
- Result: 5-color ramp (deep shadow, shadow, base, highlight, bright highlight)
Hue Shifting:
- Shadows: shift toward blue, purple, or complementary color
- Highlights: shift toward yellow, orange, or light source color
- Creates vibrant, lively colors instead of flat gradients
Contrast:
- Ensure important elements have high value contrast
- Background should contrast with foreground
- Silhouette should be readable in solid black
Color Harmony:
- Monochromatic: Variations of single hue
- Analogous: Adjacent hues on color wheel
- Complementary: Opposite hues on color wheel
- Triadic: Three evenly spaced hues
6. Professional Workflows
Workflow 1: Palette Reduction with Dithering
User Request: "Reduce this sprite to 16 colors with dithering"
Approach:
- Get current sprite info
- Check current palette size
- Use
mcp__aseprite__quantize_palettewith:- target_colors: 16
- algorithm: "median_cut" or "kmeans"
- dither: true (enables Floyd-Steinberg dithering)
- Review result and adjust if needed
Workflow 2: Adding Shading to Flat Sprite
User Request: "Add shading to this sprite with light from top-left"
Option A - Automatic Shading (Quick):
- Use
mcp__aseprite__apply_auto_shadingwith:- light_direction: "top_left"
- intensity: 0.3-0.7 (adjust to preference)
- style: "smooth", "hard", or "pillow"
- hue_shift: true (for vibrant results)
- Tool automatically detects regions and adds shading
- Review and manually refine if needed
Option B - Manual Shading (Precise):
- Analyze sprite structure
- Identify base colors
- Create shadow colors (darker, hue-shifted)
- Create highlight colors (lighter, hue-shifted)
- Update palette with new colors
- Draw shadows on bottom-right surfaces
- Draw highlights on top-left surfaces
- Add subtle reflected light in deep shadows
Workflow 3: Smoothing Jagged Edges
User Request: "Smooth out the edges on this character"
Approach:
- Identify jagged diagonal lines and curves
- Find edge color and background color
- Create intermediate colors (1-2 shades between)
- Place AA pixels at edge steps
- Review and refine (avoid over-smoothing)
Workflow 4: Converting to Retro Palette (Full Palette Conversion)
User Request: "Convert this to NES palette"
Approach:
- Use
mcp__aseprite__quantize_palettewith retro palette colors - Specify target palette (e.g., 54 NES colors, 4 Game Boy colors, 16 C64 colors)
- Algorithm maps each pixel to nearest palette color
- Pixels are remapped to new palette indices
- Optionally apply dithering for smoother transitions
- Verify all colors match target palette
IMPORTANT: Use quantize_palette, NOT set_palette. The set_palette tool only replaces the color table without remapping pixel data, which will produce incorrect colors in indexed mode.
Example:
quantize_palette(
sprite_path: "sprite.aseprite",
target_colors: 54, # NES full palette
algorithm: "median_cut",
convert_to_indexed: true,
dither: false # or true for Bayer dithering
)
7. Dithering Patterns Reference
2-Color Patterns:
Checkerboard (50% mix):
A B A B
B A B A
A B A B
B A B A
25% Pattern:
A A B A
A A A A
B A A A
A A A A
75% Pattern:
B B A B
B B B B
A B B B
B B B B
Bayer 2x2:
Threshold matrix:
0 2
3 1
If pixel value > threshold, use lighter color
Bayer 4x4:
0 8 2 10
12 4 14 6
3 11 1 9
15 7 13 5
Note: See dithering-patterns.md for comprehensive pattern library.
8. Technical Details
Quantization Parameters:
- Target colors: 2-256
- Dithering: optional, specify algorithm
- Alpha handling: preserve transparency or flatten
Palette Constraints:
- RGB mode: No palette constraints
- Indexed mode: Max 256 colors
- Grayscale: 256 shades of gray
Performance:
- Quantization: ~100-500ms depending on sprite size
- Dithering: ~200-800ms depending on algorithm and size
- Manual pixel operations: <50ms per operation
9. Common Patterns
Pattern: Quick Polish For "make this look better" requests:
- Check palette (reduce if too many colors)
- Add basic shading (light source from top-left)
- Add selective antialiasing on curves
- Adjust contrast if needed
Pattern: Retro Conversion For "make this look retro" requests:
- Reduce to appropriate palette (4, 8, or 16 colors)
- Apply ordered dithering (Bayer)
- Remove antialiasing (make edges sharp)
- Ensure pixel-perfect alignment
Pattern: Smooth Gradient For "smooth out the colors" requests:
- Analyze color distribution
- Apply Floyd-Steinberg dithering
- Optional: slight quantization to clean up palette
- Verify smooth transitions
Integration with Other Skills
- Start with pixel-art-creator for base sprite before polishing
- Use pixel-art-animator for animation, then polish with this Skill
- Hand off to pixel-art-exporter when refinement is complete
Error Handling
Quantization fails:
- Target color count must be 2-256
- Sprite must have content (not blank)
Dithering issues:
- Requires sufficient color depth
- May not work well with very limited palettes
- Some algorithms better for certain content
Palette conflicts:
- Indexed mode has strict limits
- Converting to indexed may require quantization first
Success Indicators
You've successfully used this Skill when:
- Dithering applied produces smooth gradients or textures
- Palette reduced while preserving visual quality
- Shading adds depth and dimension
- Antialiasing smooths edges without blurring
- Colors follow good color theory principles
- Sprite has professional, polished appearance