# Pixel craft: decisions before effects

Portable, brand-neutral guidance. Read this for grid and shape decisions; [color-light.md](color-light.md) for ramps, lighting and export; [inspiration.md](inspiration.md) for inspected works; [exercises.md](exercises.md) for transfer tests. Source retrieval: 2026-09-27 UTC. [craft-sources.json](craft-sources.json) records quotations, rights and visual-inspection limits.

**Evidence key:** cited statements report a source. Procedures, debugging steps and exercises are this guide's authored synthesis, not attributed artist workflows. None of these references establishes manual pixel-editor mastery.

## 1. Declare what is being made

Pixel Joint's useful working definition emphasizes control at single-pixel level, not literally clicking every pixel; fills and line tools remain legitimate.[1] Use that criterion without pretending every community has one immutable definition.

| Deliverable | What must be controlled | What does not prove it |
|---|---|---|
| Native-grid illustration | Declared logical raster; intentional silhouettes, clusters and edge decisions | Small dimensions alone |
| Sprite/tile asset | Above, plus origin, background contract, seams, states and engine import | An attractive isolated PNG |
| Contemporary editorial hybrid | Composition, action, stepped visual language, coherent detail and truthful provenance | A prompt saying “pixel-perfect” |
| Filter/conversion | Sampling grid, mapping method, palette and dither settings | Automatic reconstruction of authored clusters |
| Hardware-targeted asset | Named machine/mode, documented actual restrictions and tested import | “8-bit,” “16-bit,” or a palette preset name |

Keep originals untouched. A generated study can be a useful composition reference; downsampling and quantizing it do not establish hand-authored contours, editable layers, historical compliance or animation stability. Name the route in the delivery notes.

**Grid choice:** set the smallest canvas that can hold the essential action. Sketch the hands, tool and receiving object at intended viewing size before committing to a large scene. If the decisive contact cannot be drawn legibly, enlarge the focal subject, simplify the pose or raise the native resolution. Do not solve that failure with an after-the-fact upscale.

## 2. Build a readable scene, not a catalogue of pixels

Suggested pass order:

1. Write one visible event: “A technician inserts a replacement fuse; the lamp returns.” Identify the contact and the evidence of success.
2. Block a few value masses: field, subject, supporting objects and focal accent. Keep a silhouette-only version.
3. Choose viewpoint and overlap order. At each ambiguous junction, decide what is in front; break tangencies between unrelated contours. Keep essential negative spaces open.
4. Establish object planes and a light diagram before highlights. Test cast shadows on the receiving plane, not merely beside the object.
5. Resolve the focal contact, then face/gesture, then material cues. Let background detail lose contrast, frequency or both.
6. Finish clusters and curves at native scale, inspecting an integer nearest-neighbor enlargement only as a diagnostic. Return to intended size after each repair.

The inspected Toy Maker uses several staged narrative areas, not a universal single-point hierarchy; Shimmer uses a broad light field alongside detailed foreground objects.[3][4] **Decision:** choose either one immediate event or a deliberately explorable scene. Do not claim every good composition has exactly one brightest dot.

## 3. Design clusters as interlocking shapes

Pixel Joint treats clusters as the practical decision unit and notes that changing one cluster changes its neighbors; a lone pixel can be useful as an AA buffer rather than noise.[1]

**Cluster pass:**

- Give each substantial cluster a job: top plane, turning plane, overlap shadow, reflected stripe, texture patch. If its job is only “make it more pixelated,” remove it experimentally.
- Prefer coherent connected areas for primary form. Retain isolated pixels when they carry a necessary glint, eye, fastener or star. Importance, not connected-component count, decides.
- Inspect negative clusters too: the gap between thumb and tool may carry more meaning than either outline.
- If two materials fuse, change a contour, value boundary or overlap first. Sprinkling texture across both is not separation.
- Reuse a shade across unrelated materials only when its visual role still works. Shared palette entries can create cohesion, but should not force all substances to look alike.

**Diagnostic:** flatten all texture into the underlying material color. If volume disappears, the image was leaning on noise rather than planes; repair the broad light/shadow organization before restoring texture.

## 4. Contours, jaggies and contour banding

Jaggies are disruptions in a line's pixel rhythm; Pixel Joint distinguishes contour banding, where neighboring boundaries align, from the intended smoothing function of AA.[1]

- On a straight shallow diagonal, use a stable step rhythm. On a curve, let horizontal/vertical run lengths change with curvature. A repeated ratio is not a rule for every curve.
- A sudden short–long–short run may be a kink, or it may be an intentional corner. Judge the represented form, not an automated jaggy count.
- Avoid copying the outer staircase into every inner shade. Parallel bands that start and stop together advertise the grid and can thicken the contour.
- Repair by merging unnecessary strips, changing where a shade ends, making a light plane broader, or redesigning the silhouette. **Do not** randomize step lengths merely to decorrelate them.
- Distinguish *contour banding* from *gradient posterization*: the former concerns aligned shape boundaries; the latter concerns too few tone levels in a gradient. Dithering a silhouette will not fix its shape logic.

**Pillow shading:** concentric outline-following shade bands can ignore the volume and light. A front-facing light is not itself the error; Pixel Joint explicitly allows frontal lighting when the forms are respected.[1] Repair a cylinder with an axial form transition, a box with plane changes, and a sphere with a light-dependent terminator—not the same inset-border operation.

## 5. Anti-aliasing is a local edge decision

