Artnips
An artnip is a small drawing algorithm. Each one takes a handful of parameters (counts, angles, sizes) and turns them into shapes. When you generate a painting, the system picks one or more artnips at random and runs them in sequence using a single random seed. Same seed, same painting, every time.
Finished and active. Appears in random generation.
Still being developed. The algorithm may change, so old codes that reference it might not reproduce the same painting.
Can be picked by the random generator. Published but non-discoverable is the retired state: old codes still work, but new generations won't use it.
How likely an artnip is to be chosen (weight) and the visual character it brings (mood).
12 discoverable · field ranges shown for a 1000×1000 canvas
Brush Stroke
id = 2
Draft brush dab implementation — superseded by future BrushDabStroke (id=20). Kept so any dev paintings with id=2 remain parseable.
8 fields
| Field | Type | Range | Description |
|---|---|---|---|
| startSize | number | 5..100 | Diameter of each dab at the start of the stroke. |
| endSize | number | 5..100 | Diameter of each dab at the end of the stroke. |
| lineDistanceWidth | number | 20..300 | Horizontal distance between stroke grid columns. |
| lineDistanceHeight | number | 20..300 | Vertical distance between stroke grid rows. |
| startPositionOffset | point | -150..150 | XY offset of the stroke start point from the grid cell center. |
| endPositionOffset | point | -150..150 | XY offset of the stroke end point from the grid cell center. |
| color | color | — | Color of the brush dabs. |
| colorTransitionDirection | number | -1..1 | Color transition across rows: 1 = forward, -1 = reverse, 0 = no transition. |
Any Circle
id = 3
A circle at a random position and size. Large radii frequently extend off-screen — intentional; see InScreenCircle for the on-screen variant.
3 fields
| Field | Type | Range | Description |
|---|---|---|---|
| center | point | x 0..1000 / y 0..1000 | Center position of the circle. |
| radius | number | 5..500 | Radius of the circle. Large values frequently extend off-screen. |
| color | color | — | Fill color of the circle. |
In-Screen Circle
id = 4
A circle guaranteed to fit fully within the canvas bounds.
3 fields
| Field | Type | Range | Description |
|---|---|---|---|
| center | point | x 0..1000 / y 0..1000 | Center position of the circle (clamped so the circle stays within canvas bounds). |
| radius | number | 5..500 | Radius of the circle. Always chosen so the full circle fits within the canvas. |
| color | color | — | Fill color of the circle. |
Rain
id = 1
A grid of parallel lines drawn across the canvas at a random angle and spacing.
7 fields
| Field | Type | Range | Description |
|---|---|---|---|
| vectorLength | number | 20..300 | Length of each rain line in pixels. |
| vectorAngle | number | 0..360 | Angle of the rain lines in degrees. |
| lineDistanceWidth | number | 20..300 | Horizontal gap between rain line columns. |
| lineDistanceHeight | number | 20..300 | Vertical gap between rain line rows. |
| start | point | -150..0 | Starting offset for the top-left anchor of the rain grid. |
| color | color | — | Color of the rain lines. |
| colorTransitionDirection | number | -1..1 | Color transition across rows: 1 = forward, -1 = reverse, 0 = no transition. |
Rings
id = 5
Concentric rings radiating from a random center. Rings are drawn as polylines; large radii extend off-canvas, creating partial arcs at the edges.
6 fields
| Field | Type | Range | Description |
|---|---|---|---|
| center | point | x 0..1000 / y 0..1000 | Center point from which all rings radiate. |
| ringCount | number | 2..14 | How many concentric rings to draw. |
| innerRadius | number | 10..250 | Radius of the innermost ring. |
| spacing | number | 10..80 | Distance in pixels between consecutive rings. |
| color | color | — | Starting color of the rings. |
| colorTransitionDirection | number | -1..1 | Color transition across rings: 1 = forward, -1 = reverse, 0 = no transition. |
Hatching
id = 6
Parallel lines drawn across the canvas at a fixed angle. Each line gets a random stroke-width between weightMin and weightMax, controlled by a seed.
8 fields
| Field | Type | Range | Description |
|---|---|---|---|
| angle | number | 0..180 | Angle of the hatch lines in degrees (0 = horizontal). |
| spacing | number | 8..80 | Distance in pixels between adjacent hatch lines. |
| lineCount | number | 5..60 | How many hatch lines to draw. |
| weightMin | number | 1..8 | Minimum stroke width for hatch lines. |
| weightMax | number | 1..16 | Maximum stroke width for hatch lines. |
| color | color | — | Starting color of the hatch lines. |
| colorTransitionDirection | number | -1..1 | Color transition across lines: 1 = forward, -1 = reverse, 0 = no transition. |
| seed | number | 0..2147483647 | Seed for per-line random stroke-width variation. |
Polygons
id = 7
Filled n-gons scattered across the canvas. Count, size range, and spread are tunable; the exact placement and rotation of each shape is determined by the seed.
9 fields
| Field | Type | Range | Description |
|---|---|---|---|
| count | number | 3..30 | How many polygons to scatter across the canvas. |
| sidesMin | number | 3..8 | Minimum number of sides per polygon. |
| sidesMax | number | 3..12 | Maximum number of sides per polygon. |
| radiusMin | number | 10..80 | Minimum radius of each polygon in pixels. |
| radiusMax | number | 20..333.3333333333333 | Maximum radius of each polygon in pixels. |
| spread | number | 20..100 | How widely polygons are scattered, as a percentage of canvas size. |
| color | color | — | Starting fill color of the polygons. |
| colorTransitionDirection | number | -1..1 | Color transition across shapes: 1 = forward, -1 = reverse, 0 = no transition. |
| seed | number | 0..2147483647 | Seed controlling the exact placement, size, and rotation of each polygon. |
Ellipses
id = 8
Filled axis-aligned ellipses scattered across the canvas. Count, radius ranges, and spread are tunable; exact placement and proportions are seed-determined.
9 fields
| Field | Type | Range | Description |
|---|---|---|---|
| count | number | 3..30 | How many ellipses to scatter across the canvas. |
| rxMin | number | 5..60 | Minimum horizontal radius of each ellipse. |
| rxMax | number | 20..333.3333333333333 | Maximum horizontal radius of each ellipse. |
| ryMin | number | 5..60 | Minimum vertical radius of each ellipse. |
| ryMax | number | 20..333.3333333333333 | Maximum vertical radius of each ellipse. |
| spread | number | 20..100 | How widely ellipses are scattered, as a percentage of canvas size. |
| color | color | — | Starting fill color of the ellipses. |
| colorTransitionDirection | number | -1..1 | Color transition across shapes: 1 = forward, -1 = reverse, 0 = no transition. |
| seed | number | 0..2147483647 | Seed controlling the exact placement and proportions of each ellipse. |
Waves
id = 9
Wavy lines spanning the canvas at any angle. Each wave starts and ends at a canvas wall; amplitude and wavelength are tunable.
8 fields
| Field | Type | Range | Description |
|---|---|---|---|
| lineCount | number | 1..20 | How many wave lines to draw. |
| angle | number | 0..360 | Direction the waves run in degrees (0 = horizontal, 90 = vertical). |
| amplitude | number | 5..120 | Height of each wave's peaks and troughs in pixels. |
| wavelength | number | 40..1000 | Distance in pixels between repeating wave peaks. |
| strokeWeight | number | 1..6 | Stroke width of the wave lines. |
| color | color | — | Starting color of the waves. |
| colorTransitionDirection | number | -1..1 | Color transition across lines: 1 = forward, -1 = reverse, 0 = no transition. |
| seed | number | 0..2147483647 | Seed for per-line random phase offsets. |
Flow Field
id = 10
Hundreds of particles drift through an invisible field, each leaving a short trail of line segments. The field angle at every point is derived from a sine-cosine noise function, producing organic, current-like flows.
7 fields
| Field | Type | Range | Description |
|---|---|---|---|
| particleCount | number | 50..500 | Number of particles to trace through the field. |
| steps | number | 5..20 | Number of line segments each particle draws as it moves. |
| stepSize | number | 4..30 | Distance in pixels each particle travels per step. |
| frequency | number | 0.001..0.02 | Spatial frequency of the noise field — higher values produce tighter, more chaotic curls. |
| strokeWidth | number | 1..4 | Stroke width of each particle trail segment. |
| color | color | — | Base color used to seed the random per-particle palette. |
| seed | number | 0..2147483647 | Seed controlling particle start positions and colors. |
Spirograph
id = 11
A hypotrochoid: a mathematical curve traced by a point on a smaller circle rolling inside a larger one. Multiple overlapping spirographs in different colors produce star, flower, and mandala-like patterns.
7 fields
| Field | Type | Range | Description |
|---|---|---|---|
| R | number | 100..400 | Radius of the outer fixed circle in pixels. |
| r | number | 10..200 | Radius of the inner rolling circle in pixels. |
| d | number | 0..250 | Distance of the drawing point from the center of the inner circle. |
| count | number | 1..5 | Number of spirograph curves to draw, each in a different color. |
| strokeWidth | number | 1..4 | Stroke width of each spirograph curve. |
| color | color | — | Seed color; each additional curve picks a random variation. |
| seed | number | 0..2147483647 | Seed controlling per-curve color and center jitter. |
Truchet
id = 12
A grid of tiles each split diagonally into two triangles. Random orientation per tile makes adjacent shapes flow together into organic path-like patterns. A classic generative tiling.
5 fields
| Field | Type | Range | Description |
|---|---|---|---|
| tileSize | number | 40..150 | Side length of each square tile in pixels. |
| color1 | color | — | Fill color for the first triangle in each tile. |
| color2 | color | — | Fill color for the second triangle in each tile. |
| seed | number | 0..2147483647 | Seed controlling which tile orientation is chosen for each grid cell. |
| alpha | number | 0.3..1 | Overall opacity of the tiling layer (0.3–1). Allows underlying artnips to show through. |
Perlin Blobs
id = 13
Soft organic blob shapes created by warping a circle outward using a deterministic noise function. Multiple blobs overlap in different colors, producing amoeba and cloud-like forms.
5 fields
| Field | Type | Range | Description |
|---|---|---|---|
| blobCount | number | 3..15 | Number of blob shapes to draw. |
| blobRadius | number | 50..250 | Base radius of each blob in pixels before noise warping. |
| noiseScale | number | 0.005..0.05 | Spatial scale of the warp noise — smaller values produce smoother, rounder blobs. |
| color | color | — | Seed color; each blob picks a random variation from this palette. |
| seed | number | 0..2147483647 | Seed controlling blob positions and individual colors. |