Build 11 · Light a pixel sprite

Dynamic lighting for pixel art, with normal maps in Aseprite

A sealed jungle temple with a jade idol, a hoard of gold and an explorer with a torch. Every part is drawn as a colour map, a normal map and a data map in one file. A carving on the wall exists only in the normal map, so only a low light finds it.

AI agent
Claude
Built with
SpriteRelay CLI
Files
1
Frames
300
A jungle temple wall with vines, a dark doorway, a jade idol in its alcove and a hoard of gold.

Real exports

Look closer

Move over the picture to zoom into the pixels.

The temple's colour layers: sandstone wall, jade idol in its alcove, a hoard of gold and an explorer with a torch.
The temple's colour layers: sandstone wall, jade idol in its alcove, a hoard of gold and an explorer with a torch. Real export, 480×270.

What makes it work

Inside the file

  • 21 layers in three groups: Color (visible), Normal and Data (hidden).
  • Normals are rounded to a set of 41 directions, so the normal map is clean pixel art too.
  • The data map stores height, shine and glow; anything that glows becomes a light.

How it was built

Step by step

  1. Three maps per partWall, floor, idol, hoard, vines and the explorer, each drawn as colour, normal and data.
  2. BuildStep by step through SpriteRelay CLI, compared with the design after every step.
  3. LightThe lighting you see is computed from the exported maps by the video and the browser demo.

The files

What was built

Files in this build
FileCanvasFramesLayersTagsSlicesSize
Light a pixel sprite
temple.aseprite
480×270 rgb30021 (8 tilemap) + 3 groups5—1.1 MB

Read from each file's own record (SpriteRelay's file summary of the final .aseprite where one was taken).

How it was checked

  • Every build step matches the design exactly.
  • The browser demo lights the real exports exactly as the video does: the same frames hash identically.

Labels and honesty notes

  • Aseprite stores the colour, normal and data maps. The lighting itself is computed outside Aseprite, by the video and the browser demo, and they say so.

Watch

The videos

Every frame on screen is cut from the file's real exports.

Do this with your own sprites

Every build here was made through SpriteRelay CLI.

Your assistant inspects, patches, previews and exports real .aseprite files, and nothing reaches your project until you commit.