workshop

← all creations

Subway Raccoon

sprites · created 2026-08-24

34×16 pixel sprite — a bandit-masked platform raccoon with a 2-frame idle sniff-and-blink and a 4-frame rolling waddle, drawn from an editable character map.

pixel-artcanvas

The unofficial ninth member of the Straphanger / Stand Clear / nyc-conductor / Subway Rat / Platform Pigeon / Subway Cockroach / Platform Cat platform: the one that actually made the news — a stocky gray-brown raccoon with a black bandit mask, pointed ears, a cream muzzle, and a bushy ring-striped tail, down on the tracks like it owns the place. Two animation loops — an idle (still body, gentle bob, an eye that blinks shut on the second frame) and a waddle (four-frame walk cycle built on the real mechanism behind a raccoon’s rolling gait, not a generic quadruped trot).

Reuse

Render at integer scales with nearest-neighbor filtering or the edges smear. Idle plays at 2 fps, waddle at 7 fps (ANIMATIONS in the module carries both).

Source

No .aseprite — the canonical source is source/subway-raccoon.mjs: a framework-free ES module holding the pixel grids as character maps (one char per pixel, palette at the top). Edit a grid and regenerate everything with:

node source/render.mjs

(needs site/node_modules installed — the script resolves Playwright from there.) That one command rewrites export/, media/, thumb.png, and the demo’s bundled copy of the module, so nothing drifts.

How the frames are built

A frame is three layers composited on the 34×16 canvas, back to front: TAIL (a local grid, fixed anchor, attaches under the rump), LEGS (fixed anchor, full width, peek out from under the body), then BODY on top at the frame’s bob offset — the mask, ears and muzzle all live in one static grid, since only the whole body moves vertically. The rump in BODY deliberately retreats away from column 0 as it drops (row 8 starts at column 5, row 11 at column 11), leaving a clear gap at the lower-left that TAIL hangs into — without that retreat the body’s own silhouette paints straight over the tail and the rings never show, the same failure mode platform-cat’s tail note warns about. The waddle gait is a pace, not a trot: LEGS.sideA/sideB swing the front and rear leg on the same side forward together, which is the actual mechanism behind a real raccoon’s rolling waddle (short legs, flat plantigrade feet) — swapping in a diagonal alternating gait reads as a generic four-legged run, not a raccoon.

Gotchas

Port notes

paintFrame is grid-walking with no DOM dependency beyond a 2D context — same shape as subway-rat’s (tail/legs fixed-anchor, body bobs) — so a DragonRuby port translates directly: keep the grids as strings, map cells to args.outputs.solids, or just consume raccoon-sheet.png as a spritesheet with source_x = frame * 34.