Style fields
| Field | Type/default | Meaning |
|---|---|---|
extends | style id | Optional parent style. The child inherits resolved settings but must declare its own outDir. |
provider | top-level default | Provider registry id for this style. Assets cannot override it. |
generator | map | map, 1dir, pixflux, tiles, terrain, isometricTile, imagePro, character, objectPro, uiAsset, uiElement, imageProFlash, vfx, or provider-specific animation/frames. See GENERATORS.md. |
outDir | string, required | Output directory relative to the manifest. |
promptPrefix | "" | Prepended to every participating asset prompt. |
promptSuffix | "" | Appended to every participating asset prompt. |
styleImages | [] | { "path": "..." } reference images. Paths are manifest-relative. |
size | integer 16–8192 | Square size. Each provider and generator applies its own narrower limits. For PixelLab 1dir, a style reference's dimensions take precedence. |
view | string | PixelLab map: low top-down, high top-down, or side. Other generators interpret this separately. |
outline | string | PixelLab map: single color outline, selective outline, or lineless. |
shading | string | PixelLab map: flat shading, basic shading, medium shading, or detailed shading. |
detail | string | PixelLab map: low detail, medium detail, or high detail. |
seed | integer | Deterministic provider seed where supported. |
palette | hex array, [] | The style's palette; # is optional. Sent to providers that take one (pixflux, imagePro as its target palette, Retro Diffusion, ComfyUI bindings). |
paletteName | string ≤100 | imagePro only, needs palette: the palette's name (Game Boy, PICO-8), which PixelLab uses to help the look. |
maxColors | integer 2–64 | imagePro only: at most this many colours in each candidate, drawn from palette when one is set. |
enforcePalette | boolean, false | Snap every downloaded PNG to the nearest palette colour, no dithering. Needs at least two colours. See Palette enforcement. |
noBackground | boolean, true | pixflux background removal. Set false for scenes/backdrops. |
providerOptions | object, {} | Options grouped by provider id. Only the active provider's object is resolved and hashed. |
tileSize | integer 16–256 | Edge length for tiles when no style reference supplies geometry. |
tileType | enum | hex, hex_pointy, isometric, oblique, octagon, or square_topdown. |
tileView | enum | top-down, high top-down, low top-down, or side. |
tileFeature | enum | Connectable roads, tileset, or building structural set. |
outlineMode | enum | outline or segmentation; segmentation avoids quilted ground seams. |
terrainOrientation | top-down | terrain only. sidescroller makes a platform set: prompt 1). <platform body> 2). <top layer>, 16 or 32px, no mode, view, or shape controls. |
terrainMode | standard | terrain only. standard or pro. |
terrainTileSize | 16 | terrain only. 16, 32, or 64 (pro only). |
terrainTransitionSize | 0 | terrain only. 0, 0.25, 0.5, or 1 (any 0–0.5 with terrainShapeStyle). Pro reads it as wall height; above 0.4 a Pro set has 25 tiles, standard only at 1. |
terrainView | high top-down | terrain only. low top-down or high top-down. |
terrainShapeStyle | terrain, standard only. square or round procedural boundary. | |
terrainRaggedness | 0 | terrain, pro only. Boundary noise, 0–1. |
terrainRoundness | 0.85 pro, 0.6 shape style | terrain, pro or terrainShapeStyle. Border corners: 0 square, 1 round, 2 cut at 45° (above 1 pro only). |
terrainBoundaryAmplitude | 0 | terrain, pro or terrainShapeStyle. How far the border meanders, 0–0.3. |
terrainBoundarySeed | 0 | terrain, with terrainBoundaryAmplitude. Which meander, an integer. |
terrainStepSlope | 0 | terrain, pro at terrainTransitionSize 0.25 only. 0 a cliff to 2 a gentle slope. |
terrainConnectDiagonals | false | terrain, pro only. Join the diagonal tiles' upper corners into one area. |
terrainSpreadX / terrainSlopeSize | Deprecated: PixelLab ignores both. Still accepted. Changing any terrain* field marks the set stale: the older ones (mode, transition size, view, shape style, raggedness, these two) and the descriptions as sent are recorded per lock entry as terrainSettings rather than hashed, compared as written (an explicit default counts as a change), and absent on sets generated before that record existed, which stay current. | |
mode | standard | character only. standard, v3, pro, or pro-flash; see Characters. |
directions | 8 | character only. 4 or 8; every engine but standard draws 8. |
template | mannequin | character only. Body template: mannequin, or bear, cat, dog, horse, lion; custom for pro-flash. |
proportions | character only, standard humanoid bases. A preset (default, chibi, cartoon, stylized, realistic_male, realistic_female, heroic) or multipliers { headSize, armsLength, legsLength, shoulderWidth, hipWidth }, each 0.5 to 2. An asset may override it. | |
textGuidanceScale | 8 | character only. How closely a standard base and a template loop follow their text, 1 to 20. |
isometric | false | character only. Draw standard bases and every loop in isometric view. |
enhancePrompt | false | character only, v3 bases. Let PixelLab expand the prompt into a fuller one before drawing. |
styleCharacter | character only, pro bases. The asset id of a generated 8-direction character in this style whose look bases drawn from text or a concept follow. An asset may override it. | |
styleTraits | all true | character pro-flash bases and imageProFlash styles, with a style image. { palette, outline, detail, shading } booleans: which traits the style image lends. |
mount | object | Stable-cell sheet placement; documented below. |
quality | object | Optional native-grid, final-palette, and human-approval contract; documented below. |
tags | string array, [] | Tags inherited by every generated provider object in the style. |
One style using the common fields, and a pixflux style with a locked
palette:
{
"styles": {
"base": {
"generator": "map",
"outDir": "assets/generated/base",
"promptPrefix": "pixel-art game prop",
"promptSuffix": "isolated, transparent background",
"size": 64,
"view": "high top-down",
"outline": "selective outline",
"shading": "medium shading",
"detail": "medium detail",
"seed": 7,
"tags": ["props"]
},
"gb": {
"generator": "pixflux",
"outDir": "assets/generated/gb",
"palette": ["#0f380f", "#306230", "#8bac0f", "#9bbc0f"],
"enforcePalette": true,
"noBackground": false
}
}
}
Style inheritance
Use extends for a real variant that differs from a base style by a few
settings. Do not copy the whole style:
{
"styles": {
"pony-character": {
"generator": "map",
"promptPrefix": "score_9, score_8_up, rating_safe",
"promptSuffix": "clean pixel clusters",
"seed": 24000,
"outDir": "art/generated/pony-character",
"quality": {
"outDir": "art/native/pony-character",
"palette": ["#17111f", "#76506f", "#e5a9b8", "#fff1de"],
"minGridConfidence": "high"
}
},
"pony-explicit": {
"extends": "pony-character",
"promptPrefix": "score_9, score_8_up, rating_explicit",
"seed": 24001,
"outDir": "art/generated/pony-explicit",
"quality": {
"outDir": "art/native/pony-explicit"
}
}
}
}
The child wins for ordinary fields. Arrays and nested objects are replaced, not concatenated or recursively merged. Two fields get a focused merge:
qualitykeeps parent keys that the child does not override;providerOptionskeeps parent provider namespaces and merges each provider's immediate option keys. A deeper object such asbindingsis still replaced as a whole.
Inheritance may span several styles. Unknown parents, self-reference, and
cycles are errors. Every child must declare outDir; output ownership is never
inherited. Omission means inherit, and there is no null deletion marker.
Defaults and generator constraints are applied after the chain is resolved.
Only the resolved style reaches planning. A parent edit to a pixel-affecting
field therefore changes every child's spec hash; a quality-policy edit changes
the child's derived quality state without buying new provider art. extends
itself is not runtime or lockfile state.
Generator-specific fields are validated before planning. Important constraints:
1diris square; use style/assetsizerather than width/height.- When
sizeandstyleImagesare both present, PixelLab derives size from the largest reference image and the declared size is advisory. mapsupports arbitrary assetwidthandheightbut not forced palettes or style images.enforcePalettestill holds its output to the palette.pixfluxaccepts a forcedpaletteand returns inline output; it has no style-image support.imageProsendspalette(2 to 256 colours) as PixelLab's beta target palette: every pixel of every candidate is one of those colours. AddpaletteNameto name it andmaxColorsto cap each candidate's colours. The cost is unchanged.tilescannot combinetileFeaturewithstyleImagesbecause the provider rejects connectable features in style-tile mode.- ComfyUI
framesderives its count from one 2–64 itemproviderInputssequence, renders one still per item, and reviews the ordered set atomically.
See generator selection for costs and trade-offs. See mixed-provider projects when styles in one manifest need different backends and budget units.
