Exact by construction
Canvas size, palette, geometry, and frame count are enforced by a real compiler.
1## The Ink Sea (v2)2## The world is a page: a ruled paper sky, a sketched sun, and below the3## horizon a sea of spilled ink that holds the night. A giant fountain pen4## stands nib-down at the horizon, still writing the sea; a paper boat5## sails the ink while letters rise out of the water like fireflies.6## Made by Claude Fable 5 - a fable being written.7##8## v2 showcases three authoring improvements over fable_ink_sea.txt:9## 1. Expression radii: the nib ripple is ONE continuously growing ring10## (v1 faked it with four phased `every 16 offset K` blocks).11## 2. `offset DX,DY { ... }` translation scopes: wave/wake/reflection12## clusters share one animated offset instead of per-coordinate math.13## 3. `fade`: a gold falling star streaks into the ink once per loop,14## its trail dissolving through per-frame layer fade (and finishing15## before the loop wraps, so the trail state stays seamless).16version 0.117canvas 80x561819# --- paper world ---20pal paper0=#f4ead2 paper1=#ead9b4 paper2=#ddc69721pal+ ruleInk=#c9b68d55 marginInk=#c96a5a44 sketch=#26223822# --- ink world ---23pal+ inkHz=#3a3f75 ink2=#23264d ink1=#191b3a ink0=#10112624pal+ inkHi=#5a60a8 inkLo=#262a55 starW=#fdfdff starG=#ffd98c25# --- boat ---26pal+ boatW=#fffaf0 boatSh=#d8cbb2 flagRed=#c8503e reflW=#fffaf02227# --- pen ---28pal+ barrel0=#4a1f2e barrel1=#6e2f3f barrelHi=#a05a6229pal+ goldB=#d9a441 goldHi=#ffe6a3 metalM=#565a75 metalHi=#9aa0bd metalD=#2e2e3830# --- light and motion ---31pal+ sunRef=#ffd98c66 penGlow=#9fe9ff2a32pal+ rip0=#9fe9ffcc rip1=#7f9fe288 rip2=#5566aa5533pal+ moteInk=#26223899 moteGold=#ffd98cbb3435const horizonY = 303637bitmap seastarr" map S=starW {38 SS"39}4041bitmap glyph_oo" map G=moteInk {42 .G.."43 G.GG"44 .G.."45}4647bitmap glyph_ii" map G=moteInk {48 GG"49 .."50 GG"51}5253bitmap gold_sparkk" map G=moteGold {54 GG"55}5657# the boat is rigid, so it lives in a group and bobs as one stamp58group paper_boatt" pivot 7,13 {59 # sail with a soft shaded half and a fold line60 poly 7,1 2,9 12,9 boatW61 poly 7,1 12,9 7,9 boatSh62 line 7,2 7,8 boatSh63 line 7,1 2,9 sketch64 line 7,1 12,9 sketch65 # hull66 poly 0,9 14,9 10,13 4,13 boatW67 poly 7,9 14,9 10,13 7,13 boatSh68 line 0,9 14,9 sketch69 line 0,9 4,13 sketch70 line 14,9 10,13 sketch71 line 4,13 10,13 ink172 # little wax-red pennant73 px 7,0 8,0 flagRed74}7576# --- the page (sky) ---77layer skyy"78rect 0,0 80x10 paper079rect 0,10 80x10 paper180rect 0,20 80x10 paper281dither bayer at 0,8 80x4 paper0 paper182dither bayer at 0,18 80x4 paper1 paper28384# ruled notebook lines and the red margin85layer pagee"86line 0,6 79,6 ruleInk87line 0,13 79,13 ruleInk88line 0,20 79,20 ruleInk89line 0,27 79,27 ruleInk90line 10,0 10,29 marginInk9192# a sketched, slightly unfinished sun93ocirc 66,9 4 sketch94px 70,9 paper195line 66,2 66,3 sketch96line 71,4 72,3 sketch97line 73,9 75,9 sketch98line 71,14 72,15 sketch99line 66,15 66,16 sketch100line 61,14 60,15 sketch101line 59,9 57,9 sketch102line 61,4 60,3 sketch103104# the last written words trail off toward the pen105line 38,24 43,24 ruleInk106line 45,23 48,23 ruleInk107px 50,22 ruleInk108109# --- the ink sea ---110layer seaa"111rect 0,horizonYY 80x2 inkHz112rect 0,32 80x6 ink2113rect 0,38 80x8 ink1114rect 0,46 80x10 ink0115dither bayer at 0,32 80x2 inkHz ink2116dither bayer at 0,37 80x2 ink2 ink1117dither bayer at 0,45 80x2 ink1 ink0118119# the night lives in the ink: stars float in the sea120layer seastarss"121scatter seastarr" in 3,33 74x20 count 12 seed 502122px 12,48 44,41 70,52 21,36 starG123124# --- the fountain pen, writing the sea ---125layer penn"126rect 54,0 9x13 barrel1127rect 54,0 2x13 barrel0128rect 61,0 1x13 barrelHi129rect 53,13 11x3 goldB130px 62,13 63,14 goldHi131poly 53,16 63,16 58,31 metalM132line 54,17 57,28 metalHi133line 62,17 59,28 metalD134line 58,23 58,29 metalD135px 58,21 metalD136px 58,22 paper2137138timeline 0..47 {139 each {140 let swayX = lerp(-1, 1, sin01(tt))141 let bobY = lerp(-1.2, 1.2, sin01(tt * 2))142 let wA = lerp(-2, 2, sin01(tt))143 let wB = lerp(-2, 2, sin01(tt + 0.33))144 let wC = lerp(-2, 2, sin01(tt + 0.66))145 let pulse = lerp(3, 5, sin01(tt * 3))146 let boatX = 30 + swayXX147 let boatY = 37 + bobYY148149 # the nib's soft light where it touches the ink150 with layer penlightt" clear {151 glow (58, 30) pulsee penGlow152 }153154 # the falling star's trail dissolves a little every frame155 with layer starfalll" {156 fade 0.72157 }158159 # one ripple ring per half-cycle, growing continuously from the nib160 # (expression radii; ease-out so the ring decelerates as it spreads)161 with layer ripplee" clear {162 let rpA = ((framee % 16) / 16)163 let rpB = (((framee + 8) % 16) / 16)164 let easeA = (rpAA * (2 - rpAA))165 let easeB = (rpBB * (2 - rpBB))166 oellipse 58,31 (2 + 11 * easeAA) x (1 + 2.2 * easeAA) rip1167 oellipse 58,31 (2 + 11 * easeBB) x (1 + 2.2 * easeBB) rip2168 px 58,31 rip0169 }170171 # waves and reflections: three swell phases, one offset scope each172 with layer wavess" clear {173 offset (wAA),(0) {174 line 6,34 11,34 inkHi175 line 44,35 49,35 inkHi176 line 18,51 24,51 inkLo177 line 60,52 65,52 inkLo178 px 65,40 sunRef179 }180 offset (wBB),(0) {181 line 8,31 13,31 inkHi182 line 57,33 57,36 ink1183 line 63,33 68,33 sunRef184 line 14,39 19,39 inkLo185 line 34,40 39,40 inkLo186 line 68,41 73,41 inkLo187 }188 offset (wCC),(0) {189 line 30,31 34,31 inkHi190 line 59,34 59,38 ink1191 line 64,36 67,36 sunRef192 line 8,45 14,45 inkLo193 line 28,47 33,47 inkLo194 line 52,46 58,46 inkLo195 }196 }197198 # the paper boat rides the swell as one piece199 with layer boatt" clear {200 stamp paper_boatt" at (boatXX, boatYY) :pivot201 offset (wAA),(bobYY) {202 line 16,39 22,39 inkHi203 }204 offset (wBB),(0) {205 line 12,41 17,41 inkLo206 }207 offset (swayXX),(bobYY) {208 px 27,40 30,41 33,40 reflW209 }210 }211212 # letters rise from the ink around the pen and drift into the page213 with layer motess" clear {214 emit glyph_oo" at 58,24 count 5 spread 12x16 time framee vel 0x-1 jitter 1x1 life 22 loop 48 fade seed 41215 emit glyph_ii" at 56,20 count 4 spread 14x14 time framee vel 0x-1 jitter 1x1 life 26 loop 48 fade seed 73216 # gold dust in the boat's wake217 emit gold_sparkk" at (boatXX - 9, boatYY + 2) count 5 spread 8x3 time framee vel -1x0 jitter 1x1 life 14 loop 48 fade seed 88218 }219 }220221 # once per loop, a wax-gold star falls from the page into the ink...222 range 4..20 {223 with layer starfalll" {224 px (14 + 2 * localFramee),(4 + 1.6 * localFramee) goldB225 px (15 + 2 * localFramee),(4 + 1.6 * localFramee) starG226 glow (15 + 2 * localFramee, 4 + 1.6 * localFramee) 2 sunRef227 }228 }229230 # ...and lands with a small gold splash that fades on its own231 at 21 {232 with layer starfalll" {233 px 45,30 47,30 starG234 px 46,29 goldB235 glow (46, 30) 3 sunRef236 }237 }238239 # sea-stars twinkle in the ink240 every 8 offset 0 {241 with layer twinklee" clear {242 glow 12,48 2 sunRef243 glow 63,35 2 penGlow244 px 12,48 63,35 starW245 }246 }247 every 8 offset 4 {248 with layer twinklee" clear {249 glow 34,50 2 sunRef250 glow 70,52 2 penGlow251 px 34,50 70,52 starW252 }253 }254255 # ink birds cross the paper sky256 every 12 offset 0 {257 with layer birdss" clear {258 px 18,8 20,8 sketch259 px 19,9 sketch260 px 26,5 28,5 sketch261 px 27,6 sketch262 }263 }264 every 12 offset 6 {265 with layer birdss" clear {266 px 18,9 20,9 sketch267 px 19,9 sketch268 px 26,6 28,6 sketch269 px 27,6 sketch270 }271 }272}273bitmap "seastar" map S=starW {open Fable Ink Sea v2 in the studio →
An image model cannot hold a grid — wrong pixel sizes, anti-aliased edges, colors that drift off palette. A program can. Every piece here is PixelCraft source that compiles to an exact canvas with a locked palette and frames that line up.
This page hands your agent a WebMCP doorway into the Studio. There it writes the program; you watch the canvas and say what to change.
Built for indie game makers, pixel artists, and small teams who want AI speed without surrendering exact pixels—or authorship.
Canvas size, palette, geometry, and frame count are enforced by a real compiler.
Ask in natural language, judge with your eyes, undo freely, or edit the source yourself.
No account or API key. Your editable program and exports stay in the browser.
10f
8f
9f
32f
32f
6f
8f
48f

3f
9f

48f
48f
6f
8f
6f
16f

48f
32f
48f
48f
64f
2f
24f
4f
32f

12f
24f
24f
24f
16f
16f
32f
48f

24f
24f
24f
24f
4f
8f