Files
2025-11-30 09:06:21 +08:00

5.8 KiB

Pixel Art Creator - Technical Reference

Color Mode Reference

RGB Mode

  • Bits Per Pixel: 24-bit (8 bits each for R, G, B)
  • Color Range: 16,777,216 colors (256^3)
  • Use Cases: Modern pixel art, unrestricted color palettes, photorealistic pixel art
  • Advantages: No color limitations, easy to work with
  • Disadvantages: Larger file sizes, not authentic to retro aesthetics

Grayscale Mode

  • Bits Per Pixel: 8-bit
  • Color Range: 256 shades of gray (black to white)
  • Use Cases: Monochrome art, vintage aesthetics, contrast studies
  • Advantages: Simpler color management, smaller file sizes
  • Disadvantages: No color information

Indexed Mode

  • Bits Per Pixel: 1-8 bit (depending on palette size)
  • Color Range: 1-256 colors from defined palette
  • Use Cases: Retro game art, limited palette challenges, authentic vintage look
  • Advantages: Authentic retro aesthetic, enforced color constraints, smaller file sizes
  • Disadvantages: Must define palette first, color substitution required

Common Sprite Dimensions

Game Console Standards

Nintendo Entertainment System (NES)

  • Sprites: 8x8, 8x16 pixels
  • Screen: 256x240 pixels
  • Palette: 54 colors available, 4 colors per sprite

Game Boy

  • Sprites: 8x8, 8x16 pixels
  • Screen: 160x144 pixels
  • Palette: 4 shades of green/gray

Super Nintendo (SNES)

  • Sprites: 8x8 to 64x64 pixels (various sizes)
  • Screen: 256x224 pixels
  • Palette: 256 colors available, 15 colors per sprite

Sega Genesis

  • Sprites: 8x8 to 32x32 pixels
  • Screen: 320x224 pixels
  • Palette: 512 colors available, 15 colors per sprite

Modern Standards

Mobile Icons

  • 16x16, 24x24, 32x32, 48x48, 64x64, 128x128

Game Characters

  • Small: 32x32, 48x48
  • Medium: 64x64, 96x96
  • Large: 128x128, 256x256

Tiles/Blocks

  • Standard: 16x16, 32x32
  • Large: 64x64, 128x128

Drawing Coordinate System

(0,0) ────────────► X
  │
  │
  │
  │
  ▼
  Y

Canvas Bounds:
- Top-Left: (0, 0)
- Top-Right: (width-1, 0)
- Bottom-Left: (0, height-1)
- Bottom-Right: (width-1, height-1)

Color Format Specifications

Hexadecimal Colors

Format: #RRGGBB

  • RR: Red component (00-FF)
  • GG: Green component (00-FF)
  • BB: Blue component (00-FF)

Examples:

  • Red: #FF0000
  • Green: #00FF00
  • Blue: #0000FF
  • Cyan: #00FFFF
  • Magenta: #FF00FF
  • Yellow: #FFFF00
  • Black: #000000
  • White: #FFFFFF

RGB Values

Format: (R, G, B)

  • R: 0-255
  • G: 0-255
  • B: 0-255

Examples:

  • Red: (255, 0, 0)
  • Green: (0, 255, 0)
  • Blue: (0, 0, 255)

Tool Usage Patterns

Batch Pixel Drawing

When drawing many pixels, batch them:

Good (batched):
draw_pixels([
  {x: 10, y: 10, color: "#FF0000"},
  {x: 11, y: 10, color: "#FF0000"},
  {x: 12, y: 10, color: "#FF0000"}
])

Less Efficient (individual):
draw_pixels({x: 10, y: 10, color: "#FF0000"})
draw_pixels({x: 11, y: 10, color: "#FF0000"})
draw_pixels({x: 12, y: 10, color: "#FF0000"})

Shape Drawing Best Practices

Rectangles:

  • Use for backgrounds, platforms, UI elements
  • Filled mode: solid blocks
  • Outline mode: frames, borders

Circles:

  • Use for round objects, planets, bubbles
  • Filled mode: solid circles
  • Outline mode: rings, hoops

Lines:

  • Use for edges, connections, rays
  • Diagonal lines may have pixel stepping (antialiasing in professional Skill)

Contours:

  • Use for irregular shapes, terrain, complex outlines
  • Connect points in order
  • Closed polygon: last point connects to first

Performance Guidelines

Operation Speeds (typical)

  • Create canvas: <50ms
  • Add layer: <20ms
  • Draw pixels (batch of 100): <50ms
  • Draw rectangle: <30ms
  • Draw circle: <40ms
  • Fill area: <100ms (depends on area size)

Optimization Tips

  1. Batch pixel operations when drawing many pixels
  2. Use shapes instead of pixels when possible (faster)
  3. Fill areas instead of drawing individual pixels
  4. Use layers to organize work (not for performance, but workflow)

Palette Examples

Game Boy (4 colors)

["#0F380F", "#306230", "#8BAC0F", "#9BBC0F"]

Darkest to lightest green

NES (simplified 16-color palette)

[
  "#000000", "#FCFCFC", "#F8F8F8", "#BCBCBC",
  "#7C7C7C", "#A4E4FC", "#3CBCFC", "#0078F8",
  "#0000FC", "#B8B8F8", "#6888FC", "#0058F8",
  "#0000BC", "#D8B8F8", "#9878F8", "#6844FC"
]

Pico-8 (16-color palette)

[
  "#000000", "#1D2B53", "#7E2553", "#008751",
  "#AB5236", "#5F574F", "#C2C3C7", "#FFF1E8",
  "#FF004D", "#FFA300", "#FFEC27", "#00E436",
  "#29ADFF", "#83769C", "#FF77A8", "#FFCCAA"
]

C64 (Commodore 64, 16 colors)

[
  "#000000", "#FFFFFF", "#880000", "#AAFFEE",
  "#CC44CC", "#00CC55", "#0000AA", "#EEEE77",
  "#DD8855", "#664400", "#FF7777", "#333333",
  "#777777", "#AAFF66", "#0088FF", "#BBBBBB"
]

Layer Naming Conventions

Descriptive Names:

  • "Background" - solid color or pattern behind main subject
  • "Character" - main subject or character
  • "Foreground" - objects in front of character
  • "Effects" - highlights, shadows, particles
  • "Outline" - borders or edge highlights
  • "Details" - fine details, accessories

Organization Tips:

  • Use consistent naming across projects
  • Name layers by content, not by color
  • Keep names short but descriptive
  • Use layers even for simple sprites (good habit)

Common Patterns

Pixelated Circle (Manual)

For precise pixel placement in a circle:

  • Radius 4: 5x5 bounding box, 13 pixels
  • Radius 8: 9x9 bounding box, 57 pixels
  • Use symmetry: draw quadrant, mirror to others

Pixelated Line (Manual)

Bresenham's line algorithm (built into draw_line):

  • Minimizes pixel stepping
  • Creates clean diagonal lines
  • No gaps or overlaps

Color Ramps (Shading)

For smooth color transitions:

  • 3-color ramp: shadow, base, highlight
  • 5-color ramp: darkest, dark, base, light, lightest
  • Use analogous colors for smooth transitions