@pixelvibing/cli 0.50.0 → 0.52.0
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/dist/pixel-vibing-cli.js +2902 -1865
- package/package.json +1 -1
- package/skills/pixelvibing/SKILL.md +81 -10
- package/skills/pixelvibing-change/SKILL.md +59 -15
- package/skills/pixelvibing-concept-art/SKILL.md +2 -0
- package/skills/pixelvibing-creature/SKILL.md +4 -3
- package/skills/pixelvibing-icons/SKILL.md +2 -0
- package/skills/pixelvibing-object/SKILL.md +2 -0
- package/skills/pixelvibing-sound/SKILL.md +47 -0
- package/skills/pixelvibing-style-guide/SKILL.md +3 -0
- package/skills/pixelvibing-terrain/SKILL.md +61 -0
- package/skills/pixelvibing-ui/SKILL.md +2 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pixelvibing/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.52.0",
|
|
4
4
|
"description": "PixelVibing: pixel art game assets from the command line, and the Skills that teach coding assistants to make them.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://pixelvibing.com",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pixelvibing
|
|
3
|
-
description: Start here for this game's PixelVibing art — who is signed in, the style guide first, which Skill makes which kind of art, and listing, pulling, tagging, exporting and sealing what the platform made with pixel-vibing-cli or the PixelVibing MCP server. Use whenever the game needs art made, found, pulled into the project or taken into the engine.
|
|
3
|
+
description: Start here for this game's PixelVibing art — who is signed in, the style guide first, which Skill makes which kind of art, and listing, pulling, tagging, exporting and sealing what the platform made, following its jobs, and reading or changing the project, its art and its map, with pixel-vibing-cli or the PixelVibing MCP server. Use whenever the game needs art made, found, pulled into the project, fixed up or taken into the engine.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# PixelVibing art for this game
|
|
@@ -13,17 +13,22 @@ there is ever sent back: art enters the project only by being generated.
|
|
|
13
13
|
Two ways reach the platform, and they reach the same project:
|
|
14
14
|
- **The CLI**, `pixel-vibing-cli`. Every command takes `--json`, which prints its answer as
|
|
15
15
|
JSON on standard output. Progress and errors go to standard error, and a failure exits 1.
|
|
16
|
+
`pixel-vibing-cli --help` lists every command, and `pixel-vibing-cli <command> --help` every
|
|
17
|
+
option of one, with what each is for: read it before running a command you have not used,
|
|
18
|
+
and whenever a Skill does not name the option you need. Never guess an option.
|
|
16
19
|
- **The MCP server** `pixelvibing`, which `setup` configured in this harness. Its tools take
|
|
17
20
|
the platform project's id as `project`; `whoami` below names it.
|
|
18
21
|
|
|
19
22
|
## Before anything
|
|
20
23
|
|
|
21
24
|
1. `pixel-vibing-cli whoami --json` says who is signed in and which platform project
|
|
22
|
-
this folder generates for (the MCP server's `whoami` says the account alone).
|
|
23
|
-
|
|
25
|
+
this folder generates for (the MCP server's `whoami` says the account alone). A token
|
|
26
|
+
reaches one platform project, the one this folder is linked to; the MCP server's
|
|
27
|
+
`list_projects` names it.
|
|
28
|
+
- No token for this folder's project: ask the person to run `pixel-vibing-cli login` here.
|
|
24
29
|
- Never ask for a token, and never write one into a file or a command you show.
|
|
25
30
|
- No platform project: `pixel-vibing-cli link <project>`, or `link --idea "<what the
|
|
26
|
-
game is>"` to make one.
|
|
31
|
+
game is>"` to make one; both sign in through the browser and keep a token for it.
|
|
27
32
|
2. Read `pixelvibing/style-guide.md`, or run `pixel-vibing-cli guide show` (MCP:
|
|
28
33
|
`get_style_guide`), before deciding what to ask for. It says what the game is and how its
|
|
29
34
|
art looks, and every generation is held to it. Write instructions in its terms. The
|
|
@@ -40,10 +45,9 @@ Load the Skill for the kind before you generate it:
|
|
|
40
45
|
| reference art to draw the rest from, a look to hold to, or a level's area as pixel art | `pixelvibing-concept-art` |
|
|
41
46
|
| skill or item icons that match | `pixelvibing-icons` |
|
|
42
47
|
| a HUD, a menu, an inventory, a dialog box | `pixelvibing-ui` |
|
|
43
|
-
| another of a result, a change to it,
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
person makes those in the editor, `pixel-vibing-cli editor`, and you pull them as any asset.
|
|
48
|
+
| another of a result, a change to it, setting it in motion, a pose, turning it, a creature's state | `pixelvibing-change` |
|
|
49
|
+
| ground that joins everywhere, or ground that moves | `pixelvibing-terrain` |
|
|
50
|
+
| a sound effect, a line of speech, a piece of music | `pixelvibing-sound` |
|
|
47
51
|
|
|
48
52
|
## What every generation shares
|
|
49
53
|
|
|
@@ -57,8 +61,9 @@ person makes those in the editor, `pixel-vibing-cli editor`, and you pull them a
|
|
|
57
61
|
and the style guide before it draws. When you wrote the instruction in full yourself —
|
|
58
62
|
read the guide, looked at the references, know what the person wants — pass
|
|
59
63
|
`--no-enrich` (MCP: `enrich: false`) and it is drawn from your words as written. Leave it
|
|
60
|
-
on for a person's few words. It is an object's, a creature's, concept art's, an icon set's
|
|
61
|
-
or an
|
|
64
|
+
on for a person's few words. It is an object's, a creature's, concept art's, an icon set's,
|
|
65
|
+
an animation's, a pose's, a rotation's or an animated terrain set's: a variant, an edit, a
|
|
66
|
+
creature's state, a terrain set, a UI and a sound refuse it.
|
|
62
67
|
- **Following a job.** The CLI follows the job and pulls the asset when it is done. Over
|
|
63
68
|
MCP, `generate` answers the job's id: follow it with `get_job`, then
|
|
64
69
|
`pixel-vibing-cli pull <job id>` lands it in the folder.
|
|
@@ -100,6 +105,72 @@ MCP: `list_assets`, `get_asset` (its images, each with an address that downloads
|
|
|
100
105
|
- **Using the art.** Use the pictures where they are, or copy them into the game's own
|
|
101
106
|
asset folders. A copy is not tracked.
|
|
102
107
|
|
|
108
|
+
## Jobs
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
pixel-vibing-cli jobs [--kind <kind>]... [--all] --json
|
|
112
|
+
pixel-vibing-cli job show <id> --json
|
|
113
|
+
pixel-vibing-cli job cancel <id>
|
|
114
|
+
pixel-vibing-cli job redo <id> --yes
|
|
115
|
+
pixel-vibing-cli job rate <id> kept|redone|rejected [--reason "<why>"]
|
|
116
|
+
pixel-vibing-cli undelivered [--kind <kind>]... --json
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
MCP: `list_jobs`, `get_job`, `cancel_job`, `redo_job`, `rate_job`, `list_undelivered`.
|
|
120
|
+
|
|
121
|
+
- `jobs` lists the newest 50 of this project's jobs; `undelivered` the generations nothing in
|
|
122
|
+
the art came from yet, to pull or to drop.
|
|
123
|
+
- `job cancel` stops one that has not started, and what was held for it comes back.
|
|
124
|
+
- `job redo` asks a generation again from the same input with the style guide as it is now: it
|
|
125
|
+
uses the limit as a new one does, so say so first.
|
|
126
|
+
- `job rate` records what became of a result: `kept` when it is used, `redone` when it was
|
|
127
|
+
asked again, `rejected` when it is not wanted. Rate a result when the person says.
|
|
128
|
+
|
|
129
|
+
## The project, its art and its map
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
pixel-vibing-cli project show --json
|
|
133
|
+
pixel-vibing-cli project rename "<name>"
|
|
134
|
+
pixel-vibing-cli project settings [--view <camera>|none] [--outline <outline>] [--sprite-size <px>]
|
|
135
|
+
pixel-vibing-cli art show --json
|
|
136
|
+
pixel-vibing-cli map show --json
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
MCP: `get_project`, `rename_project`, `change_project_settings`, `list_style_guide_versions`,
|
|
140
|
+
`get_art`, `list_art_records`, `list_art_drafts`, `get_map`, `list_map_versions`,
|
|
141
|
+
`read_map_sectors`.
|
|
142
|
+
|
|
143
|
+
- **Settings** change every generation after; a project's tile size is fixed when it is made.
|
|
144
|
+
- **The art and the map are the editor's.** Their changes — `art land`, `art change`,
|
|
145
|
+
`art remove`, `art restore`, `art describe`, `art record`, `art tileset`, `art draft`,
|
|
146
|
+
`art reference`, `art provenance`, `map write`, `map size` (MCP: `land_art`, `change_art`,
|
|
147
|
+
`remove_art`, `restore_art`, `describe_art`, `keep_record`, `claim_tileset`, `keep_draft`,
|
|
148
|
+
`add_reference`, `append_provenance`, `write_map_sectors`, `resize_map`) — are the editor's
|
|
149
|
+
own operations, given as JSON with `--body`, each against the revision it read. Prefer
|
|
150
|
+
`pull` to land an asset and the editor to arrange the art; reach for these only when the
|
|
151
|
+
person asks for that exact change. Nothing is lost: a removal is kept as a draft that
|
|
152
|
+
`art restore` brings back, and every sector keeps its earlier versions. Nothing here deletes.
|
|
153
|
+
- **A stale change** changes nothing and says the current revision: read again, then send it
|
|
154
|
+
against that.
|
|
155
|
+
|
|
156
|
+
## Images
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
pixel-vibing-cli image upload <png> --json
|
|
160
|
+
pixel-vibing-cli image get <id> [--out <file>]
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
MCP: `upload_image` (a PNG as base64) and `get_image` (the image, and an address that downloads
|
|
164
|
+
it). An uploaded image is this project's, and its id is what `--source`, `--last`, the ground
|
|
165
|
+
pictures, `art land` and `art reference` take. A token reads only the images its project names:
|
|
166
|
+
its art's, its jobs', and the ones uploaded for it.
|
|
167
|
+
|
|
168
|
+
## Conversations
|
|
169
|
+
|
|
170
|
+
`pixel-vibing-cli threads --json` and `thread show <id>` (MCP: `list_assistant_threads`,
|
|
171
|
+
`get_assistant_thread`) read the platform assistant's conversations about this project, to see
|
|
172
|
+
what was decided there.
|
|
173
|
+
|
|
103
174
|
## Taking the art into the game
|
|
104
175
|
|
|
105
176
|
```bash
|
|
@@ -1,42 +1,86 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pixelvibing-change
|
|
3
|
-
description: Change art this game already has on PixelVibing — another of an object (a variant), an object or a creature changed as you say (an edit),
|
|
3
|
+
description: Change art this game already has on PixelVibing — another of an object (a variant), an object or a creature changed as you say (an edit), one set in motion (an animation) or drawn in a still pose (a pose), a creature turned to face every way (a rotation) or drawn in a state such as hurt or mid-walk, kept with its sprite — with pixel-vibing-cli or the PixelVibing MCP server, from a picture the platform keeps. Use when a result is close but not right, needs another like it, has to move, turn or take a pose.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Changing a result
|
|
7
7
|
|
|
8
8
|
Load the `pixelvibing` Skill first: who is signed in, the style guide, the limit.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
picture the account keeps, by its image id.
|
|
10
|
+
Every change is made from a picture the account keeps, by its image id.
|
|
12
11
|
|
|
13
12
|
## Finding the picture
|
|
14
13
|
|
|
15
|
-
`
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
`pixel-vibing-cli list --json` and `pixel-vibing-cli job show <id> --json` name assets and the
|
|
15
|
+
images they made; MCP: `get_asset` with the asset's id or name answers its `images`, each one's
|
|
16
|
+
`id` the picture to change. A sprite's own picture is among `parts` in
|
|
17
|
+
`pixel-vibing-cli motion show <sprite> --json` (MCP: `get_sprite_motion`). Never invent an image
|
|
18
|
+
id: use only one a command or a tool answered.
|
|
18
19
|
|
|
19
20
|
## The kinds
|
|
20
21
|
|
|
22
|
+
`pixel-vibing-cli generate --help` lists every option `generate` takes, with what each is for: read it for any option this Skill does not name, rather than guessing one.
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
pixel-vibing-cli generate variant --source <image id> --instruction "in autumn colours" --yes --json
|
|
26
|
+
pixel-vibing-cli generate edit --source <image id> --source-name knight --instruction "give it a red cape" --yes --json
|
|
27
|
+
pixel-vibing-cli generate animate --source <image id> --instruction "walks to the right" [--into outfit/fox --name walk-east] --yes --json
|
|
28
|
+
pixel-vibing-cli generate pose --source <image id> --instruction "mid-walk" [--into outfit/fox --name mid-walk --direction south] --yes --json
|
|
29
|
+
pixel-vibing-cli generate rotate --source <image id> --instruction "a knight in plate armour" [--into outfit/knight --views 4|8] --yes --json
|
|
30
|
+
pixel-vibing-cli generate state --source <image id> --state hurt [--directions 4|8] --instruction "a knight in plate armour" [--into outfit/knight] --yes --json
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
MCP, with `generate`:
|
|
34
|
+
|
|
21
35
|
```json
|
|
22
36
|
{ "project": "<id>", "kind": "variant", "source_image": "<image id>", "instruction": "in autumn colours", "max_percent": 40 }
|
|
23
37
|
{ "project": "<id>", "kind": "edit", "source_image": "<image id>", "source_name": "knight", "instruction": "give it a red cape", "max_percent": 40 }
|
|
38
|
+
{ "project": "<id>", "kind": "rotate", "source_image": "<image id>", "instruction": "a knight in plate armour", "max_percent": 40 }
|
|
24
39
|
{ "project": "<id>", "kind": "animate", "source_image": "<image id>", "instruction": "walks to the right", "enrich": false, "max_percent": 40 }
|
|
40
|
+
{ "project": "<id>", "kind": "pose", "source_image": "<image id>", "instruction": "mid-walk", "into": { "sprite": "outfit/fox", "name": "mid-walk", "direction": "south" }, "max_percent": 40 }
|
|
41
|
+
{ "project": "<id>", "kind": "creature-state", "source_image": "<image id>", "state": "hurt", "instruction": "a knight in plate armour", "max_percent": 60 }
|
|
25
42
|
```
|
|
26
43
|
|
|
27
44
|
- **`variant`** draws another of an object, keeping what makes it that object; the
|
|
28
|
-
instruction says what differs.
|
|
45
|
+
instruction says what differs. Up to 3 `--reference` PNGs.
|
|
29
46
|
- **`edit`** changes an object or a creature as the instruction says, and only that.
|
|
30
|
-
`
|
|
47
|
+
`--source-name` is what the picture is called, so the instruction can name it.
|
|
31
48
|
- **`animate`** sets an object or a creature in motion. The instruction is the motion, from
|
|
32
49
|
its first frame to its last: what moves, how far, and how it returns. It takes no
|
|
33
|
-
reference; the platform chooses how many frames.
|
|
34
|
-
|
|
50
|
+
reference; the platform chooses how many frames. `--last <image id>` (MCP: `last_image`)
|
|
51
|
+
ends it on a frame of your own. Pass `--no-enrich` (`enrich: false`) when
|
|
52
|
+
the motion is written in full; leave it on for a person's few words.
|
|
53
|
+
- **`pose`** draws an object or a creature in a still pose. The instruction is the pose: a
|
|
54
|
+
label such as `mid-walk`, or what changes in a few words. It takes no reference.
|
|
55
|
+
- **`rotate`** turns a creature standing into the directions it faces. The instruction says
|
|
56
|
+
what it is, so each side is drawn as the same creature.
|
|
57
|
+
- **`state`** (MCP: `creature-state`) draws a creature in a state past standing — mid-walk,
|
|
58
|
+
mid-run, mid-attack, jump, crouch, hurt, death — in 4 directions, or 8.
|
|
59
|
+
|
|
60
|
+
## A sprite's motion
|
|
61
|
+
|
|
62
|
+
A sprite keeps its motion with it, in three groups, each piece at an address:
|
|
63
|
+
|
|
64
|
+
| Group | What it is | Address |
|
|
65
|
+
|---|---|---|
|
|
66
|
+
| views | one picture a direction | `<sprite> › view › <direction>` |
|
|
67
|
+
| poses | a still picture under a label, in a direction or more | `<sprite> › pose:<label> › <direction>` |
|
|
68
|
+
| animations | a named list of frames | `<sprite> › animation:<name>` |
|
|
35
69
|
|
|
36
|
-
`
|
|
37
|
-
|
|
70
|
+
`pixel-vibing-cli motion show <sprite> --json` (MCP: `get_sprite_motion`) answers all three,
|
|
71
|
+
each picture by its image id. Give an animation or a pose `--into <sprite> --name <name>`
|
|
72
|
+
(MCP: `into`) and it is kept with the sprite as the job finishes; the name is kebab-case, a
|
|
73
|
+
creature's animation one the game plays, such as `walk-south`; a pose faces south unless a
|
|
74
|
+
direction is given. A rotation kept with its sprite becomes its views (`--views 4|8`), and a
|
|
75
|
+
creature's state its poses under the state's name. An animation kept with its sprite takes how
|
|
76
|
+
long each frame is shown (`--frame-ms`, MCP `into.frame_ms`) and how the game plays it
|
|
77
|
+
(`--play loop|every|change`, MCP `into.play`). Drawn again at the same address, the new one
|
|
78
|
+
takes the address and the old one is still kept. One that finished without being kept is kept later with
|
|
79
|
+
`pixel-vibing-cli motion keep <job id>` (MCP: `keep_motion`).
|
|
38
80
|
|
|
39
|
-
##
|
|
81
|
+
## After
|
|
40
82
|
|
|
41
|
-
|
|
42
|
-
|
|
83
|
+
The CLI follows the job. A variant, an edit, a rotation, a state, or an animation or a pose not
|
|
84
|
+
kept with its sprite is pulled into the folder: an animation lands as `<name>/<n>`, one picture
|
|
85
|
+
a frame, and an export packs its frames as an animation. Over MCP, `get_job` follows the job and
|
|
86
|
+
`pixel-vibing-cli pull <job id>` lands it.
|
|
@@ -13,6 +13,8 @@ reference to what follows.
|
|
|
13
13
|
|
|
14
14
|
## With the CLI
|
|
15
15
|
|
|
16
|
+
`pixel-vibing-cli generate --help` lists every option `generate` takes, with what each is for: read it for any option this Skill does not name, rather than guessing one.
|
|
17
|
+
|
|
16
18
|
```bash
|
|
17
19
|
pixel-vibing-cli generate concept-art --instruction "<the picture>" [--size <w>x<h>] [--transparent] [--tag <tag>]... [--reference <png>]... [--no-enrich] --yes --json
|
|
18
20
|
pixel-vibing-cli generate concept-art --instruction "<the area>" --pixel-art --tiles <cols>x<rows> [--no-enrich] --yes --json
|
|
@@ -9,6 +9,8 @@ Load the `pixelvibing` Skill first: who is signed in, the style guide, the limit
|
|
|
9
9
|
|
|
10
10
|
## With the CLI
|
|
11
11
|
|
|
12
|
+
`pixel-vibing-cli generate --help` lists every option `generate` takes, with what each is for: read it for any option this Skill does not name, rather than guessing one.
|
|
13
|
+
|
|
12
14
|
```bash
|
|
13
15
|
pixel-vibing-cli generate creature --instruction "<who>" [--reference <png>]... [--no-enrich] --yes --json
|
|
14
16
|
```
|
|
@@ -39,6 +41,5 @@ pixel-vibing-cli generate creature --instruction "<who>" [--reference <png>]...
|
|
|
39
41
|
## After
|
|
40
42
|
|
|
41
43
|
- It lands as `pixelvibing/out/<name>.png`.
|
|
42
|
-
- A change to it,
|
|
43
|
-
|
|
44
|
-
`pixel-vibing-cli editor`.
|
|
44
|
+
- A change to it, a walk, an attack, an idle, its directions or its states (hurt, dead,
|
|
45
|
+
attacking): the `pixelvibing-change` Skill.
|
|
@@ -9,6 +9,8 @@ Load the `pixelvibing` Skill first: who is signed in, the style guide, the limit
|
|
|
9
9
|
|
|
10
10
|
## With the CLI
|
|
11
11
|
|
|
12
|
+
`pixel-vibing-cli generate --help` lists every option `generate` takes, with what each is for: read it for any option this Skill does not name, rather than guessing one.
|
|
13
|
+
|
|
12
14
|
```bash
|
|
13
15
|
pixel-vibing-cli generate icons --names "<name>,<name>,..." --purpose <skill|item> [--size <16|32|64>] [--instruction "<theme>"] [--no-enrich] --yes --json
|
|
14
16
|
```
|
|
@@ -9,6 +9,8 @@ Load the `pixelvibing` Skill first: who is signed in, the style guide, the limit
|
|
|
9
9
|
|
|
10
10
|
## With the CLI
|
|
11
11
|
|
|
12
|
+
`pixel-vibing-cli generate --help` lists every option `generate` takes, with what each is for: read it for any option this Skill does not name, rather than guessing one.
|
|
13
|
+
|
|
12
14
|
```bash
|
|
13
15
|
pixel-vibing-cli generate object --instruction "<what>" --size <cols>x<rows> [--reference <png>]... [--no-enrich] --yes --json
|
|
14
16
|
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pixelvibing-sound
|
|
3
|
+
description: Generate sounds for this game on PixelVibing — a sound effect such as a coin picked up or a door creaking, a line of speech in a voice, or a piece of music — with pixel-vibing-cli or the PixelVibing MCP server, written as MP3 files. Use when the game needs audio.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Sound
|
|
7
|
+
|
|
8
|
+
Load the `pixelvibing` Skill first: who is signed in, the limit.
|
|
9
|
+
|
|
10
|
+
## With the CLI
|
|
11
|
+
|
|
12
|
+
`pixel-vibing-cli generate --help` lists every option `generate` takes, with what each is for: read it for any option this Skill does not name, rather than guessing one.
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pixel-vibing-cli generate sfx --instruction "<what it sounds like>" [--seconds <s>] [--loop] [--out <file>] --yes --json
|
|
16
|
+
pixel-vibing-cli generate speech --text "<what is said>" --voice <voice> [--out <file>] --yes --json
|
|
17
|
+
pixel-vibing-cli generate music --instruction "<the piece>" [--out <file>] --yes --json
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Each writes its sound as an MP3 into `pixelvibing/sounds/`, or to the file `--out` names, once
|
|
21
|
+
its job is done. `pixel-vibing-cli generate --help` lists the voices.
|
|
22
|
+
|
|
23
|
+
## With the MCP server
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{ "project": "<id>", "kind": "sfx", "description": "a coin picked up, bright and short", "seconds": 1, "max_percent": 30 }
|
|
27
|
+
{ "project": "<id>", "kind": "speech", "text": "Welcome aboard, traveller.", "voice": "<voice>", "max_percent": 30 }
|
|
28
|
+
{ "project": "<id>", "kind": "music", "description": "a calm harbour theme on strings", "max_percent": 30 }
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
with the tool `generate_sound`. `get_job` follows the job and, once done, names its `sounds`;
|
|
32
|
+
`get_sound` answers one as MP3 audio.
|
|
33
|
+
|
|
34
|
+
## Writing it
|
|
35
|
+
|
|
36
|
+
- **A sound effect.** What makes the sound and how it feels: "a wooden door creaking open,
|
|
37
|
+
slow", "a coin picked up, bright and short". `--seconds` sets its length; `--loop` makes it
|
|
38
|
+
loop seamlessly, for rain, wind or an engine.
|
|
39
|
+
- **Speech.** The words exactly as they are said, in a voice. Keep a line short; one line a
|
|
40
|
+
generation.
|
|
41
|
+
- **Music.** The mood, the instruments and the tempo: "a calm harbour theme on strings and a
|
|
42
|
+
soft accordion".
|
|
43
|
+
- **Original sound.** Never another game's music or theme, and never a real person's voice:
|
|
44
|
+
when the person names one, make original sound in its spirit and say so.
|
|
45
|
+
- **Where it goes.** The game loads the MP3 from where it was written; copy it into the game's
|
|
46
|
+
own audio folder when that is where the engine looks. Sounds are not part of the map, the
|
|
47
|
+
export or the sealed container.
|
|
@@ -11,6 +11,9 @@ and shading, its scale in pixels, and what never belongs in it. Every generation
|
|
|
11
11
|
platform makes for this project is held to it, so a guide that no longer describes the
|
|
12
12
|
game makes art that no longer fits it.
|
|
13
13
|
|
|
14
|
+
`pixel-vibing-cli guide <show|pull|push|revise|versions> --help` lists every option of each: read it for any option
|
|
15
|
+
this Skill does not name.
|
|
16
|
+
|
|
14
17
|
## When to change it
|
|
15
18
|
|
|
16
19
|
- The game gains a place, a biome, a faction, an era, or a kind of thing it did not have.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pixelvibing-terrain
|
|
3
|
+
description: Generate a terrain set for this game on PixelVibing — sixteen tiles where one ground meets another, such as grass over water — and set a terrain set in motion, such as water rippling or lava flowing, with pixel-vibing-cli or the PixelVibing MCP server. Use when the game's map needs ground that joins everywhere, or ground that moves.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Terrain
|
|
7
|
+
|
|
8
|
+
Load the `pixelvibing` Skill first: who is signed in, the style guide, the limit.
|
|
9
|
+
|
|
10
|
+
A terrain set is sixteen tiles where an upper ground meets a lower one, every way their
|
|
11
|
+
corners can meet, so the editor's brush paints the two together and every edge joins.
|
|
12
|
+
|
|
13
|
+
## A terrain set
|
|
14
|
+
|
|
15
|
+
`pixel-vibing-cli generate --help` lists every option `generate` takes, with what each is for: read it for any option this Skill does not name, rather than guessing one.
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pixel-vibing-cli generate terrain --upper grass --lower water --instruction "<how they look and meet>" \
|
|
19
|
+
[--upper-image <png> --lower-image <png>] [--role style|source|variant] [--cells 32|64] \
|
|
20
|
+
[--elevation 0-3] [--spread <0.1-0.7>] [--raggedness <0-1>] [--seed <n>] --yes --json
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
MCP:
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{ "project": "<id>", "upper": "grass", "lower": "water", "instruction": "a soft sandy shore", "max_percent": 40 }
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
with the tool `generate_terrain`; `upper_image` and `lower_image` are images of the account's,
|
|
30
|
+
both or neither.
|
|
31
|
+
|
|
32
|
+
- **The grounds.** Name each in a word or two, as the style guide would. The upper ground is the
|
|
33
|
+
one that sits on top where they meet: grass over dirt, snow over rock, dirt over water.
|
|
34
|
+
- **The instruction.** How the two look and how the edge between them looks: a sandy shore, a
|
|
35
|
+
sharp cliff, scattered pebbles. Use the style guide's words; never restate its camera.
|
|
36
|
+
- **Pictures of the grounds.** Give both when the game already has the look, such as tiles
|
|
37
|
+
from a concept art; the set is drawn from them.
|
|
38
|
+
- **Landing it.** A terrain set is landed from the editor's Library, which cuts it into the
|
|
39
|
+
cells its brush paints: tell the person to open it there, `pixel-vibing-cli editor`. `pull`
|
|
40
|
+
lands nothing for a terrain set.
|
|
41
|
+
|
|
42
|
+
## Setting one in motion
|
|
43
|
+
|
|
44
|
+
One ground moves in a seamless loop while the other stays still: water rippling against a
|
|
45
|
+
shore, lava churning beside rock.
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
pixel-vibing-cli generate terrain-animation --terrain <asset id or name> [--instruction "<how it moves>"] --yes --json
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
MCP: `animate_terrain` with the terrain set's asset id or name as `terrain`, and `motion`.
|
|
52
|
+
|
|
53
|
+
- **Which set.** One the project keeps, from `generate terrain`: `pixel-vibing-cli list terrain
|
|
54
|
+
--json` (MCP: `list_assets` with kind `terrain`) names them.
|
|
55
|
+
- **The motion.** A few words, or none: the platform chooses which ground moves and how, from
|
|
56
|
+
the grounds' names. Say it when the person wants a particular motion, such as slow waves.
|
|
57
|
+
- **After.** The editor writes the frames back onto the set when the person opens it.
|
|
58
|
+
|
|
59
|
+
## Following it
|
|
60
|
+
|
|
61
|
+
The CLI follows the job and says where it is done. Over MCP, `get_job` follows it.
|
|
@@ -13,6 +13,8 @@ and `references/ui.example.json` is a whole HUD laid out.
|
|
|
13
13
|
|
|
14
14
|
## With the CLI
|
|
15
15
|
|
|
16
|
+
`pixel-vibing-cli generate --help` lists every option `generate` takes, with what each is for: read it for any option this Skill does not name, rather than guessing one.
|
|
17
|
+
|
|
16
18
|
```bash
|
|
17
19
|
pixel-vibing-cli generate ui --sketch <file.json> --instruction "<the set, in a line>" [--reference <png>]... --yes --json
|
|
18
20
|
```
|