Skip to content

Prepare your layers

Give KURV a folder of layers and it builds every piece for you. Get the folder shape right and the import goes smoothly. If something is off, the import tells you what it had to decide before you go on.

KURV makes generative collections only. There are no open editions, no music or video, and no uploading finished images made somewhere else. Every piece is built from your layers. You can still choose the exact traits of any piece, or draw a piece yourself (see below).

my-collection/
layers.json optional
rules.json optional
layers/
01_Background/
Dunes#40.png
Night#10.png
03_Body/
12_Headwear/
None#40.png
Cap#30.png
Visor#25.png
Crown#5.png
uniques/ optional

(03_Body/ is shown empty only to keep the tree short. Every layer folder needs its own trait images.)

  • Make one folder per layer. Put transparent PNGs inside. Each file is one trait.
  • The number in front of the folder name sets paint order, bottom to top. 01_Background goes on first.
  • The name after the number is the layer name collectors see. The file name before # is the trait name.
  • Give every folder its own name. If two folders share a name after the number, the second one keeps its full folder name, and collectors see that.
  • You can reorder layers later in the Studio by dragging.
  • The number after # is the trait’s weight. It only counts against the other files in the same folder. Dunes#40 shows up four times as often as Night#10.
  • A file with no number counts as 1. A folder with no numbers starts out evenly split.
  • #0 means the trait is never picked at random. Use it for a trait only a pinned piece wears.
  • Collectors never see the number.
  • Tip: make each layer add up to 100 so anyone can read it at a glance.

You never have to rename a file to tune rarity. In the Studio, each layer has a slider per trait.

Need exact counts? In the Studio, open a trait and set Exactly, At least or At most. For example, Gold = exactly 6. A count wins over the slider.

Put one empty None file in that folder, with a weight like any other. The None weight is drawn from the same pool as the traits. So None#40.png beside Cap#30, Visor#25 and Crown#5 means about 40 in 100 pieces have no headwear. Pieces without the layer show it as “None”.

  • None.png, none.png, None#40.png and None #40.png all count. Blank, Empty or No Hat do not. They become traits with those names.
  • Leave it blank. Anything drawn in it is thrown away, and the import tells you so.
  • Use one per folder. A second None file in the same folder is not used.
  • Never put one on the bottom layer.
  • A folder that holds only a None file has nothing to draw, so it is left out.

You can also turn on Optional layer for that layer in the Studio. It does the same thing.

Every image is the same square. We recommend 1000 × 1000. If you set the size in layers.json, it must be a whole number from 1000 to 4096.

Each trait is a full-size transparent image with its part drawn in place. An Eyes file is 1000 × 1000 with eyes on it, not a small picture of eyes. The bottom layer fills the frame.

Without layers.json, the first trait image sets the canvas. An image of a different size lands small or cropped on every piece that wears it, and the import warns you. Bigger images mean a slower build and a bigger upload.

LayoutWhat it is
PersonA bust portrait with 12 fixed seats, from 01 Background to 12 Headwear. Each seat has its own paint area.
CardA trading card: Background, Frame, Art, Badge, Gem and an optional Foil overlay. Never draw lettering into a trait.
PlainAnything else. No fixed seats. Number layers in tens (10, 20, 30) so you can slip one in later.

In the person layout, the seat numbers never move. Leave gaps for seats you do not use. A five-layer person collection is 01, 03, 07, 08, 12, not 01 to 05.

  • layers.json names the layout (person, card or generic for plain), the canvas size and the number of pieces (supply). If you type a number of pieces on Create, that number wins.
  • rules.json lists rules of two kinds: Never combine (two traits never meet) and If … then (when one trait shows up, another layer is limited to the traits you list). Give each a note saying why. A rule that names a layer or trait the folder does not have stops the import.
  • uniques/ holds pieces you draw yourself. Use one folder per piece, like 001 The Golden Fox/. The number is the token number it is pinned to; leave it off and the shuffle places it. Split the art by layer, one image per layer, named <layer folder> - <trait name>.png. A file that does not start with a layer folder’s name is refused, so a single flat picture will not import.

A phone cannot pick a folder. So:

  1. Zip your layers folder.
  2. Open Create.
  3. Press Pick a ZIP and choose the file.

No layers yet? Press Try the sample collection on Create. It loads Blobs: 60 pieces from five layers (Background, Body, Eyes, Mouth, Hat). The sample is 512 × 512, so do not copy its size.

The in-app docs page Lay out your folder has a ready-made prompt with a copy button. Give it to a model or agent. It has the exact paint areas, file names, None rules and hand-drawn piece format.

  1. Check that every image is the same square size.
  2. Check that every layer folder is numbered, back to front.
  3. Check that each sometimes-missing layer has exactly one blank None file, and the bottom layer has none.
  4. Stack one random trait from each layer in an image editor. It should look finished and lined up.

Next: Pinned pieces and rules.

Testnet only. Nothing here is financial advice. Read Risks and disclaimer before you mint, buy or sell back. Back to kurv.fun.