@genex-ai/cli-demo 0.48.0-dev.75 → 0.48.0-dev.78
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/package.json +1 -1
- package/templates/skills/genex-ai-hud/SKILL.md +17 -11
- package/templates/skills/genex-ai-menu/SKILL.md +10 -8
- package/templates/skills/genex-threejs-game-ui/SKILL.md +55 -20
- package/templates/skills/genex-threejs-skill-router/SKILL.md +17 -6
- package/templates/skills/genex-threejs-skill-router/references/routing-map.md +57 -12
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: genex-ai-hud
|
|
3
|
-
description: Generate a production HUD sprite set — matched frames, masks, and icons in one coherent art style — via the mockup-then-deconstruct pipeline (`npx genex image` + `npx genex ui`), then wire it as a DOM overlay with channel-accurate masked fills. Use
|
|
3
|
+
description: Generate a production HUD sprite set — matched frames, masks, and icons in one coherent art style — via the mockup-then-deconstruct pipeline (`npx genex image` + `npx genex ui`), then wire it as a DOM overlay with channel-accurate masked fills. Use for EVERY game, kicked off at `genex-threejs-game-ui`'s "Plan the UI first" gate: the sprite HUD is the production HUD of a Genex game; hand-written CSS is only the placeholder while the sprites render.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Genex AI · HUD
|
|
@@ -11,16 +11,22 @@ with masked fills that track the art's real channels. The result is an
|
|
|
11
11
|
art-directed HUD (etched steel ammo strip, parchment HP bar, chrome minimap
|
|
12
12
|
ring) that no hand-written CSS can fake.
|
|
13
13
|
|
|
14
|
-
##
|
|
15
|
-
|
|
16
|
-
- **
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
14
|
+
## This is the default HUD — hand-coded CSS is the placeholder
|
|
15
|
+
|
|
16
|
+
- **Every game runs this pipeline.** Kick the Stage-1 mockup off at
|
|
17
|
+
`$genex-threejs-game-ui`'s "Plan the UI first" gate (`--no-wait`) and build
|
|
18
|
+
against that skill's plain-CSS placeholder while it renders — that skill
|
|
19
|
+
also owns the overlay architecture this one plugs into. The game is not
|
|
20
|
+
done until the sprites have landed and been wired in.
|
|
21
|
+
- The art direction comes from the shared style brief — gothic filigree
|
|
22
|
+
frames, rusted post-apocalyptic panels, carbon-fiber racing telemetry,
|
|
23
|
+
hand-painted storybook plates, or a restrained modern register for a clean
|
|
24
|
+
concept; restrained still means built from the generated set. ~10 image
|
|
25
|
+
generations is the normal price of a production HUD, not a premium to
|
|
26
|
+
justify.
|
|
27
|
+
- **The only exit:** the user explicitly declines the generated HUD — then
|
|
28
|
+
the CSS placeholder, finished to `$genex-threejs-game-ui`'s Tier-1 floor,
|
|
29
|
+
ships as the HUD.
|
|
24
30
|
|
|
25
31
|
## Framing rules — internalize before prompting
|
|
26
32
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: genex-ai-menu
|
|
3
|
-
description: Generate a cinematic game menu — one looping atmospheric video background plus animated DOM buttons — with `npx genex image` + `npx genex video --frame`. Use for main
|
|
3
|
+
description: Generate a cinematic game menu — one looping atmospheric video background plus animated DOM buttons — with `npx genex image` + `npx genex video --frame`. Use for the main menu of every game (the default tier per `genex-threejs-game-ui`'s plan gate, enqueued there with `--no-wait`; declining it needs a stated reason) and for title, victory/defeat, lobby, and credits screens that should feel like the game's opening shot; plain CSS panels are only for utilitarian overlays like pause and settings.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Genex AI · Menu
|
|
@@ -12,14 +12,16 @@ real game events.
|
|
|
12
12
|
|
|
13
13
|
## When to use this vs. a plain CSS menu
|
|
14
14
|
|
|
15
|
-
- **Use this skill**
|
|
16
|
-
a title screen with weather and light, a defeat screen
|
|
17
|
-
a lobby with the arena breathing in the background.
|
|
15
|
+
- **Use this skill** for the main menu of every game — it should feel like the
|
|
16
|
+
game's opening shot: a title screen with weather and light, a defeat screen
|
|
17
|
+
over smoldering ruins, a lobby with the arena breathing in the background.
|
|
18
|
+
Enqueue it at `$genex-threejs-game-ui`'s plan gate with `--no-wait`.
|
|
18
19
|
- **Use plain CSS** (`$genex-threejs-game-ui` alone) for utilitarian screens —
|
|
19
|
-
a quick pause overlay
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
a quick pause overlay or a settings list. A dark translucent panel is often
|
|
21
|
+
more readable there. (The loader is NOT utilitarian: it keeps its branded
|
|
22
|
+
key-art background per the game-ui spec — "plain CSS" never means a bare
|
|
23
|
+
loading bar.) You can also get the best of both: reuse this skill's menu
|
|
24
|
+
video under a darker overlay for pause/victory variants (see Tips).
|
|
23
25
|
|
|
24
26
|
## Style brief first
|
|
25
27
|
|
|
@@ -23,19 +23,21 @@ in another.
|
|
|
23
23
|
| Screen | When it exists | Default tier |
|
|
24
24
|
| --- | --- | --- |
|
|
25
25
|
| Loader | always | 1 — branded (see loader spec below) |
|
|
26
|
-
| Main menu | always for a game
|
|
27
|
-
| Pause | always | 1 — menu backdrop under a dark overlay |
|
|
26
|
+
| Main menu | always — the decision defaults to YES for every game; a "no" needs a one-line game-type reason (e.g. an instant-restart arcade toy), and "it's only a draft" is never a reason | 2 — cinematic (`$genex-ai-menu`) |
|
|
27
|
+
| Pause | always — opens on the Escape key | 1 — menu backdrop under a dark overlay |
|
|
28
28
|
| Fail / retry | always | 1 — a *graded* variant of the menu screen |
|
|
29
29
|
| Win / next | always | 1 — graded variant, warm |
|
|
30
30
|
| Settings | when there is anything to set | 1 |
|
|
31
31
|
| Lobby / waiting | multiplayer only | 1 over the menu backdrop |
|
|
32
|
-
| HUD | always |
|
|
32
|
+
| HUD | always | 2 — generated sprite HUD (`$genex-ai-hud`), enqueued at this gate for EVERY game; plain CSS is the placeholder until the sprites land, never the final HUD |
|
|
33
33
|
|
|
34
34
|
The lobby row is bound by `$genex-threejs-multiplayer`'s MANDATORY rule: the
|
|
35
35
|
waiting overlay's visibility is re-read from `mm.matchmaking.status` every
|
|
36
36
|
frame and closes the instant it flips to `playing` — verified in two browser
|
|
37
37
|
windows. Plan the lobby as a styled screen (roster + count over the menu
|
|
38
|
-
backdrop), not an afterthought `<div>`.
|
|
38
|
+
backdrop), not an afterthought `<div>`. When the menu decision is a reasoned
|
|
39
|
+
"no", every "menu backdrop" row above (pause, fail, win, lobby) grades over
|
|
40
|
+
the loader's key art instead.
|
|
39
41
|
|
|
40
42
|
**2. One shared style brief — for the WHOLE game, not just the UI.** Write it
|
|
41
43
|
once — 4–5 named hues, materials, one display + one body font, mood — and
|
|
@@ -44,12 +46,18 @@ store it as a comment block near the UI code. `$genex-ai-menu`,
|
|
|
44
46
|
verbatim — and so does the scene: the visual-direction plan (the router's
|
|
45
47
|
next gate) derives its lighting mood, fog, grading, and post-stack choices
|
|
46
48
|
from the same block. Two style briefs in one game is a bug; a scene graded in
|
|
47
|
-
one world under a UI styled in another is the same bug.
|
|
49
|
+
one world under a UI styled in another is the same bug. The brief's font pair
|
|
50
|
+
is LOADED for real — a Google Fonts `<link>` (or `@font-face`) in
|
|
51
|
+
`index.html`, per `$genex-ai-menu`'s genre font table; a display font that
|
|
52
|
+
ships as a system-stack fallback (`Arial Black`, `Impact`) is the same bug in
|
|
53
|
+
type.
|
|
48
54
|
|
|
49
|
-
**3. Name your references.** Pick the closest capsule in
|
|
55
|
+
**3. Name your references — AAA, by name.** Pick the closest capsule in
|
|
50
56
|
[references/style-capsules.md](references/style-capsules.md), name 2–3 top
|
|
51
|
-
games of the genre, and state in one line which structural conventions
|
|
52
|
-
borrowing.
|
|
57
|
+
AAA games of the genre, and state in one line which structural conventions
|
|
58
|
+
you're borrowing. The bar is what those games ship, not "good enough for a
|
|
59
|
+
demo". Conventions only — never logos, exact layouts, or trade dress. The
|
|
60
|
+
same 2–3 names carry into the router's visual-direction gate for the scene.
|
|
53
61
|
|
|
54
62
|
**4. Ask only when genuinely ambiguous.** If the concept pins the mood (a
|
|
55
63
|
"gothic horror dungeon crawler" pins it), decide and state the plan in one
|
|
@@ -62,16 +70,32 @@ it derives from the game type.
|
|
|
62
70
|
are examples, not defaults. Do not default to neon/cyberpunk/synthwave — or
|
|
63
71
|
any other single register — unless the concept calls for it.
|
|
64
72
|
|
|
73
|
+
**6. Close the gate out loud — plan + queued generations.** The gate's output
|
|
74
|
+
is one short visible message in chat: the screen list with tiers, the style
|
|
75
|
+
brief (hues + font pair), the named references, and the generation IDs of the
|
|
76
|
+
Tier-2 jobs just enqueued — the `$genex-ai-hud` Stage-1 mockup (every game)
|
|
77
|
+
and the `$genex-ai-menu` video (when the menu decision is yes). No visible
|
|
78
|
+
plan or no queued IDs means the gate did not run — go back and run it.
|
|
79
|
+
|
|
65
80
|
## The tier ladder
|
|
66
81
|
|
|
67
82
|
- **Tier 1 — instant baseline, every game.** Everything in this skill: planned
|
|
68
83
|
screens, shared brief, branded loader, animated CSS menu with keyboard
|
|
69
84
|
navigation, phase transitions, UI sounds, vignette. Zero generations — the
|
|
70
85
|
game is playable immediately.
|
|
71
|
-
- **Tier 2 —
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
86
|
+
- **Tier 2 — the production UI, generated, async — mandatory, not an upsell.**
|
|
87
|
+
The sprite HUD (`$genex-ai-hud`) for EVERY game, and the cinematic menu
|
|
88
|
+
video (`$genex-ai-menu`) whenever the menu decision is yes (the default for
|
|
89
|
+
every game). Enqueue BOTH at the plan gate with `--no-wait`,
|
|
90
|
+
keep building, pick results up with `npx genex wait <id>`, swap them in as
|
|
91
|
+
they land. **Tier 2 must never block a playable v0 — but the game is NOT
|
|
92
|
+
DONE until its Tier-2 assets have landed and been wired in** (the only
|
|
93
|
+
exit: the user explicitly declines them — on their own initiative; never
|
|
94
|
+
solicit the decline by presenting these as optional, slow, or costly).
|
|
95
|
+
Run `npx genex wait` on every enqueued ID before any publish and before
|
|
96
|
+
the final handoff of a session — never park landed assets for "later".
|
|
97
|
+
Shipping the placeholder CSS HUD as the final HUD is a failure, not a
|
|
98
|
+
tier choice.
|
|
75
99
|
- **Tier 3 — offer, don't build.** Video layers over the HUD, 9-slice panel
|
|
76
100
|
sprites, a generated logotype, animated menu sprites. Offer in one line
|
|
77
101
|
after the player has seen Tier 1+2 working; build on request.
|
|
@@ -111,9 +135,11 @@ edits scattered through the code:
|
|
|
111
135
|
1. **Loading** — the branded loader below; players must never stare at a black
|
|
112
136
|
screen or a bare percentage.
|
|
113
137
|
2. **Playing HUD** — the minimal always-on layer (see hierarchy below).
|
|
114
|
-
3. **Pause** — freeze the loop, dim the scene, show resume/restart.
|
|
115
|
-
|
|
116
|
-
|
|
138
|
+
3. **Pause** — freeze the loop, dim the scene, show resume/restart. Bound to
|
|
139
|
+
the **Escape key in every game** — Escape pauses, Escape again (or Resume)
|
|
140
|
+
unpauses; on touch, a small pause button. (With the bundled physics pack,
|
|
141
|
+
freezing is built in: `physics.paused = true` plus `anims.setPaused(true)`
|
|
142
|
+
— don't hand-roll a second clock.)
|
|
117
143
|
4. **Fail / retry** — what happened, the score, and a ONE-KEY instant restart
|
|
118
144
|
(show which key). Restart must not reload the page.
|
|
119
145
|
5. **Win / next** — celebrate, then offer the next thing to do.
|
|
@@ -133,7 +159,10 @@ black reads as a broken page. The branded version costs nothing:
|
|
|
133
159
|
that image exists BEFORE the video does; show it dimmed
|
|
134
160
|
(`filter: brightness(0.6)`) behind the progress. Menu-less game: one
|
|
135
161
|
`npx genex image` key-art call in the house style, enqueued first thing.
|
|
136
|
-
Until the image arrives, the flat darkest hue from the style brief
|
|
162
|
+
Until the image arrives, the flat darkest hue from the style brief — a
|
|
163
|
+
placeholder with the same status as the placeholder CSS HUD: a loader
|
|
164
|
+
still without its key-art/menu-frame background at publish or session
|
|
165
|
+
handoff is the same failure.
|
|
137
166
|
- **Progress:** a thin bar styled from the brief (its accent hue), driven by
|
|
138
167
|
real asset counts — never an indeterminate spinner alone.
|
|
139
168
|
- **Reveal:** when ready, fade the loader out (400–600 ms) into the menu or
|
|
@@ -224,15 +253,21 @@ timer in the game WILL drift apart). Buttons and menu keys emit the same
|
|
|
224
253
|
intents the gameplay input path uses — a "Restart" button and the R key must
|
|
225
254
|
run identical code.
|
|
226
255
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
exact `#ui` + `data-phase`
|
|
256
|
+
The generated layer is the default, not a reward: every game's HUD is built
|
|
257
|
+
from a generated sprite set (`$genex-ai-hud`), and a cinematic menu (looping
|
|
258
|
+
video backdrop behind the buttons, `$genex-ai-menu`) backs every game whose
|
|
259
|
+
menu decision is yes. Both slot into this exact `#ui` + `data-phase`
|
|
260
|
+
architecture and consume the shared style brief.
|
|
231
261
|
|
|
232
262
|
## Failure modes to catch before the player does
|
|
233
263
|
|
|
234
264
|
- No UI plan: screens invented one at a time, menu and HUD styled in two
|
|
235
265
|
different worlds.
|
|
266
|
+
- HUD sprites never enqueued at the gate — the placeholder CSS shipped as the
|
|
267
|
+
final HUD.
|
|
268
|
+
- No pause screen, or a pause that isn't bound to Escape.
|
|
269
|
+
- A style brief whose fonts were never actually loaded (a system-stack display
|
|
270
|
+
font at runtime).
|
|
236
271
|
- A generic stat dashboard (rows of labels + numbers) instead of a designed
|
|
237
272
|
HUD — pick the 2–3 numbers that matter and style them by hierarchy.
|
|
238
273
|
- Hard-cut phase swaps, a menu whose elements just appear, numbers that
|
|
@@ -58,17 +58,22 @@ leaderboards. Multiplayer auth (`getColyseusAuth`) comes from it too.
|
|
|
58
58
|
(screen inventory, one shared style brief, tier decisions) right after the game
|
|
59
59
|
concept is locked, before any UI code. Its Tier-2 generations (cinematic menu,
|
|
60
60
|
sprite HUD) are enqueued async (`--no-wait` + `npx genex wait <id>`) so they land
|
|
61
|
-
while the game is being built — they never block a playable v0
|
|
61
|
+
while the game is being built — they never block a playable v0, and the game is
|
|
62
|
+
not done, published, or handed off until they've been picked up (`npx genex wait`)
|
|
63
|
+
and wired in.
|
|
62
64
|
|
|
63
65
|
**The look is planned up front too:** right after the UI gate, lock the visual
|
|
64
66
|
direction in the same plan block — the camera rig + pointer bucket
|
|
65
67
|
(`$genex-threejs-camera-direction`), the renderer baseline (tone mapping,
|
|
66
68
|
exposure, output color space — set deliberately at boot; stock three.js
|
|
67
69
|
defaults are not a look, `$genex-threejs-exposure-color-grading`), the post
|
|
68
|
-
stack this game ships
|
|
69
|
-
the shared style brief;
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
stack this game ships (bloom/AO/grade — at least ONE built render-pass effect
|
|
71
|
+
for EVERY game, justified by the shared style brief; the UI vignette div or a
|
|
72
|
+
CSS filter on the canvas does not count, and a plan that "deliberately skips
|
|
73
|
+
everything" is the stock default, not a look; `$genex-threejs-image-pipeline`
|
|
74
|
+
owns ordering when 2+ compose), and the lighting/atmosphere mood from that
|
|
75
|
+
same brief. Planning is not building — effects still land last in the
|
|
76
|
+
execution order.
|
|
72
77
|
|
|
73
78
|
**Multiplayer is mandatory routing:** if the game has 2+ players sharing a world, loading
|
|
74
79
|
`$genex-threejs-multiplayer` is **required** before any networking code — the SDK auto-smooths
|
|
@@ -141,7 +146,13 @@ concept-driven — a richer first build beats a grey-box one.
|
|
|
141
146
|
- Use `$genex-threejs-visual-validation` before declaring graphics/procedural-system
|
|
142
147
|
work done. **Game fast path:** for game tasks that loaded no procedural/visual-system
|
|
143
148
|
skill, done = a screenshot plus an interaction smoke check (load the page, press each
|
|
144
|
-
control, see the visible response) — don't run the full diagnostic gate
|
|
149
|
+
control, see the visible response) — don't run the full diagnostic gate — PLUS the
|
|
150
|
+
floors from the routing-map's acceptance gate: the generated sprite HUD wired in
|
|
151
|
+
(not the CSS placeholder), pause on Escape, the branded loader with its key-art
|
|
152
|
+
background, the brief's fonts actually loaded, the renderer baseline + at least one
|
|
153
|
+
built render-pass effect, and every placed 2D/media piece screenshot-verified in
|
|
154
|
+
situ. These floors gate `npx genex publish` and the final handoff of a session the
|
|
155
|
+
same way — they do not wait for the word "done" to be said.
|
|
145
156
|
- Entering an **existing or remixed project**: read before writing — learn the
|
|
146
157
|
current renderer choice, physics setup, and file conventions first, then
|
|
147
158
|
extend them. Don't rebuild working systems or switch renderers mid-project.
|
|
@@ -21,9 +21,15 @@ Three.js release or branch, and do not blindly copy demo architecture.
|
|
|
21
21
|
mandatory for every game (`initEmbed(...)` + the `waitForPlayer()` gate) —
|
|
22
22
|
saves, leaderboards, and multiplayer auth all come from it.
|
|
23
23
|
3. Run `$genex-threejs-game-ui`'s "Plan the UI first" gate: screen inventory,
|
|
24
|
-
one shared style brief, a tier per screen
|
|
25
|
-
generations now with `--no-wait`
|
|
26
|
-
`npx genex wait <id>`) — they render server-side
|
|
24
|
+
one shared style brief, a tier per screen — stated visibly in chat, never
|
|
25
|
+
decided silently. Enqueue the Tier-2 UI generations now with `--no-wait`
|
|
26
|
+
(pick them up later with `npx genex wait <id>`) — they render server-side
|
|
27
|
+
while you build the game. The `$genex-ai-hud` Stage-1 mockup is enqueued
|
|
28
|
+
here for EVERY game; the `$genex-ai-menu` video whenever the menu decision
|
|
29
|
+
is yes (the default for every game — "it's only a draft" is not a reason
|
|
30
|
+
to decide no). Skipping this enqueue is
|
|
31
|
+
the #1 way a finished game ships an ugly HUD — by step 12 there is nothing
|
|
32
|
+
to swap in.
|
|
27
33
|
4. Lock the visual direction — the same plan-first logic as the UI gate, in
|
|
28
34
|
the same plan block, before any rendering code:
|
|
29
35
|
- **camera**: the rig type and the pointer bucket
|
|
@@ -32,9 +38,16 @@ Three.js release or branch, and do not blindly copy demo architecture.
|
|
|
32
38
|
deliberately at boot (`$genex-threejs-exposure-color-grading` owns the
|
|
33
39
|
staging — stock three.js defaults are not a look);
|
|
34
40
|
- **the post stack**: which image effects THIS game ships (bloom? AO?
|
|
35
|
-
grade?)
|
|
36
|
-
the
|
|
37
|
-
|
|
41
|
+
grade?) — each named and justified by the shared style brief. The floor
|
|
42
|
+
for EVERY game is the deliberate renderer baseline PLUS at least one
|
|
43
|
+
scene-serving render-pass effect (bloom, AO, or a LUT/shader grade — the
|
|
44
|
+
UI vignette div or a CSS filter on the canvas does not count); "no post
|
|
45
|
+
at all" is the stock default, not a plan, and "it's only a draft" is not
|
|
46
|
+
a lower floor. When 2+ effects compose, `$genex-threejs-image-pipeline`
|
|
47
|
+
owns the pass ordering;
|
|
48
|
+
- **references**: name 2–3 AAA games whose look this game borrows
|
|
49
|
+
(conventions, lighting mood, palette, post — never trade dress); the
|
|
50
|
+
same 2–3 the UI gate named, extended from the interface to the scene;
|
|
38
51
|
- **lighting/atmosphere mood** from the SAME shared style brief the UI gate
|
|
39
52
|
wrote — one art direction across scene and UI.
|
|
40
53
|
Planning is not building: effects still land LAST (steps 10–11); this step
|
|
@@ -48,6 +61,18 @@ Three.js release or branch, and do not blindly copy demo architecture.
|
|
|
48
61
|
architecture, planets, water, precipitation, clouds, or VFX. Show the
|
|
49
62
|
planned loader from the very first asset load — a player must never stare
|
|
50
63
|
at a black screen; the rest of the UI states come at step 12.
|
|
64
|
+
Then dress the world with 2D/media art: walk the scene for image/video
|
|
65
|
+
insertion points — posters, signs, graffiti, decals, banners, in-world
|
|
66
|
+
screens and billboards (`$genex-ai-image`; `$genex-ai-video` for anything
|
|
67
|
+
that should move). The visual-direction block names the 2–4 pieces this
|
|
68
|
+
world gets (or states in one line why it has none — that waiver is valid
|
|
69
|
+
only for a world with no authored surfaces at all, pure-abstract geometry
|
|
70
|
+
or empty open water/space; a world with buildings, walls, rooms, vehicles,
|
|
71
|
+
or props names its pieces); enqueue them with
|
|
72
|
+
`--no-wait` alongside the other assets. Every placed piece is
|
|
73
|
+
screenshot-checked in situ — right scale, not stretched, unlit material
|
|
74
|
+
where it must glow, readable at gameplay distance
|
|
75
|
+
(`$genex-threejs-visual-validation` owns the capture discipline).
|
|
51
76
|
7. Add camera direction when framing, controls, transitions, or scale perception
|
|
52
77
|
affect play — or the game aims with the mouse (shooter/FPS/turret): the
|
|
53
78
|
step-4 bucket decision executes here.
|
|
@@ -56,12 +81,19 @@ Three.js release or branch, and do not blindly copy demo architecture.
|
|
|
56
81
|
9. Add shared fields before writing multiple independent noise layers.
|
|
57
82
|
10. Add lighting, atmosphere, and shadows only after the no-post baseline reads.
|
|
58
83
|
11. Add image-pipeline, bloom, exposure, grading, or AO last — building out the
|
|
59
|
-
step-4 post plan, not inventing one now.
|
|
84
|
+
step-4 post plan, not inventing one now. This is a completion gate: the
|
|
85
|
+
named post stack must be BUILT before the game is called done, published,
|
|
86
|
+
or handed off — a game rendering on stock three.js defaults is not done,
|
|
87
|
+
and the gate does not wait for the word "done" to be said.
|
|
60
88
|
12. Once the loop is playable, build the planned interface states via
|
|
61
|
-
`$genex-threejs-game-ui` (HUD, pause, fail/retry, win, and the
|
|
62
|
-
state grown from the step-6 loader),
|
|
63
|
-
and
|
|
64
|
-
|
|
89
|
+
`$genex-threejs-game-ui` (HUD, pause on Escape, fail/retry, win, and the
|
|
90
|
+
full loading state grown from the step-6 loader), then `npx genex wait`
|
|
91
|
+
the step-3 UI generations and wire them in — the sprite HUD replaces the
|
|
92
|
+
placeholder CSS, the menu video replaces the still frame. This swap is a
|
|
93
|
+
completion gate, not an option: a game still on the placeholder CSS HUD,
|
|
94
|
+
or without a working Escape pause, is not done. Then run a feel pass via
|
|
95
|
+
`$genex-threejs-game-feel` (input response, camera, impact feedback,
|
|
96
|
+
retry speed).
|
|
65
97
|
13. Validate in a real browser with fixed seeds, captures, interaction checks,
|
|
66
98
|
and performance evidence.
|
|
67
99
|
|
|
@@ -70,7 +102,14 @@ Three.js release or branch, and do not blindly copy demo architecture.
|
|
|
70
102
|
**Game fast path:** for a game task that loaded no procedural/visual-system skill,
|
|
71
103
|
done = a screenshot plus an interaction smoke check (load the page, press each
|
|
72
104
|
control, assert a visible response — `$genex-threejs-visual-validation` has the
|
|
73
|
-
procedure)
|
|
105
|
+
procedure), **plus the UI floor from `$genex-threejs-game-ui` (the generated
|
|
106
|
+
sprite HUD wired in — not the CSS placeholder — pause on Escape, the branded
|
|
107
|
+
loader with its key-art background, the brief's font pair actually loaded)
|
|
108
|
+
and the look floor (the step-4 renderer baseline + named post stack actually
|
|
109
|
+
built; every placed 2D/media piece — decals, posters, in-world screens —
|
|
110
|
+
screenshot-verified in situ)**. These floors gate `npx genex publish` and the
|
|
111
|
+
final handoff of a session the same way — "I never said it was done" is not
|
|
112
|
+
an exemption. The list below applies to routed *visual-system* scenes, and each
|
|
74
113
|
system-specific item (debug views, seed manifests, tier knobs) applies only when
|
|
75
114
|
the corresponding skill was loaded.
|
|
76
115
|
|
|
@@ -89,6 +128,12 @@ A routed Genex scene is incomplete until it exposes:
|
|
|
89
128
|
|
|
90
129
|
## Publish and multiplayer awareness
|
|
91
130
|
|
|
131
|
+
**Publishing IS calling it done.** Before `npx genex publish`, every completion
|
|
132
|
+
gate above must pass — sprite HUD wired, Escape pause working, branded loader
|
|
133
|
+
with its key art, fonts loaded, renderer baseline + one built post effect,
|
|
134
|
+
world dressing placed or validly waived. If any is still pending, say which
|
|
135
|
+
and publish only after an explicit go-ahead.
|
|
136
|
+
|
|
92
137
|
Do not invent unavailable Genex service APIs. When preparing a game for Genex
|
|
93
138
|
publishing or multiplayer, inspect the project first. Prefer clean boundaries:
|
|
94
139
|
|