Animate every pixel.
Four frame encoding types, color cycling, animation zones, and GIF export — all defined in .pax text files and rendered by the Rust engine.
Frame encodings
Not every animation needs a full sprite sheet. PIXL supports four encoding types, each optimized for different use cases:
- Grid— classic sprite sheet. Every frame is a complete tile laid out in rows and columns. Simple, universal, works everywhere.
- Delta— only the pixels that change between frames are stored. Cuts file size dramatically for animations where most of the sprite stays still (blinking, breathing, idle sway).
- Linked— frames reference other tiles by name. A walking animation can reuse the standing body tile and only define new leg positions.
- Mirror— one frame is a horizontal flip of another. Draw the left-facing walk cycle, get the right-facing one free.
Color cycling
Rotate palette indices over time without touching the pixel data. Water shimmers, lava flows, gems pulse — all with zero additional frames. Define which palette slots cycle and at what speed.
[[animation]]
name = "water_shimmer"
type = "color_cycle"
indices = [4, 5, 6, 7]
speed = 120 # ms per step
mode = "ping_pong"Animation zones
Mark rectangular regions of a tilemap as animated. A waterfall section cycles independently from the rest of the map. Torch sconces flicker at their own rate. Each zone has its own timing, encoding, and frame set.
Preview in Studio
Hit play in PIXL Studio and see your animations running at game speed. Scrub through frames, adjust timing, and preview color cycling in real time. What you see is what your engine gets.
Export
Render to animated GIF for quick sharing, or export as a sprite sheet PNG with frame metadata. The Rust engine handles the layout — you choose the format and frame dimensions, PIXL packs it.