SpriteCast – 8-direction game sprites from one image, guided by 3D Sunghwan0112 released SpriteCast, a free MIT-licensed Claude Code plugin that generates 8-direction game sprites from a single illustration by rendering motion, camera angle and per-frame shadows in 3D and using OpenAI's image model only to redraw each frame in the source art's style. The plugin charges users directly for paid steps, which it displays before proceeding: a walking character in 8 facings costs about $2.2 plus 75 Tripo credits, additional actions about 10 Tripo credits each (or none with a Mixamo FBX), pixel-art sheets about $0.075 each (roughly $1.35 for a walk in 8 facings), a four-legged animal walk 30 Tripo credits, a prop about $0.07 plus $0.08 per further facing, and a pixel-art prop about 20 Tripo credits plus $0.08 per side. SpriteCast is installed via the commands "claude plugin marketplace add Sunghwan0112/spritecast" and "claude plugin install spritecast@spritecast", and a free no-key trial is available by asking Claude to "try SpriteCast". One illustration in. A game character out. An isometric sprite generator for Claude Code: 8-direction walks, actions and pixel art at your game's camera angle, with a 3D shadow under every frame - and the props to stand beside them. What you can make what-you-can-make · Characters walking-characters · Pixel art pixel-art-arcade-size · Props props-and-scenery · Install install · FAQ faq · 한국어 https://github.com/Sunghwan0112/spritecast/blob/main/README.ko.md The same image model, the same character sheet. Left: GPT asked for a walk, as it came out. Right: what the 3D adds. And things, not only people: any object as pixel art, from any side, at the character's scale. How pixel-art-props-any-object-any-side . claude plugin marketplace add Sunghwan0112/spritecast claude plugin install spritecast@spritecast Then just ask: "Here's my character hero.png . Make her walk in 8 directions." To try it free, with no key , ask Claude to "try SpriteCast" . An image model OpenAI's, with your own key does the drawing. The body, the motion, the angle and the shadow come from 3D - so every frame is the same person, and she actually walks. | | you give | you get | you pay | |---|---|---|---| | A walking character | one illustration | a walk in 8 facings, standing views, a shadow per frame | about $2.2 + 75 Tripo credits | | More actions | a name, or a Mixamo FBX | run, jump, slash, throw... in 8 facings | about 10 Tripo credits each an FBX: none + the drawing | | Pixel art | a character that walks | pixel sprites about 100 px tall | about $0.075 a sheet a walk, 8 facings: ~$1.35 | | An animal | one illustration | a four-legged walk in 8 facings | 30 Tripo credits + the drawing | | Sitting | a character that walks | seated in 8 facings, placed on your props | about $0.22 | | A prop, or a posed NPC | a description | a sprite, its shadow, its anchor | about $0.07 + $0.08 a further facing | | A pixel-art prop | a description | pixel sprites from every side, at the pixel character's scale | about 20 Tripo credits + $0.08 a side | Free and MIT. You pay OpenAI and Tripo directly; every paid step shows its cost and waits for your OK. | A walk in 8 facings walking-characters from one illustration, a shadow per frame | Actions more-actions-run-jump-slash : run, jump, slash - or any Mixamo clip | | Pixel art pixel-art-arcade-size , about 100 px tall, with things that are held and thrown | Four-legged animals four-legged-animals , with no bought rig | | Sitting sitting on your props, the armrest in front of her worked out in 3D | Props props-and-scenery at their real size, all on one floor | - "Here's my character hero.png . Make her walk in 8 directions." - "Add a run and a jump. And a throw - here's a Mixamo clip Throw.fbx ; put a snowball in her hand." - "Our game is pixel art. Make her walk and throw as pixel sprites, about 96 px tall." - "Make her sit, and put her on this armchair." - "Make a shopkeeper NPC, an old man in a brown cardigan, in four directions." a posed figure: a description is enough - "Make an isometric bookshelf, 1.8 m tall, full of books, in the cozy style." - "Here's a prop from my game props/barrel.png . Make a matching crate in that style." An image model can't keep a body and a pose from one frame to the next. Asked for a walk in words, it gives eight nice drawings that don't walk - the left of the picture at the top, as it came out: | GPT alone | SpriteCast | |---|---| | the same leg in front in all eight frames | the legs come from a 3D walk | | the arms twitch at random | the arms swing against the legs | | the camera at eye level | your game's camera 30° down by default | | no shadow | the 3D body's own shadow, frame by frame | So SpriteCast never asks it to. 3D does the moving; the image model only redraws each rendered frame in your illustration's look. Every drawing is then fitted back onto its render and checked against it: a frame drawn in another pose is flagged and can be redrawn, never squeezed to fit. Props work the same way, with blocks at real size in place of the rig. What you get from that: - The angle and size are right. The solid props in the examples land on their guide at 95–99 % outline overlap; the plant, drawn loosely on purpose, at 87 %, and the dressed figures at 69–88 % clothes and hair go past the plain mannequin . Walking characters are scored frame by frame below . The camera and the scale are fixed, so props made at different times line up on one floor. - Shadows that look right. One light shared by every prop, so every shadow falls the same way. Solid props cast the 3D guide's own shadow. Posed figures and plants cast a shadow in the drawing's own shape the hood, the hair, the leaves , placed by the 3D model, so a foot or a pot's base starts its shadow where it stands. Walking characters cast their 3D body's own shadow, frame by frame. Not a painted blob, not a blocky mannequin. - It checks itself. After drawing, the result is compared with its guide. If the model drew another angle, nothing is squeezed to fit: you get a warning, and Claude suggests a fix before drawing again. - Your game's view and your style. 2:1 isometric, true isometric, 3/4 top-down, front or any angle; all four facings of one object; the bundled cozy style or one picture of your own. Give it one illustration of a character facing front, standing straight, no pose and you get a walk in 8 facings 8 frames each and 8 standing views, in that illustration's look. An image model can't keep a body and a pose from frame to frame, so the motion comes from 3D: 1. A turnaround is drawn from the illustration. 2. Tripo https://www.tripo3d.ai makes the 3D model from it, rigs it and gives it a walk and an idle. 3. The walk is rendered with the game's camera free , each frame with the 3D body's own shadow, pressed flat onto the ground along the light. 4. The image model draws over the renders, 4 frames a call. The front is drawn first and every other facing follows it, so it stays the same person. 5. Every frame is fitted back onto its render, the head sizes steadied and the edges cleaned. You get strips, a shadow per frame the feet touch it, a lifted foot casts its own and an anchor. $PYTHON skills/spritecast/scripts/charpipe.py turnaround hero.json --yes then 3d model, rig, renders and draw then finish, preview by themselves All eight facings are drawn by default. A design that is the same on both sides can set "mirror": true to flip the west facings from the east ones each keeping its own shadow , about $0.66 less. Cost per character: about $2.2 OpenAI; ~~$1.5 with~~ $0.75; an animal 30 . Or bring your own rigged GLB "mirror": true and 75 Tripo credits "rig glb" and skip to render . More: the preview video, Meshy, and the example character with her rig preview also makes walk-all.mp4 every facing walking at once, with ffmpeg : the quickest way to see a head that grows and shrinks or a frame that jumps. Tripo sometimes sends a model back turned sideways or uncoloured; both are fixed for you. "modeler": "meshy" and MESHY API KEY has Meshy https://www.meshy.ai make the model instead ~30 Meshy credits ; the rig is still Tripo's. More options several outfits, anchoring on the soles and lessons: reference/character.md https://github.com/Sunghwan0112/spritecast/blob/main/skills/spritecast/reference/character.md . The girl above is in examples/rain girl https://github.com/Sunghwan0112/spritecast/blob/main/examples/rain girl : her illustration, turnaround, spec, strips, shadows, character.json and the sheet. She was made with Tripo alone: about $1.7 of drawing and 85 Tripo credits. Her rigged model is there too rig.glb , with its walk, run, jump and slash, MIT like the rest of the repo , so you can try the whole 3D side with no keys and nothing paid: copy the folder, add "draw": false to the spec and run charpipe.py render rain girl.json then finish - the strips, shadows and anchors come from the 3D model itself. Her spec also shows what "notes" is for: the 3D render had dark streaks down the raincoat's sides and inside the arms, and one line in notes "no dark line, stripe or seam on it anywhere... leave them out" had them drawn out of every frame - a flaw in the model fixed in the drawing, not in 3D. Tripo's rig for four-legged animals walks badly no backbone, the shoulders hung off the neck , so an animal gets no bought rig. With "kind": "animal" the 3D model alone Tripo, ~30 credits is enough: its skeleton is found from the mesh the feet, the back, the head, the tail, and which way it faces , it walks in a cat's or a dog's gait, and it gets the same drawing, fitting and 3D shadows as a person. The turnaround is drawn on all four legs, each leg clear of the others, the tail out behind; clothes only snug ones a knit vest, not a cape or a scarf - anything hanging moves with the nearest leg . Check the renders before drawing: four legs, the head forward, the tail behind. If Tripo's model grows an extra leg, make it again or use Meshy "modeler": "meshy" . The cat is in examples/tabby cat https://github.com/Sunghwan0112/spritecast/blob/main/examples/tabby cat : an orange tabby in a little yellow raincoat the girl's , its design, turnaround, spec, strips, shadows and sheet - 30 Tripo credits and about $2.5 of drawing, redraws and design tries included. Its frames fit their renders at 0.76-0.97 north-east and north-west mixed frame by frame with "mix" , see reference/character.md . Beside the walk, a character can run, jump or swing something. List them in the spec, "actions": "run", "jump", {"name": "slash", "hold": "umbrella"} : the rig gets those animations from Tripo about 10 credits each; run, jump, slash, shoot, dive, climb, fall, hurt and turn are there , and each is rendered, drawn and finished in 8 facings like the walk, into its own strips with a shadow per frame. A slash needs something in the hand: "hold" builds it from simple shapes and puts it in the hand, so it moves with every frame an umbrella, a pistol or a water pistol for now; the right hand, or "hand": "left" . With your own rigged model, any clip in it can be an action. A held thing is described to the image model part by part - most carefully the end at the hand the handle, the first stretch of the shaft , which is small and against the body and is where it guesses otherwise. Most of it comes out in one go. The rain girl's walk, run and jump fit their 3D renders at 0.78 or better in every frame, all drawn once. The umbrella slash is harder a thin thing that swings round the body : a weapon drawn in the wrong place is redrawn by itself, and what is left fits a little looser where she bends deep - a pose drawn a touch more upright, which reads fine in motion. Those frames are listed for you to look at; keep them or redraw them. Something carried all the time, in either hand you asked . Put "hold" in the spec itself instead of in one action - "hold": {"kind": "watergun", "hand": "left"} - and the character has it through the walk, the standing views and every action. Below, a water pistol in the left hand: the 3D guide above, the drawn frames under it. - It stays in that hand. A character with a thing in one hand is not the same on both sides, so no frame is ever made by flipping another - flipped, the thing would change hands. "mirror": "never" asks for the same for any character that is not symmetrical: an eye patch, one sleeve. Each sheet is told which hand and where its render has the thing, and afterwards every frame is checked against its render: of the 24 frames above, one was named for you to look at. - The hand closes on the handle. A rig's fingers are out straight, and a drawing over that has an open hand beside a floating gun. So the guide bends the holding hand itself: the handle goes into the fist, the four fingers come round one side of it and the thumb round the other, each finger bent only until it touches. A thick handle gets a looser hand; one too thick to get a hand round is made thinner. - Look at the hand before anything is drawn. In a frame the grip is a few pixels, so the free render step also saves the hand from all round, close up render/hand-walk.png , and prints how far each fingertip is off the handle. Fix it there, at no cost. - A thing that is already part of your own rigged model: "hold": {"in model": true, "words": "In the LEFT hand: a black pistol."} . The example above cost about $0.7 to draw 8 sheets: the walk from three sides and the run from one . Other sizes: 512, 64 and 32 px from the same drawings Any size you need you asked : frames come out 256 px tall, and charpipe.py pack CHAR.json --px 64 makes another set at any height from the same drawings - larger than 256 stays sharp too, the frames are kept at the drawings' own detail - strips, shadows and character.json at that size, in out-64px/ , with nothing redrawn and out/ left as it is "frame px" in the spec sets the default . Below, 512, 256 the default , 64 and 32 px tall, each shown at the same size enlarged pixel for pixel . At 64 the hair, raincoat, boots and umbrella all read; at 32 the pose and colours hold, but the face is mostly gone - a plain resize, nothing made for that size yet see the Roadmap roadmap . For a game drawn in pixels - a belt-scroller, a fighter, an arcade platformer - the same character as real pixel art, about 100 px tall: one colour a pixel, a palette of about 40, a dark outline, no blur, and each frame's 3D shadow. Not a resize of the painted frames: the order is the other way round. The 3D render is pixelized into a guide, the image model redraws it as pixel art, and the drawing is read back on the grid the model drew it on - the head on grid lines of its own, so the eyes and mouth survive - then sized and placed by the render. $PYTHON skills/spritecast/scripts/pixelart.py hero.json the plan and its cost - spends nothing $PYTHON skills/spritecast/scripts/pixelart.py hero.json --clips walk,throw --yes About $0.075 a sheet: a walk in all eight facings is 18 sheets about $1.35 ; the throw above, five facings, was 14. - Things held and thrown. "hold": {"kind": "snowball", "until": "auto"} puts it in the hand and lets it go when the hand moves fastest. pixel.json then says which frame, where in the frame, which way and how fast - enough for your engine to spawn the projectile - and you get the ball, its flight shape and a 4-frame burst. The picture above is that data played back. - Any Mixamo animation. addclip.py hero.json Throw.fbx throw carries an FBX clip onto the character's rig, free. The throw above came in that way. - It reviews itself. Every frame is checked against its render the pose, the held thing ; --redraw draws the marked sheets again and keeps the better drawing. The throw's 40 frames all passed after one redraw. - Then a pixel editor for the last bit. Pixel art is not all to be had by rule. pixeledit.py hero.json opens every frame in the browser: magic-erase a patch of left-over white, pencil, change a colour, move a selection, copy a good face into the other frames. Add any colour to the palette; and the frames themselves can be copied an in-between to draw on - 8 frames made 9 , deleted and moved: the shadow and the game's data follow. The edits are kept and laid on again by every later build. And the 3D render the frame was drawn from can be shown beside it key 3 or faint under it - so you can see what a doubtful pixel is meant to be before you touch it: How much is left to the hand: very little. For the 40 throw frames, about 6 minutes of AI drawing and 2 of AI cut-out; then the only hand work was the magic eraser - a click on each speck of left-over white, in 10 of the 40 frames 131 pixels, 0.15 % of the sprites . No face was touched: they are as the pipeline made them. The build prints those numbers every time. How many colours. A set comes out with about 40 colours. --colours 16 gives it 16 at most 8 is the least , and --palette gives every pixel its nearest colour in a set palette: one of the 15 that come with the skill, by name --palette pico8 ; --palette list shows them , or your own file in what Aseprite reads - .png .gif .bmp .pcx , .hex Lospec , .gpl , .pal , .act , .col , .aseprite . Both are free: nothing is drawn again, the same drawings are read with another palette. Props take the same two options. Down to 16 the character holds up well; at 8 close colours merge her navy legs go black , and a palette with nothing near one of her colours will change that colour - look at the result before you keep it. The palettes that come with it, on the same two sprites - a yellow coat needs a yellow in the palette c64 , gameboy , slso8 and sweetie16 have none : The palettes are their authors': AAP-64 by Adigun A. Polack, Apollo by AdamCYounis, DawnBringer 16/32 by DawnBringer, Endesga 32/64 by ENDESGA, Resurrect 64 by Kerrie Lake, SLSO8 by Luis Miguel Maldonado, Sweetie 16 by GrafxKid - taken from Lospec https://lospec.com/palette-list . Sizes. 96 px is the size for a character of ordinary proportions. 64 px works for a character designed small - about three heads tall, with its own 3D model - and comes out about 70 px. Under that, the image model is never asked: it does not keep to so few squares 32 px was tried four ways . --px 32 draws at 64 and makes the 32 set from it, free - the same motion and frames, with rougher faces. 64 is the one that comes out well. Both sets are in examples/rain chibi https://github.com/Sunghwan0112/spritecast/blob/main/examples/rain chibi : the three-heads design drawn from the rain girl, its turnaround, the spec, pixel64/ walk and throw in eight facings, 128 frames, each with its shadow; no pixel was touched by hand and pixel32/ made from it. Her throw is a Mixamo clip put on with addclip.py --clear-head 55 ; the clip and the rig are not in the repo. Why not ask for 32 px? The image model GPT does not do small pixel art well under 64. It draws its "pixels" at a size of its own - asked for 8-px squares it drew anything from 7.4 to 10.8 - and at 32 squares one square off is an eye gone. Above: the top row is what it draws at 64; the three red rows are 32 px asked for directly, each a different sheet layout, all of the same walk. So the skill asks for 64 and makes 32 from that the green row . The details: reference/pixel.md https://github.com/Sunghwan0112/spritecast/blob/main/skills/spritecast/reference/pixel.md . The sprites above are in examples/rain girl/pixel https://github.com/Sunghwan0112/spritecast/blob/main/examples/rain girl/pixel : the throw in five facings, a walk in two and the umbrella slash as strips, their shadows, the snowball with its flight shape and burst, and pixel.json with the release data. The same way round as a character, for a thing: its 3D guide is pixelized, the image model redraws it as pixel art on the same grid, and the drawing is read back on that grid and brought to the guide's size. The angle is the camera's, so a thing turned four ways is four sprites of ONE thing - the same roof, the same wheels, each side with what belongs on it. $PYTHON skills/spritecast/scripts/isoprop.py model cart.json --yes Tripo makes the 3D model from the description ~20 credits $PYTHON skills/spritecast/scripts/isoprop.py render cart.json free: the guide from each side "views": 0, 90, 180, 270 $PYTHON skills/spritecast/scripts/proppixel.py cart.json --yes ~$0.08 a side → out-pixel/sprite-