Sprites
What a sprite recipe is, how the pixel renderer turns it into 32 by 32 pixels, when a detailed image wins, and why every object wears a logo sticker.

- base
tallthe silhouette everything is stamped onto- parts, in draw order
- 1. fins2. window3. flame
- palette
- primary
#f2f0e8secondary#e04a3aaccent#ff7a2aoutline#2b2b2b
Recipe anatomy
A sprite recipe is three things, all written by the resolver at summon time. It is deterministic: two players who summon the same recipe see the same pixels.
| Field | What it is |
|---|---|
base | One of twelve silhouettes. The renderer stamps this first. |
parts | One to 6 attachments, drawn on top in the order given, back to front. A rocket gets fins, window, flame; a robot gets antenna, screen, arms, legs. |
palette | primary, secondary and accent as hex colors, with an optional outline (default ink). A highlight is derived from primary. |
grid | Optional: 16 rows of 16 characters, "." for transparent and digits into gridPalette (up to 8 colors). A model-drawn bitmap that wins over the base when it validates. |
image | Optional: a same-origin PNG under public/sprites. When set, renderers draw it instead of composing. |
The full part list, in the order the renderer knows them:
wheelstrackswingsrotorfinsflameantennascreeneyessmilearmslegshatcrownleafwindowdoorchimneypanelcablegemcoinswordshieldheadphonestailhornsearspropellersmokecupsteamboltstarspikesroofdishheartsbubbles
The twelve bases
boxtallwideroundblobwedgeringhumanoidquadrupedtowerdomediscHow the renderer composes
- Resolve the palette. The glow, if any, tints primary halfway and secondary by a third toward the glow color, and the accent becomes the glow accent so halo and details agree. Highlight is primary mixed half with white.
- Stamp the base shape into a 32 by 32 grid, or, when a valid 16 by 16 grid is present, paint that at double size instead.
- Stamp each part at its anchor for this base. Some parts have per-base placements (wings on a wedge are jet wings; on a tall base they are fins), and a few are painted procedurally (tracks follow the bottom edge, whatever shape it is). Unknown part names are skipped, not fatal.
- Paint. The canvas painter upscales with nearest neighbour and caches by recipe and glow; the SVG painter emits one path per color for cards, the share image and this page. Both come from the same grid.
Glow colors, for reference: gold#f5c542 nuclear#7dff6a electric#6ac2ff fire#ff8a3d ice#bfe9ff.
Detailed images
Some concepts have a hand-processed 96 pixel sprite under public/sprites, listed in manifest.json with its size. The dictionary attaches the image by concept slug ("gaming pc" becomes gaming-pc), and the resolver does the same after a model answer, so "huge red rocket" still gets the rocket image. The model never picks images. Crafts never get one: a merge is not a thing. When an image is present the base, parts and palette stay in the recipe as the fallback and drive the glow tint, which is a color overlay masked to the image's own pixels. The pipeline that makes them is on Run it yourself.
Logos as stickers
On the canvas every object wears the logo of its heaviest ticker as a round sticker on the top right corner of its card, slightly rotated by a per-object seed. Hovering or inspecting fans the top three logos out above the card like a tooltip. Logos come from /api/logo/{ticker}, which serves the company mark when one is known and a colored lettermark otherwise. The share card uses the same sticker.