pixelkiln 0.89.2 → 0.89.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +6 -0
- package/dist/cli.js +33 -5
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +33 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +33 -5
- package/dist/index.js.map +1 -1
- package/docs/CHARACTERS.md +9 -0
- package/docs/ENDPOINTS.md +36 -2
- package/docs/GENERATORS.md +1 -1
- package/docs/PIXELLAB.md +6 -5
- package/package.json +1 -1
- package/skills/pixelkiln/references/pixellab-roadmap.md +6 -3
- package/skills/pixelkiln/references/pixellab.md +8 -3
package/docs/CHARACTERS.md
CHANGED
|
@@ -209,6 +209,15 @@ higher, and it is sent to `/characters/animations`, the endpoint that
|
|
|
209
209
|
documents it; every other mode keeps using `/animate-character`. Like a
|
|
210
210
|
template loop it takes no `frames` and needs no prompt of its own.
|
|
211
211
|
|
|
212
|
+
It needs a character PixelLab stored a 3D skeleton for. A `v3` base has
|
|
213
|
+
one (a `skeleton-v3` loop on it billed 3 generations live). A `standard`
|
|
214
|
+
base has none: PixelLab answers `POST /characters/animations` with a bare
|
|
215
|
+
500 (`Failed to start any animation jobs`, nothing billed) and, asked,
|
|
216
|
+
says to use `mode: "template"` for that character. `plan` and `validate`
|
|
217
|
+
refuse the combination and name the engine. `pro` and `pro-flash` bases
|
|
218
|
+
are not refused, but a `skeleton-v3` loop on one is unverified; try a
|
|
219
|
+
single direction before a batch.
|
|
220
|
+
|
|
212
221
|
```jsonc
|
|
213
222
|
"mira.walk": { "animation": { "of": "mira", "template": "walk", "mode": "skeleton-v3", "directions": ["south", "west", "north"] } }
|
|
214
223
|
```
|
package/docs/ENDPOINTS.md
CHANGED
|
@@ -406,8 +406,8 @@ normal-map` ([REVISIONS.md](./REVISIONS.md#normal-maps)).
|
|
|
406
406
|
Called out separately because these are the most capable endpoints for level art
|
|
407
407
|
and they are relevant to the disc-golf game. pixelkiln plans a top-down set
|
|
408
408
|
at PixelLab's own quote (Pro 15 for tiles up to 32px, 25 at 64px; standard 4,
|
|
409
|
-
the top of its quoted 1 to 4).
|
|
410
|
-
|
|
409
|
+
the top of its quoted 1 to 4). Every kind is measured below: Pro billed
|
|
410
|
+
exactly its quote at 32px and 64px, and standard billed 3, under the plan.
|
|
411
411
|
|
|
412
412
|
`POST /tilesets` (top-down) and `/tilesets-sidescroller` are the current
|
|
413
413
|
versions; `/create-tileset*` are the older aliases with identical schemas.
|
|
@@ -437,6 +437,32 @@ are the base tile ids, so set A's `upper` id sent as set B's
|
|
|
437
437
|
`lower_base_tile_id` makes the two share that terrain. pixelkiln records them
|
|
438
438
|
as `terrainIds` when it polls a set.
|
|
439
439
|
|
|
440
|
+
### Pro at 64px, edge slope, and standard sets, measured
|
|
441
|
+
|
|
442
|
+
A second round on the same showcase project billed 46 generations in all
|
|
443
|
+
(balance 5055 to 5009), each set exactly as below:
|
|
444
|
+
|
|
445
|
+
- `lava-floor`: Pro, 64px, `terrainTransitionSize: 0.5`,
|
|
446
|
+
`terrainRaggedness: 0.4`, `terrainBoundaryAmplitude: 0.15`,
|
|
447
|
+
`terrainBoundarySeed: 3`, prompt `1). glowing lava texture 2). dark dungeon
|
|
448
|
+
stone floor texture 3). crumbling dungeon brick wall`. Billed **exactly
|
|
449
|
+
25** and returned **25 tiles** covering **21** distinct corner
|
|
450
|
+
combinations, which confirms that Pro switches to the tall-wall layout at
|
|
451
|
+
0.5, not only at 1, and that four tiles are corner twins. The third
|
|
452
|
+
description became the brick wall dropping into the lava.
|
|
453
|
+
- `swamp-marsh`: Pro, 32px, `terrainTransitionSize: 0.25`,
|
|
454
|
+
`terrainStepSlope: 1.5`, `terrainRaggedness: 0.8`. Billed **exactly 15**,
|
|
455
|
+
16 tiles, with a ragged bank between the water and the marsh grass.
|
|
456
|
+
- `lake-grass` and `path-grass`: standard, 32px. Each billed **3**, under the
|
|
457
|
+
planned 4. `path-grass` used `connect: { upper: { of: "lake-grass",
|
|
458
|
+
terrain: "upper" } }`, sent `upper_base_tile_id`, and its recorded
|
|
459
|
+
`terrain_ids.upper` came back identical to `lake-grass`'s upper id. The
|
|
460
|
+
standard sets look flatter, with a hard edge, as PixelLab's tilesets
|
|
461
|
+
tutorial describes.
|
|
462
|
+
|
|
463
|
+
pixelkiln keeps connected sets in one style, and a style fixes
|
|
464
|
+
`terrainMode`, so a standard set cannot connect to a Pro set.
|
|
465
|
+
|
|
440
466
|
### Pro top-down and a connected pair, measured
|
|
441
467
|
|
|
442
468
|
October 2026, through `pixelkiln gen` on the website's showcase project
|
|
@@ -755,6 +781,14 @@ one size; the higher cost tiers are still unconfirmed under
|
|
|
755
781
|
carries `usage` once the job is gone, completed or not. `poll` reads the
|
|
756
782
|
object/character for the result but would need this same job id, still
|
|
757
783
|
polled separately today, to learn what it actually cost.
|
|
784
|
+
- **A v3 character base once recorded `billed: {amount: 0, unit: "usd"}`**
|
|
785
|
+
against an estimate of 2 generations while the submit reported 1
|
|
786
|
+
generation consumed. Its job record had expired before the shape could be
|
|
787
|
+
read (jobs are deleted 8 hours after finishing, and the lock had dropped
|
|
788
|
+
the job id), so the real `usage` is unseen; `GET /characters/{id}` carries
|
|
789
|
+
none. `poll` now treats a dollar-denominated zero as not known, tries
|
|
790
|
+
`last_response.billing_usage`, and keeps `backgroundJobId` in the
|
|
791
|
+
character's lock metadata.
|
|
758
792
|
- **`inpaint-v3` and `edit-images-v2` both confirmed live at their floor
|
|
759
793
|
size**: a 32×32 masked inpaint and a separate 32×32 whole-image edit each
|
|
760
794
|
billed exactly 20 generations, both matching a balance diff taken after.
|
package/docs/GENERATORS.md
CHANGED
|
@@ -12,7 +12,7 @@ account; [ENDPOINTS.md](./ENDPOINTS.md) contains the detailed experiments.
|
|
|
12
12
|
| Exact fixed palette | `pixflux`, or `imagePro` for a larger or non-square canvas | 1 generation (`imagePro`: 10–25) | 1 inline image (`imagePro`: 1–64 by size) |
|
|
13
13
|
| Candidate variety, richer rendering, future rotation/animation | `1dir` | 10–25 generations | 4–64 by size |
|
|
14
14
|
| Ground tiles or connectable structural sets | `tiles` | 10–25 generations | variations or complete set |
|
|
15
|
-
| Two-terrain Wang tileset for elevation (grass to water, floor to cliff), or a sidescroller platform set | `terrain` | Pro 15 at 32px and sidescroller 3
|
|
15
|
+
| Two-terrain Wang tileset for elevation (grass to water, floor to cliff), or a sidescroller platform set | `terrain` | Pro 15 at 32px and sidescroller 3, Pro 25 at 64px, standard 3 (all measured; standard plans at 4) | 16 or 25 tiles |
|
|
16
16
|
| Platform tileset for a sidescroller (stone body, grass top) | `terrain`, `terrainOrientation: "sidescroller"` | 3 generations | 16 tiles |
|
|
17
17
|
| A single elevation tile — a raised mesa, a cliff block | `isometricTile` | 1 generation | 1 |
|
|
18
18
|
| Larger or non-square scene or background, up to 792 wide and 688 tall | `imagePro` | 10–25 generations by canvas | 1–64 by size |
|
package/docs/PIXELLAB.md
CHANGED
|
@@ -71,7 +71,7 @@ unapproved files. See [Manifest quality profiles](./MANIFEST.md#quality-profiles
|
|
|
71
71
|
| `pixflux` | You need a closed palette or a full-bleed background | 1 generation |
|
|
72
72
|
| `1dir` | You need references or several candidates for human review | 10 to 25 generations |
|
|
73
73
|
| `tiles` | You need ground variations or a connected structural set | 10 to 25 generations |
|
|
74
|
-
| `terrain` | You need a two-terrain Wang tileset (grass to water, floor to cliff), sets that share a terrain, or a sidescroller platform set | Pro 15 at 32px
|
|
74
|
+
| `terrain` | You need a two-terrain Wang tileset (grass to water, floor to cliff), sets that share a terrain, or a sidescroller platform set | Pro 15 at 32px, 25 at 64px, standard 3, sidescroller 3 (all measured; standard plans at 4) |
|
|
75
75
|
| `isometricTile` | You need one standalone isometric tile, 16 to 64px | 1 generation (measured once) |
|
|
76
76
|
| `imagePro` | You need a larger or non-square scene, up to 792 wide and 688 tall, optionally held to the style's `palette` | 10 to 25 generations |
|
|
77
77
|
| `imageProFlash` | You need a still on the Pro Flash model, optionally styled from one image, 16 to 256px | 5 to 9 generations (provisional quote) |
|
|
@@ -121,11 +121,12 @@ PixelLab 0.4.130 (October 2026) added four things. PixelKiln covers each:
|
|
|
121
121
|
loop at 0.5 generations, and `pixelkiln normal-map` does it for a loose
|
|
122
122
|
file. See [Controlled asset revisions](./REVISIONS.md#normal-maps).
|
|
123
123
|
|
|
124
|
-
Each has been billed live and matched the plan:
|
|
125
|
-
|
|
124
|
+
Each has been billed live and matched the plan: Pro sets at 32px (15) and
|
|
125
|
+
64px (25, 25 tiles at transition 0.5), a second set connected to the first
|
|
126
|
+
(15), standard sets (3 each), a sidescroller set (3), a 64×64 `imagePro`
|
|
126
127
|
call with the Game Boy palette (10, every pixel one of its four colours), a
|
|
127
|
-
lite described effect (1), and normal maps (0.5 each). The home page
|
|
128
|
-
the results.
|
|
128
|
+
lite described effect (1), and normal maps (0.5 each). The home page's latest
|
|
129
|
+
updates section shows the results.
|
|
129
130
|
|
|
130
131
|
## Learn from PixelLab's tutorials
|
|
131
132
|
|
package/package.json
CHANGED
|
@@ -461,9 +461,12 @@ connecting different tilesets") are now mostly covered; see the closed
|
|
|
461
461
|
- **Measured once:** a Pro 32px set billed exactly 15, and a second set
|
|
462
462
|
connected to it through `lower_base_tile_id` billed exactly 15 and shared
|
|
463
463
|
its sand (docs/ENDPOINTS.md). `terrainRoundness: 2` with
|
|
464
|
-
`terrainConnectDiagonals` gave clean 45° edges.
|
|
465
|
-
Pro at 64px
|
|
466
|
-
|
|
464
|
+
`terrainConnectDiagonals` gave clean 45° edges. A second round confirmed
|
|
465
|
+
Pro at 64px (exactly 25, and 25 tiles at transition 0.5), edge slope and
|
|
466
|
+
an uneven boundary (15 at 32px), standard sets (3 each, under the planned
|
|
467
|
+
4), and connecting through `upper_base_tile_id`. **Still open:** a
|
|
468
|
+
standard set cannot connect to a Pro set, because connected sets share a
|
|
469
|
+
style and a style fixes the mode. Sidescroller tile counts at transition
|
|
467
470
|
sizes other than 0.25 are assumed to be 16. The one sidescroller call
|
|
468
471
|
returned `metadata.transition_size: 0.0` although 0.25 was sent.
|
|
469
472
|
- **Prompting advice** lives in the skill reference: end each terrain on
|
|
@@ -24,7 +24,7 @@ providers, or before any PixelLab account operation.
|
|
|
24
24
|
| `pixflux` | Closed palettes or full-bleed backgrounds up to 400×400 | 1 generation |
|
|
25
25
|
| `1dir` | Reference-guided work or several candidates | 10–25 generations |
|
|
26
26
|
| `tiles` | Ground variations or connected structures | 10–25 generations |
|
|
27
|
-
| `terrain` | A two-terrain Wang tileset for elevation (grass-to-water, floor-to-cliff), or a sidescroller platform set | Sidescroller **3**, measured. Pro **15** at 32px, measured (a connected second set also billed 15). Pro 25 at 64px and standard
|
|
27
|
+
| `terrain` | A two-terrain Wang tileset for elevation (grass-to-water, floor-to-cliff), or a sidescroller platform set | Sidescroller **3**, measured. Pro **15** at 32px, measured (a connected second set also billed 15). Pro **25** at 64px and standard **3** measured too; standard plans at 4, the top of PixelLab's quoted 1–4 |
|
|
28
28
|
| `imagePro` | A larger or non-square background/scene, or real style transfer; takes the style `palette` as a hard constraint | **10–25 generations** by canvas (64px billed 10; a flat 40 before October 2026) |
|
|
29
29
|
| `character` | A character in 4 or 8 directions, its poses (`state`), its loops (`animation`), bust `portrait`s, and `outfit` transfers onto a loop | 1 per standard base, 6 per pro-flash base at 64px (1 from a `reference`), 20–40 per pose or portrait, 1 per template loop per direction (2–4 as `skeleton-v3`), 20 per outfit (measured once) |
|
|
30
30
|
| `objectPro` | A prop, creature, or vehicle that needs rotations, states, or loops but has no character rig | 6 per base at 64px (1 from a `reference`), **unmeasured**; assumed to match `character` pro-flash |
|
|
@@ -146,7 +146,8 @@ the next wave), PixelLab draws the shared terrain from its base tile, and
|
|
|
146
146
|
regenerating the other set makes this one stale. Sharing a terrain makes it
|
|
147
147
|
available, not blendable: two terrains with no set of their own between
|
|
148
148
|
them still meet with a hard (in PixelLab's map tool, black) edge, so plan a
|
|
149
|
-
set for every pair that touches.
|
|
149
|
+
set for every pair that touches. Connected sets share one style, and a style
|
|
150
|
+
fixes `terrainMode`, so a standard set cannot connect to a Pro one.
|
|
150
151
|
|
|
151
152
|
**Sidescroller sets.** `terrainOrientation: "sidescroller"` switches to
|
|
152
153
|
`/create-tileset-sidescroller`: a platform seen from the side. The prompt is
|
|
@@ -387,7 +388,11 @@ character with PixelLab's skeleton video model instead of redrawing each
|
|
|
387
388
|
frame: the steadiest template loop, 2 to 4 generations and 3 to 5 minutes
|
|
388
389
|
per direction (plan budgets 4), beta, Tier 1 plans and up. Prefer it over a
|
|
389
390
|
plain template loop when identity drift matters and the account qualifies;
|
|
390
|
-
plain `template` stays the 1-generation option.
|
|
391
|
+
plain `template` stays the 1-generation option. It needs a base with a
|
|
392
|
+
stored 3D skeleton: a `v3` base has one (measured, 3 generations); a
|
|
393
|
+
`standard` base has none, so PixelLab answers a bare 500 and pixelkiln
|
|
394
|
+
refuses the loop at `plan`/`validate`, pointing at `mode: "template"`. `pro`
|
|
395
|
+
and `pro-flash` bases are not refused but are unverified.
|
|
391
396
|
|
|
392
397
|
A named `template` loop (`walk`, `breathing-idle`, and similar) is trained
|
|
393
398
|
mostly on characters with empty hands, and reliably struggles once a
|