Build characters from parts.
Draw reusable 16×16 tiles — body, head, armor, weapon — and assemble them into full 32×32 characters. Swap any piece to create dozens of variants without redrawing.
How composites work
A composite sprite is a grid of smaller tiles arranged into a larger character. The base is typically a 2×2 grid of 16×16 tiles, giving you a 32×32 result. Each slot in the grid — top-left, top-right, bottom-left, bottom-right — can hold any compatible tile.
Equipment and variants
Draw a bare-headed body, then create separate head tiles: helmet, crown, hood, wizard hat. Each one drops into the same slot. Combine them with armor variants (leather, chain, plate) and weapon variants (sword, staff, bow) and you get dozens of unique characters from a handful of parts.
# warrior.pax — composite with equipment variants
[[composite]]
name = "warrior"
grid = [2, 2]
[composite.slots]
head = ["bare", "helmet", "crown"]
body = ["tunic", "chain_mail", "plate"]
weapon = ["sword", "axe", "spear"]Seamless edges
When tiles sit next to each other, the seam has to be invisible. PIXL checks that touching edges share the same colors at matching pixel positions. If a helmet’s bottom row doesn’t line up with the body’s top row, you get a warning with the exact pixel coordinates that need fixing.
Flip and mirror
Many character parts are symmetrical. Draw the left-facing version and PIXL generates the right-facing mirror automatically. For walking animations, compose each frame from the same parts with different leg tiles.
AI-assisted part generation
Describe a new equipment piece in the chat — “a horned Viking helmet with a nose guard” — and PIXL generates a 16×16 tile that matches your existing body’s edge colors and style. It inherits the project palette and respects the seam constraints automatically.
Export as sprite sheets
Expand all combinations into a single atlas PNG or export each variant as a separate file. PIXL generates the sprite sheet layout and optional metadata for Godot, Unity, or any engine that reads TexturePacker JSON.