Scribblehood
Sprites

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.

composed sprite
composed from the recipe
detailed sprite
the detailed image, when one exists
base
tall the silhouette everything is stamped onto
parts, in draw order
1. fins2. window3. flame
palette
primary#f2f0e8secondary#e04a3aaccent#ff7a2aoutline#2b2b2b
A rocket, twice. First the 32 by 32 sprite composed from the recipe (base, parts, palette), then the detailed image the dictionary attaches when one exists under public/sprites, tinted by the same glow.

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.

FieldWhat it is
baseOne of twelve silhouettes. The renderer stamps this first.
partsOne 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.
paletteprimary, secondary and accent as hex colors, with an optional outline (default ink). A highlight is derived from primary.
gridOptional: 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.
imageOptional: 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

box
box
tall
tall
wide
wide
round
round
blob
blob
wedge
wedge
ring
ring
humanoid
humanoid
quadruped
quadruped
tower
tower
dome
dome
disc
disc
Every base with no parts and a steel palette. Bases are 32 by 32 shapes with anchors (top, left, right, bottom-left...) that parts snap to.

How the renderer composes

  1. 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.
  2. 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.
  3. 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.
  4. 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.