Point this at your parts folder once — it is remembered.
Choose your parts folder to begin. Nothing is uploaded — the files are read in this browser and never leave it.
What the folder needs
One folder per layer. Names are matched loosely, so most packs work untouched:
my-pack/ body/ base_01.png also: bodies, base, skin, character eyes/ eyes_01.png also: eye, face outfit/ outfit_01_01.png also: outfits, clothes, clothing, tops hair/ hair_01_01.png also: hairstyles accessory/ hat_cap_01.png also: accessories, hats, extras, props
- Only
bodyis required. Every other layer is optional. - A folder it doesn't recognise becomes its own layer rather than being
dropped — add
wings/ortails/and you get a wings menu, drawn last. - Add
_kidsto a folder name (body_kids/) and it becomes the child set. - A nested size folder like
16x16/is stepped over, so packs shippinghair/16x16/*.pngwork as they are.
How to name the files
The grammar is detected per folder from the filenames themselves — you never declare it. All of these work:
hair_04_02.png— style 4, shade 2. Two numbers means style then colourway.hair_long_blonde.png— style "long", shade "blonde". A repeated trailing word is read as the colourway.anything.png— each file is simply its own style. Always safe.
A single trailing number is a style, never a shade: body_01 and
body_02 are two skin tones, not one tone twice.
Every part must be the same size
Layers stack at the same origin, so each part is a full sheet with the character in the same place — that is what makes a hat land on a head. Frame size and which row holds which animation live under Sheet layout, and you point at the rows rather than count pixels.
To use the result in Fam Fighter the frames must be 16×32 with
6 frames per facing, giving a 384×32 strip — that is what
SpriteLibrary.ts draws. Other sizes still build and download; they simply
aren't this game's NPC format.