Pixel Art
Make modern, polished pixel-art animated videos (MP4) with code — indie-game look (Celeste / Eastward / Stardew-level scenes, original), 480×270 ar…
By edenfunf/reelmimic, MIT licence. Shared here with credit.
Pixel art engine
Every frame is a pure function of t. Shots draw into a 480×270 software framebuffer (world unit = one art
pixel), ENGINE.end upscales it ×4 to 1920×1080 with nearest-neighbour, and window.overlayHook draws crisp pixel
captions on top at full res. Same render contract and render.mjs CLI as painted-animation.
Workflow
- Scaffold:
bash .claude/skills/pixel-art/scripts/new_project.sh <project-dir> [--keep-demo], then readGUIDE.mdin full (look rules, full API, character system, review loop). Look atdocs/model-faces.png,docs/model-views.png,docs/kit-sheet.png,docs/demo-sheet.jpg. - Storyboard with reads per shot (as in painted-animation). Pick a palette per shot (
pal('day'|'dusk'|'night')) and a colour arc. - Build one file per shot in
src/scenes/, IIFE-wrapped, ending withshots([[t0, fn], ...]); add a<script>instudio.html(replace the demo). Scenes call only the library + cast; never redraw a character's body. - Review every shot (sheet, strips of every action and transition, crops of faces), fix, repeat:
node render.mjs --sheet=0.5,1,1.5,2 --cols=4 --w=480 --out=out/check/a.jpg node render.mjs --strip=3.3:4.3 --cols=6 --w=320 --out=out/check/jump.jpg node render.mjs --sheet=4.5 --crop=780,380,700,560 --w=700 --out=out/check/face.jpg node render.mjs --loop=faces --stills=0.5 --out=out/sheets # model sheets: faces | views | kit | wipes - Render:
node render.mjs --frames --workers=4 && node render.mjs --encode --out=out/video.mp4 [--audio=...].