Manual AA places selected transition colors to smooth a specific edge; too much can blur it, and aligned AA segments can create banding.[1]

**Use when:** a curve or shallow diagonal has a distracting kink at the intended size, and the image contract permits intermediate colors.

**Procedure:** fix geometry first → identify the harsh step → choose an existing intermediate shade if suitable → place a short transition cluster → compare at native size → remove any buffer that merely fattens the line. AA is not a halo to paint around every object.

**Background contract:** an external AA shade mixed toward a dark background can become a dark fringe on a light background. Test transparent assets over light, dark and saturated fields. Consider internal AA, a deliberate opaque outline, or separately authored background variants. A PNG's alpha support is not proof of a good background-independent edge.

**Terminology:** colored or light-dependent outlines are not automatically *sel-out*. The Pixel Joint discussion uses that term for broken/background-dependent outline AA; terminology differs across communities.[1] Describe what pixels actually do instead of using a label as a quality verdict.

## 6. Texture and dithering have different jobs

Dithering interleaves existing colors to suggest transitions or texture; Pixel Joint warns that random dithering and excessive coverage can turn into noise.[1]

| Need | Try | Reject when |
|---|---|---|
| A constrained-palette transition | A small ordered or designed dither region between adjacent ramp shades | The pattern becomes the focal subject |
| Rough stone | Irregular connected chips with plane-aware placement | Every pixel is independently randomized |
| Brushed metal | Sparse directional streaks aligned to the surface | Streaks contradict perspective or replace reflections |
| Cloth | Fold masses, then restrained weave/wear | Texture has equal contrast on every plane |
| A clean modern editorial finish | Undithered clusters and selective texture | Dither is included only to signal “retro” |

Authored workflow: test the undithered image first. Dither only a mask that needs it; compare against adding one useful palette color. In a Bayer/ordered pattern, keep phase deliberate across a continuous surface. Error diffusion may preserve average error while creating unwanted isolated pixels and boundary noise. A mathematically good reduction is not necessarily a good drawing.

Do not infer a CRT-era viewing intent from a contemporary image. If a display simulation is requested, preserve both clean and processed versions. Its appearance must be reviewed at its actual display size, not only enlarged.

## 7. Indexed structure and semantic palette mapping

In Aseprite indexed mode a pixel references a palette entry; changing that entry changes every referencing pixel. Transparent layers also require a designated transparent index.[5] This is documented behavior, not evidence that Aseprite was exercised here.

**Map roles before RGB distance:**

1. Inventory material ramps and small narrative colors: an LED, eyes, a warning label, a hand–tool separation shade.
2. Reserve required colors and transparency deliberately. Do not let an area-weighted palette estimator discard a tiny but meaningful accent.
3. For automatic mapping, compare candidates in a declared perceptual space rather than assuming encoded RGB distance equals visual distance. Perceptual color spaces and gamut are distinct from linear-light energy arithmetic.[10]
4. Where nearest-color mapping picks the wrong material or signal, restrict candidates by a semantic mask or material ramp. Nearest is not synonymous with correct.
5. Inspect boundaries and connected components after mapping. Rebuild lost contact/negative space locally rather than increasing palette count indiscriminately.
6. Recount after every conversion, compositing or effect pass; alpha and interpolation can change the displayed color set. For animation, use a deliberate shared palette or correspondence strategy and check temporal flicker.

**Editability warning:** if one index serves both skin shadow and a status light, changing it cannot preserve both meanings independently. Split the role before a relighting or semantic-state variant; palette reuse is useful only while the meanings remain compatible.

## 8. Export is a separate acceptance gate

PNG provides lossless raster storage and optional color-space information; it does not encode artistic intent or reconstruct layers.[11] Keep the layered/native working file when one exists, plus a clean native-size PNG and a declared presentation export. Do not claim a layered master from a flat image.

MDN documents `image-rendering: pixelated` as nearest-integer scaling followed by interpolation for fractional final sizes.[12] Therefore:

- For strict blocks, prefer integer scale, aligned placement and no fractional transforms; inspect actual browser zoom and device-pixel ratio.
- Keep readable page text, controls and logos outside the raster illustration.
- Review the native image, intended display and zoomed grid separately. A crisp export can still have poor drawing; good drawing can still be blurred by its host.
- Record only verified properties: decoded dimensions, format, transparency, palette policy, profile/chunks and scaling. Lossless encoding does not mean a platform will deliver the file unmodified.

**Stop condition:** the essential action reads, the main forms survive texture removal, focal edges are deliberate, semantic accents survive conversion, and the actual delivered image preserves the stated contract. Use the critique rubric—not a color-count threshold—to decide what still needs work.

## Sources

[1] https://pixeljoint.com/forum/forum_posts.asp?TID=11299 — Pixel Joint Forum: The Pixel Art Tutorial
[3] https://octavinavarro.com/scene-13-the-toy-maker — Octavi Navarro - Scene #13: The Toy Maker
[4] https://waneella.com — WANEELLA
[5] https://www.aseprite.org/docs/color-mode — Aseprite - Docs - Color-mode
[10] https://www.w3.org/TR/css-color-4 — CSS Color Module Level 4
[11] https://www.w3.org/TR/png-3 — Portable Network Graphics (PNG) Specification (Third Edition)
[12] https://developer.mozilla.org/en-US/docs/Web/CSS/image-rendering — image-rendering CSS property - CSS | MDN
