@genex-ai/cli-demo 1.8.1-dev.497 → 1.8.1-dev.499
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/index.js
CHANGED
|
@@ -20292,6 +20292,12 @@ ${c.bold("Usage")}
|
|
|
20292
20292
|
refusal. "test <id>" gives you a free copy of
|
|
20293
20293
|
your own item: you can't buy from your own game,
|
|
20294
20294
|
so this is how you check the shop works.
|
|
20295
|
+
--icon <url> is the item's square art, shown in
|
|
20296
|
+
the shop and on the resale market \u2014 generate it
|
|
20297
|
+
from the item's real in-game look with
|
|
20298
|
+
"genex image ... --edit <reference>" and pass the
|
|
20299
|
+
printed URL. An icon-less item renders as a
|
|
20300
|
+
placeholder tile everywhere it is sold.
|
|
20295
20301
|
--resellable lets players resell the item to each
|
|
20296
20302
|
other on the market; durable items only, off by
|
|
20297
20303
|
default, and --no-resellable turns it back off.
|
|
@@ -20545,8 +20551,9 @@ ${c.bold("Examples")}
|
|
|
20545
20551
|
genex domain add play.mygame.com
|
|
20546
20552
|
genex domain list
|
|
20547
20553
|
genex shop list
|
|
20548
|
-
genex shop add "Iron Key" --price 100 --type durable --resellable
|
|
20554
|
+
genex shop add "Iron Key" --price 100 --type durable --resellable --icon https://assets.genex.technology/generations/abc123/image-main
|
|
20549
20555
|
genex shop set sku_123 --price 200
|
|
20556
|
+
genex shop set sku_123 --icon https://assets.genex.technology/generations/abc123/image-main
|
|
20550
20557
|
genex shop test sku_123
|
|
20551
20558
|
genex shop remove sku_123
|
|
20552
20559
|
genex publish --no-push --title "My Game"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genex-ai/cli-demo",
|
|
3
|
-
"version": "1.8.1-dev.
|
|
3
|
+
"version": "1.8.1-dev.499",
|
|
4
4
|
"description": "Set up your project's agent workspace (.claude/.codex/.cursor in the game folder), authorize, create a game project, generate AI assets, and publish (genex CLI).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -135,6 +135,54 @@ to spend. Pick the nearest grid price rather than working around it.
|
|
|
135
135
|
Record the ids in `DESIGN.md` next to what each item does. They are the one
|
|
136
136
|
thing the game's code cannot regenerate for itself.
|
|
137
137
|
|
|
138
|
+
## Item art
|
|
139
|
+
|
|
140
|
+
**Every item ships with a picture.** `--icon` is optional to the command and not
|
|
141
|
+
optional to the product: a SKU with no icon renders as a coloured plate with a
|
|
142
|
+
generic box on it, in your shop and on the platform's resale market, where it
|
|
143
|
+
sits next to other games' items that do have art.
|
|
144
|
+
|
|
145
|
+
**It has to be the item.** Not "a fantasy key" — *this* key, the one the player
|
|
146
|
+
just picked up, in this game's light and this game's palette. An icon that shows
|
|
147
|
+
a different object than the world does is worse than the plate, because the
|
|
148
|
+
plate at least does not claim anything.
|
|
149
|
+
|
|
150
|
+
So if the item exists as an asset — a generated model, a sprite, a texture —
|
|
151
|
+
generate the art FROM it. Point the camera at the model in the game, or use the
|
|
152
|
+
asset image, and feed that frame in as the reference:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
# 1. capture the real item -> ./iron-key-ref.png (crop it SQUARE, see below)
|
|
156
|
+
npx genex image "shop item art of the exact object in the reference image: an ornate iron key, centred, lit from above with a soft rim light, on a clean dark backdrop, no text, no watermark, no interface" \
|
|
157
|
+
--edit ./iron-key-ref.png --quality high
|
|
158
|
+
# -> https://assets.genex.technology/generations/<id>/image-main
|
|
159
|
+
|
|
160
|
+
# 2. attach it
|
|
161
|
+
npx genex shop add "Iron Key" --price 100 --type durable --icon <that url>
|
|
162
|
+
npx genex shop set sku_a1b2c3 --icon <that url> # or fix one later
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
`--edit` takes a **local file** (≤ 4 MB) as well as an asset URL, so a screenshot
|
|
166
|
+
goes straight in. Two things about that lane:
|
|
167
|
+
|
|
168
|
+
- **It keeps the reference's shape**, so `--aspect` does nothing here — crop the
|
|
169
|
+
reference square before you pass it, or you will get a wide icon in a square
|
|
170
|
+
cell.
|
|
171
|
+
- It is a different model from the plain text lane, and a better one for this
|
|
172
|
+
job, because the reference is what makes the picture the item and not a
|
|
173
|
+
picture of the idea.
|
|
174
|
+
|
|
175
|
+
No asset yet? Same prompt without `--edit`, anchored on the item's name and on
|
|
176
|
+
**the game's own vibe words** — take them from `DESIGN.md` rather than inventing
|
|
177
|
+
a style, and generate the whole shop in one sitting with the same style clause
|
|
178
|
+
so the shelf reads as one set.
|
|
179
|
+
|
|
180
|
+
Prompt shape, and every clause earns its place: one object, centred, on a clean
|
|
181
|
+
simple backdrop, lit the way the game lights things, closing with *no text, no
|
|
182
|
+
watermark, no interface*. Say what you want, never what you don't — an image
|
|
183
|
+
model reads "no swords" as "swords", so a ban only works when the thing is
|
|
184
|
+
absent from the prompt entirely.
|
|
185
|
+
|
|
138
186
|
## The API
|
|
139
187
|
|
|
140
188
|
From `@genex-ai/embed-sdk`, already installed. `initEmbed()` must have run.
|
|
@@ -36,15 +36,18 @@ calling multiplayer done, run the mandatory
|
|
|
36
36
|
## Install
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
|
-
npm i @genex-ai/multiplayer@^0.
|
|
39
|
+
npm i @genex-ai/multiplayer@^0.16.0
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
> Pin `@^0.
|
|
43
|
-
>
|
|
44
|
-
>
|
|
45
|
-
>
|
|
46
|
-
>
|
|
47
|
-
>
|
|
42
|
+
> Pin `@^0.16.0` (not a bare `npm i`, and not an older range): automatic TURN — the thing that
|
|
43
|
+
> lets players behind symmetric NAT or carrier CGNAT be heard at all — landed in 0.16, mesh voice
|
|
44
|
+
> in 0.15, room text chat in 0.14, host-only `setRoomOpen()` in 0.13; cross-region invites can
|
|
45
|
+
> select the inviter's exact relay with the optional `url` override since 0.11; unowned object
|
|
46
|
+
> writes warn instead of failing silently, live connected-player presence, supplier-form
|
|
47
|
+
> `connect()` auth and regional relay selection (`getColyseusUrls()` + `urls`) landed in 0.10;
|
|
48
|
+
> confirmed object controls, snaps, host-tick teardown, and reconnect rebasing in 0.9. An older
|
|
49
|
+
> resolve does not have those — and because this package is still `0.x`, a caret range is
|
|
50
|
+
> minor-locked, so `^0.12.0` would resolve to 0.12.x and give you no voice at all.
|
|
48
51
|
|
|
49
52
|
This skill targets `@genex-ai/multiplayer` **≥ 0.16.0** (`objects`/`host` since 0.4; verified per-player `avatarUrl` since 0.12;
|
|
50
53
|
room text chat via `room.chat` since 0.14; mesh voice via `room.voice` since 0.15;
|
|
@@ -1021,7 +1024,7 @@ host-driven saving works as long as ANY account is in the room.
|
|
|
1021
1024
|
|
|
1022
1025
|
## Checklist
|
|
1023
1026
|
|
|
1024
|
-
- [ ] `npm i @genex-ai/multiplayer@^0.
|
|
1027
|
+
- [ ] `npm i @genex-ai/multiplayer@^0.16.0` (automatic TURN, mesh voice, room text chat, connected presence, supplier auth, confirmed controls, snap epochs, reconnect-safe host ticks, unowned-write warnings, cross-region exact-relay overrides); config wired into the build.
|
|
1025
1028
|
- [ ] The plan names one net model, the player-experience reason, start/quorum, late-join/backfill,
|
|
1026
1029
|
and below-quorum/end behavior. The agent inferred it unless the experience was genuinely ambiguous.
|
|
1027
1030
|
- [ ] `reconnecting`/`reconnected`/`disconnect` render an overlay (don't tear the scene down).
|