Moving layers (GIF)
Any trait can be an animated GIF. Put it in its layer folder like any other trait image. KURV plays every moving layer at once and publishes each piece as one animated GIF. PNG, WebP and JPG traits in the same collection hold still on every frame.
What you get
Section titled “What you get”- One trait with more than one frame makes every piece in the collection a GIF. A piece that wears no moving trait is a GIF of one frame.
- The Studio preview, Preview 12 and the full-size piece show the real GIF, a piece with no moving trait included. Gallery tiles and share cards show the first frame.
- Layer order, rarity, rules, blend modes and opacity work on moving layers exactly as on still ones.
- A moving trait can sit on any layer, over or under still ones, and a piece can wear several at once.
- A given piece always comes out as the same file. A publish that stops and picks up again matches what was already published.
Timing
Section titled “Timing”- Every moving layer repeats for the whole piece, and every piece loops forever. A GIF set to play once still repeats inside the piece.
- A piece loops for as long as its moving traits take to line up, up to 20 seconds. A 1 s blink beside a 1.5 s sway loops every 3 s, and both restart together.
- If two traits only line up after more than 20 seconds, the piece loops for the longer one, and the shorter one jumps back to its start at that point. The Check tab in the Studio names every pair that does this.
- Three or more traits can line up two at a time and still not all together. Loops of 4 s, 5 s and 3 s line up in pairs within 20 seconds, but all three only after 60, so a piece wearing all three jumps. The Check tab names these combinations too. Loops that are whole multiples of one another, such as 0.5 s, 1 s and 2 s, always line up.
- A trait that plays for longer than 20 seconds starts again at 20 seconds.
- A delay of 0 or 10 ms plays as 100 ms, the same as in a browser. When two layers change frames within 20 ms of each other, the second change starts 10 ms early, together with the first.
- A piece has at most 240 frames, and one trait file can have at most 240, so a trait on its own plays every frame, within the 20 seconds a piece loops for. When the traits a piece wears change more than 240 times in its loop together, the piece plays on an even beat instead. It still loops smoothly, but frames that fall between two beats are not shown. The Check tab names every combination that does this, with the beat it plays on.
Limits
Section titled “Limits”The Check tab in the Studio lists every one of these as soon as one trait moves, before you generate.
- One trait file can have at most 240 frames and be at most 4096 pixels on a side, and its frames can add up to at most 268 million pixels (268,435,456): as much as 240 frames of 1057 × 1057. A frame cropped to the part that moves counts only its own size. The import refuses a file over any of these and names it.
- The import also refuses a GIF with a damaged frame, one whose picture data ends before the frame does, and names it. A GIF of one frame is held to the same rule. Browsers show such a frame differently from one another, so there is no one way to draw it.
- A PNG trait in a collection that moves can be at most 8192 pixels on a side. The import refuses a larger one and names it. A PNG whose picture data ends early is shown partly drawn by browsers, each in its own way, so the Studio preview and publishing refuse any piece that wears it and name the trait.
- A piece loops for at most 20 seconds and holds at most 240 frames. See Timing above for what happens past either.
- One piece can have at most 1,000 million pixels to draw. That counts reading each moving trait’s file, every frame’s changed area in the two passes a piece is drawn in, and writing each frame. A blink and a sparkle over a full background at 1000 × 1000 come to about 160 million. A short loop that repaints the whole canvas on every frame, worn beside a slow trait that stretches the piece to 16 seconds, comes to more than 1,000 million. A piece with nothing solid behind it costs more, because a frame that turns a pixel clear is written whole. A layer that some pieces go without, through a None weight, a count of pieces without it, or a piece in
uniques/that leaves it out, does not count as solid behind them. The Check tab names every combination over the limit, and publishing stops at the first piece that wears one and names its traits. - One piece can be at most 20 MB (20,971,520 bytes). Publishing stops at the first piece over that and names it.
- One publish can carry at most 40 GB of pieces in all (42,949,672,960 bytes): about 2,000 pieces at 20 MB each, or 13,000 at 3 MB. Once the first batch of pieces is drawn, the Publish card says what the whole collection comes to at that size if that is more than 40 GB, and publishing carries on. A piece that wears no moving trait is far smaller than one that does, so the first pieces can make a collection that fits look too big. Publishing stops only when the pieces it has drawn really pass 40 GB, before that piece is sent.
- Every frame of a piece draws from one palette of at most 255 colours, and one more index is kept for clear pixels. A piece with 255 colours or fewer keeps every one of them exactly. A piece with more gets the 255 that fit its art best, with no dithering, so smooth gradients can show bands.
- A GIF pixel is either clear or solid: one under half opacity is written clear. Where there is nothing solid underneath, soft edges turn hard. The Studio preview says so when a piece has them.
- Only GIF files move. An animated PNG or WebP is used as its first frame.
- Download a copy writes each piece into the file as it is drawn. When the pieces come to more than 1 GB, the copy is saved as several files of at most 1 GB each, numbered from 1. Each holds its own pieces and their label files, and the last also holds
manifest.jsonandstats.json. The first file starts saving when you press Download a copy. Each file after it gets its own button under that one as soon as it is written, and saves when you press it. - Drawing a moving collection takes longer than a still one, because every frame of every piece is drawn in your browser before it is published. The estimated time on the Publish card counts that drawing, piece by piece.
Preparing GIF layers
Section titled “Preparing GIF layers”- Export each GIF at the canvas size, 1000 × 1000 for example, with its part drawn in place and the rest transparent. This is the same as a PNG trait.
- Keep
.gifat the end of each GIF’s file name. The import reads a folder as moving art when some file in it is named.gif, and then finds every GIF in it by its contents. In a folder where no file is named.gif, every trait is read as a still image. - Keep the loops in simple ratios: 0.5 s, 1 s, 2 s. Traits that loop at 1.3 s and 1.7 s only line up after 22 seconds, and one of them will jump.
- Use frame delays in steps of 10 ms. That is the unit a GIF counts in.
- Put a bottom layer that fills the whole frame, so edges stay soft and pieces draw faster.
- Keep the moving part small and the frame count low. The pieces are smaller, and the collection publishes sooner.
- After import, open the Check tab and read the moving layers card.
Next: Studio, rules and generate.
Nothing here is financial advice. Read Risks and disclaimer before you mint, buy or sell back. Back to kurv.fun. Privacy policy. Terms of use. .
