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).
The folder
Section titled “The folder”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.)
Layers and paint order
Section titled “Layers and paint order”- 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_Backgroundgoes 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.
Rarity in file names
Section titled “Rarity in file names”- The number after
#is the trait’s weight. It only counts against the other files in the same folder.Dunes#40shows up four times as often asNight#10. - A file with no number counts as 1. A folder with no numbers starts out evenly split.
#0means 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.
A layer that is sometimes missing
Section titled “A layer that is sometimes missing”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.pngandNone #40.pngall count.Blank,EmptyorNo Hatdo 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.
Canvas size
Section titled “Canvas size”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.
Layouts
Section titled “Layouts”| Layout | What it is |
|---|---|
| Person | A bust portrait with 12 fixed seats, from 01 Background to 12 Headwear. Each seat has its own paint area. |
| Card | A trading card: Background, Frame, Art, Badge, Gem and an optional Foil overlay. Never draw lettering into a trait. |
| Plain | Anything 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.
Optional files
Section titled “Optional files”- layers.json names the layout (
person,cardorgenericfor 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.
On a phone
Section titled “On a phone”A phone cannot pick a folder. So:
- Zip your
layersfolder. - Open Create.
- 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.
Using an agent to draw
Section titled “Using an agent to draw”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.
Before you import
Section titled “Before you import”- Check that every image is the same square size.
- Check that every layer folder is numbered, back to front.
- Check that each sometimes-missing layer has exactly one blank None file, and the bottom layer has none.
- 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.
