@genex-ai/cli-demo 0.93.0 → 0.94.0-dev.249
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 +26 -5
- package/package.json +1 -1
- package/templates/skills/genex-ai-model/SKILL.md +3 -2
- package/templates/skills/genex-ai-skybox/SKILL.md +4 -4
- package/templates/skills/genex-ai-texture/SKILL.md +1 -1
- package/templates/skills/genex-ai-video/SKILL.md +1 -1
- package/templates/skills/genex-game-director/SKILL.md +321 -411
- package/templates/skills/genex-game-director/references/design-contract.md +130 -179
- package/templates/skills/genex-game-director/references/routing-map.md +242 -362
- package/templates/skills/genex-getting-started/SKILL.md +2 -2
- package/templates/skills/genex-threejs-exposure-color-grading/SKILL.md +3 -7
- package/templates/skills/genex-threejs-multiplayer/SKILL.md +19 -2
- package/templates/skills/genex-threejs-procedural-assets/SKILL.md +112 -0
- package/templates/skills/genex-threejs-procedural-materials/SKILL.md +3 -7
- package/templates/skills/genex-threejs-procedural-vfx/SKILL.md +6 -11
- package/templates/skills/genex-threejs-shadow-systems/SKILL.md +2 -3
- package/templates/skills/genex-threejs-visual-validation/SKILL.md +0 -4
- package/templates/skills/genex-updates/SKILL.md +1 -1
- package/templates/skills/genex-threejs-atmosphere-aerial-perspective/SKILL.md +0 -46
- package/templates/skills/genex-threejs-atmosphere-aerial-perspective/references/atmosphere.md +0 -213
- package/templates/skills/genex-threejs-bloom/SKILL.md +0 -44
- package/templates/skills/genex-threejs-bloom/references/bloom.md +0 -187
- package/templates/skills/genex-threejs-exposure-color-grading/references/exposure-grading.md +0 -205
- package/templates/skills/genex-threejs-game-content/SKILL.md +0 -198
- package/templates/skills/genex-threejs-game-content/references/content-tables.md +0 -269
- package/templates/skills/genex-threejs-image-pipeline/SKILL.md +0 -56
- package/templates/skills/genex-threejs-image-pipeline/references/image-pipeline.md +0 -197
- package/templates/skills/genex-threejs-lighting-design/SKILL.md +0 -144
- package/templates/skills/genex-threejs-lighting-design/references/light-recipes.md +0 -137
- package/templates/skills/genex-threejs-open-world/SKILL.md +0 -149
- package/templates/skills/genex-threejs-open-world/references/terrain-streaming.md +0 -215
- package/templates/skills/genex-threejs-precipitation-surfaces/SKILL.md +0 -59
- package/templates/skills/genex-threejs-precipitation-surfaces/references/precipitation-surfaces.md +0 -181
- package/templates/skills/genex-threejs-procedural-architecture/SKILL.md +0 -50
- package/templates/skills/genex-threejs-procedural-architecture/references/architecture-systems.md +0 -509
- package/templates/skills/genex-threejs-procedural-fields/SKILL.md +0 -61
- package/templates/skills/genex-threejs-procedural-fields/references/field-systems.md +0 -232
- package/templates/skills/genex-threejs-procedural-geometry/SKILL.md +0 -39
- package/templates/skills/genex-threejs-procedural-geometry/references/mesh-systems.md +0 -202
- package/templates/skills/genex-threejs-procedural-materials/references/material-systems.md +0 -198
- package/templates/skills/genex-threejs-procedural-planets/SKILL.md +0 -48
- package/templates/skills/genex-threejs-procedural-planets/references/planet-systems.md +0 -498
- package/templates/skills/genex-threejs-procedural-vegetation/SKILL.md +0 -52
- package/templates/skills/genex-threejs-procedural-vegetation/references/vegetation-systems.md +0 -314
- package/templates/skills/genex-threejs-procedural-vfx/references/vfx-systems.md +0 -218
- package/templates/skills/genex-threejs-raymarched-space-effects/SKILL.md +0 -37
- package/templates/skills/genex-threejs-raymarched-space-effects/references/space-effects.md +0 -194
- package/templates/skills/genex-threejs-screen-space-ambient-occlusion/SKILL.md +0 -35
- package/templates/skills/genex-threejs-screen-space-ambient-occlusion/references/ambient-occlusion.md +0 -441
- package/templates/skills/genex-threejs-spectral-ocean/SKILL.md +0 -52
- package/templates/skills/genex-threejs-spectral-ocean/references/spectral-ocean.md +0 -473
- package/templates/skills/genex-threejs-temporal-surfaces/SKILL.md +0 -41
- package/templates/skills/genex-threejs-temporal-surfaces/references/temporal-surfaces.md +0 -207
- package/templates/skills/genex-threejs-visual-validation/references/visual-validation.md +0 -427
- package/templates/skills/genex-threejs-volumetric-clouds/SKILL.md +0 -49
- package/templates/skills/genex-threejs-volumetric-clouds/references/volumetric-clouds.md +0 -579
- package/templates/skills/genex-threejs-water-optics/SKILL.md +0 -57
- package/templates/skills/genex-threejs-water-optics/references/water-optics.md +0 -195
|
@@ -1,379 +1,259 @@
|
|
|
1
1
|
# Routing Map
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
This map assigns the player's **current request** to its owning Genex lanes.
|
|
4
|
+
A clear focused request starts there; it never inherits unrelated steps from a
|
|
5
|
+
full-game workflow.
|
|
6
6
|
|
|
7
7
|
## Three.js version and references
|
|
8
8
|
|
|
9
9
|
For new Genex browser-game projects, use the current stable Three.js release
|
|
10
|
-
(what `npm i three` installs) and keep the project on the version
|
|
11
|
-
|
|
10
|
+
(what `npm i three` installs) and keep the project on the version actually
|
|
11
|
+
installed—match all docs and examples to it.
|
|
12
12
|
|
|
13
|
-
For existing projects, inspect and respect the installed Three.js version
|
|
14
|
-
the
|
|
15
|
-
examples
|
|
16
|
-
|
|
13
|
+
For existing projects, inspect and respect the installed Three.js version
|
|
14
|
+
unless the player asks to upgrade. Use official Three.js docs first, then
|
|
15
|
+
official examples. Match examples to the installed release and do not blindly
|
|
16
|
+
copy demo architecture.
|
|
17
|
+
|
|
18
|
+
## Route by request shape
|
|
19
|
+
|
|
20
|
+
- **Clear latest request:** load the owning rows below and start.
|
|
21
|
+
- **Focused existing work:** read `DESIGN.md` and the touched code, update
|
|
22
|
+
`Now:`, preserve unrelated commitments, and do not replay discovery.
|
|
23
|
+
- **Broad new game:** only when unresolved, ask whole coordinated build versus
|
|
24
|
+
one request-relevant part first. If the player already answered, proceed.
|
|
25
|
+
- **Blank/unclear:** ask whether this is a game, tool/component, or existing
|
|
26
|
+
work. Do not propose a concept.
|
|
27
|
+
- **Generated GLB versus editable code:** for an ambiguous “make this image
|
|
28
|
+
3D,” ask one plain question: normal generated GLB, or editable parameterized
|
|
29
|
+
Three.js code? Explicit `GLB`, `procedural`, `parametric`, `code-built`, or
|
|
30
|
+
`variations` language chooses directly.
|
|
17
31
|
|
|
18
32
|
## Route by system
|
|
19
33
|
|
|
20
34
|
| Work needed | Load |
|
|
21
35
|
| --- | --- |
|
|
22
|
-
| shot composition, chase/side/orbit rigs, camera handoffs, projection ownership, pointer look, mouse-aimed action
|
|
36
|
+
| shot composition, chase/side/orbit rigs, camera handoffs, projection ownership, pointer look, mouse-aimed action, mouse-look, the screen-direction contract for hand-rolled steering/pan/look input signs, floating origins | `$genex-threejs-camera-direction` |
|
|
23
37
|
| on-foot player movement: walk/run/jump/crouch, third-person character, slopes, stairs, moving platforms, the player's body loader, directional locomotion, transitions, action motion | `$genex-threejs-character-controller` |
|
|
24
|
-
| the game's own generated character
|
|
25
|
-
| a character
|
|
26
|
-
| remote player bodies in multiplayer
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
| playable on phones:
|
|
30
|
-
| phone-survivable rendering
|
|
31
|
-
| anything falls, collides, gets pushed, or needs
|
|
32
|
-
| launch
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
| trees, stylized grass, GPU-computed grass fields, branching organisms, roots, foliage, rooted wind deformation | `$genex-threejs-procedural-vegetation` |
|
|
37
|
-
| buildings, façade grammars, profiles, ornaments, modular mesh writers | `$genex-threejs-procedural-architecture` |
|
|
38
|
-
| planets, terrain, craters, biome fields, coastlines, spherical detail | `$genex-threejs-procedural-planets` |
|
|
39
|
-
| sky scattering, planetary shells, depth-based aerial perspective | `$genex-threejs-atmosphere-aerial-perspective` |
|
|
40
|
-
| weather-driven raymarched clouds and cloud shadows | `$genex-threejs-volumetric-clouds` |
|
|
41
|
-
| hero open-water FFT oceans (expensive — only when open water IS the game): spectral cascades, hybrid FFT/Gerstner clear water, choppy derivatives, Jacobian whitecaps | `$genex-threejs-spectral-ocean` |
|
|
42
|
-
| **default water**: an ocean, sea, lake, river, or pool the game plays on or around — authored analytic waves, bounded heightfield pools, object ripples, differential-area caustics, shared normals, heuristic refraction, fallback absorption, crest foam | `$genex-threejs-water-optics` |
|
|
43
|
-
| falling snow, snow accumulation, model snow caps, wet asphalt puddles, procedural ripple normals, splash flipbooks, rain streaks, shared weather envelopes, surface wetness | `$genex-threejs-precipitation-surfaces` |
|
|
44
|
-
| curved-ray black holes, accretion disks, wormholes | `$genex-threejs-raymarched-space-effects` |
|
|
45
|
-
| particles, trails, plasma, shockwaves, layered event effects | `$genex-threejs-procedural-vfx` |
|
|
46
|
-
| accumulated screen frost, touch clearing, reduced blur, and refraction masks | `$genex-threejs-temporal-surfaces` |
|
|
47
|
-
| the light rig and where light belongs: sun/moon key, practical lights (campfire, torch, neon, lava), emissive-to-light coupling, light shafts and visible beams, fog mood, light signals, flicker, a scene that reads flat or uniformly lit | `$genex-threejs-lighting-design` |
|
|
38
|
+
| the game's own generated character—the player's body wherever a human body appears—or Meshy animation coverage beyond the stock pack: reference-informed A-pose concepts, exact action IDs, same-rig adapter | `$genex-ai-character` + `$genex-threejs-character-controller` |
|
|
39
|
+
| a character/enemy needs motion the catalog lacks—a signature move, boss telegraph, death, full 8-way set, or the player's footage; free plan before spend | `$genex-ai-character` motion section + `references/motion-generation.md` |
|
|
40
|
+
| remote player bodies in multiplayer—never hand-built primitives: the game's generated character when it has one, otherwise the player's `p.avatarUrl` VRM | `$genex-threejs-multiplayer` + `$genex-threejs-character-controller` |
|
|
41
|
+
| enemies, NPCs, or creatures: rigged bipeds via `npx genex creature`; static plus procedural motion for other body shapes; collider, facing, hit reaction, death | `$genex-threejs-creatures` |
|
|
42
|
+
| cars, drones, vehicle physics, gearbox, character↔vehicle enter/exit | `$genex-threejs-vehicle-controllers` |
|
|
43
|
+
| playable on phones: joystick, virtual buttons, drag zones, genre touch recipes, rotate-device overlay | `$genex-threejs-touch-controls` |
|
|
44
|
+
| phone-survivable rendering: device tiers, DPR/shadow/post budgets, runtime governor, generated-asset rungs, Quality picker, dispose-on-swap | `$genex-threejs-adaptive-quality` |
|
|
45
|
+
| anything falls, collides, gets pushed, or needs colliders/events | `$genex-threejs-physics-rapier` |
|
|
46
|
+
| launch/docking timelines, authored transform phases, springs, convergence, deterministic prop/debris motion | `$genex-threejs-procedural-animation` |
|
|
47
|
+
| rebuild a reference prop, hard-surface object, modular decoration, or simple environment piece as editable parameterized Three.js code | `$genex-threejs-procedural-assets` |
|
|
48
|
+
| procedural/PBR material boundary, authored frame PBR, and the retained material craft | `$genex-threejs-procedural-materials` |
|
|
49
|
+
| particles, trails, plasma, shockwaves, pooled bursts, and event effects | `$genex-threejs-procedural-vfx` |
|
|
48
50
|
| stable large-world shadows, cascades, clipmaps, cached updates | `$genex-threejs-shadow-systems` |
|
|
49
|
-
|
|
|
50
|
-
|
|
|
51
|
-
|
|
|
52
|
-
|
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
|
|
|
56
|
-
|
|
|
57
|
-
|
|
|
58
|
-
|
|
|
59
|
-
|
|
|
60
|
-
| the game works but feels flat, floaty, or unresponsive: input response,
|
|
61
|
-
| realtime multiplayer: movement sync,
|
|
62
|
-
| player identity, sign-in, guests, saves/progress, per-player state,
|
|
63
|
-
|
|
64
|
-
##
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
at a black screen; the rest of the UI states come at step 12.
|
|
220
|
-
Then make the world-dressing DECISION — a judgment call, not a quota:
|
|
221
|
-
does THIS world's fiction support 2D art (posters, signs, graffiti,
|
|
222
|
-
decals, banners, in-world screens — `$genex-ai-image`; `$genex-ai-video`
|
|
223
|
-
for anything that should move)? Say the decision in one line in the
|
|
224
|
-
visual-direction block. Name only the pieces that genuinely belong — a
|
|
225
|
-
garage wants grease posters and warning decals; a pristine void wants
|
|
226
|
-
none — and anchor their prompts to the concept frame. **Zero is a valid
|
|
227
|
-
answer with a stated reason; art placed just to satisfy this step is the
|
|
228
|
-
failure mode, not skipping it.** Enqueue what you named with `--no-wait`
|
|
229
|
-
alongside the other assets. Every placed piece is
|
|
230
|
-
screenshot-checked in situ — right scale, not stretched, unlit material
|
|
231
|
-
where it must glow, readable at gameplay distance
|
|
232
|
-
(`$genex-threejs-visual-validation` owns the capture discipline).
|
|
233
|
-
7. Add camera direction when framing, controls, transitions, or scale perception
|
|
234
|
-
affect play — or the game aims with the mouse (shooter/FPS/turret): the
|
|
235
|
-
step-4 bucket decision executes here. And before ANY hand-rolled
|
|
236
|
-
steering/pan/look math: the screen-direction contract (D → screen-right,
|
|
237
|
-
mouse-right → view right, drag axes one convention) with verified copy-paste
|
|
238
|
-
bases lives there — signs are copied, never derived.
|
|
239
|
-
8. Add procedural animation when object motion needs authored phases,
|
|
240
|
-
convergence, looping, or deterministic timelines.
|
|
241
|
-
9. Add shared fields before writing multiple independent noise layers.
|
|
242
|
-
10. Add lighting, atmosphere, and shadows only after the no-post baseline
|
|
243
|
-
reads: the step-4 source walk builds now — `$genex-threejs-lighting-design`
|
|
244
|
-
owns the rig.
|
|
245
|
-
11. Add image-pipeline, bloom, exposure, grading, or AO last — building out the
|
|
246
|
-
step-4 post plan, not inventing one now. This is a completion gate: the
|
|
247
|
-
named post stack must be BUILT before the game is called done, published,
|
|
248
|
-
or handed off — a game rendering on stock three.js defaults is not done,
|
|
249
|
-
and the gate does not wait for the word "done" to be said. The stack is
|
|
250
|
-
tier-gated (`$genex-threejs-adaptive-quality`): full on desktop, the built
|
|
251
|
-
tone-mapping pass + the tier's light additions on phones — wire the
|
|
252
|
-
governor's post toggle so phone tiers drop the heavy passes, never ship
|
|
253
|
-
them undropped.
|
|
254
|
-
12. Once the loop is playable, build the planned interface states via
|
|
255
|
-
`$genex-threejs-game-ui` (HUD, pause on Escape, fail/retry, win, and the
|
|
256
|
-
full loading state grown from the step-6 loader), then `npx genex wait`
|
|
257
|
-
the step-3 UI generations and wire them in — the sprite HUD replaces the
|
|
258
|
-
placeholder CSS (or the recorded `HUD lane: CSS` build lands finished to
|
|
259
|
-
its brief), the menu video replaces the still frame (wired with the menu
|
|
260
|
-
skill's loop crossfade), the logotype lands on the menu and loader, and
|
|
261
|
-
the scene's planned generated models replace their placeholder
|
|
262
|
-
primitives — a shipped wave of enemies may not be untextured boxes. This
|
|
263
|
-
swap is a completion gate, not an option: a game still on the
|
|
264
|
-
placeholder CSS HUD (with no recorded CSS lane), without the menu video
|
|
265
|
-
playing (or its recorded still fallback), or without a working Escape
|
|
266
|
-
pause, is not done. Then run a feel pass via
|
|
267
|
-
`$genex-threejs-game-feel` (input response, camera, impact feedback,
|
|
268
|
-
retry speed).
|
|
269
|
-
13. Validate in a real browser with fixed seeds, captures, interaction checks,
|
|
270
|
-
and performance evidence.
|
|
271
|
-
|
|
272
|
-
## Delegation
|
|
273
|
-
|
|
274
|
-
Fan-out is owned by the director: sub-agents own DESIGN.md Modules rows,
|
|
275
|
-
concept-DEPENDENT lanes launch the moment the concept lands (only the menu
|
|
276
|
-
video waits for its event triple — step 3), one writer per file, workers
|
|
277
|
-
never spawn workers, and the Assets table is the budget —
|
|
278
|
-
the full rules and the worker prompt shape live in the Delegate section of
|
|
279
|
-
`$genex-game-director`. This map adds no separate delegation rules; it is the
|
|
280
|
-
routing source the director and its workers read.
|
|
281
|
-
|
|
282
|
-
## Routing rules
|
|
283
|
-
|
|
284
|
-
- Build silhouette, motion, and material readability before adding image
|
|
285
|
-
effects. Never dress a primitive shape in glow or bloom to fake quality —
|
|
286
|
-
authored forms first, then materials, then lighting, then effects last.
|
|
287
|
-
- Keep game logic, simulation state, visual fields, and screen-space passes
|
|
288
|
-
separated unless coupling is intentional.
|
|
289
|
-
- Prefer deterministic seeds and named controls for every procedural system.
|
|
290
|
-
|
|
291
|
-
## Acceptance gate
|
|
292
|
-
|
|
293
|
-
**Game fast path:** for a game task that loaded no procedural/visual-system skill,
|
|
294
|
-
done = a screenshot plus an interaction smoke check (load the page, press each
|
|
295
|
-
control, assert a visible response in its labeled direction — `$genex-threejs-visual-validation` has the
|
|
296
|
-
procedure), **plus the UI floor from `$genex-threejs-game-ui` (the generated
|
|
297
|
-
sprite HUD wired in — not the CSS placeholder — or the DESIGN.md-recorded
|
|
298
|
-
`HUD lane: CSS` build finished to its brief; the menu video playing, or its
|
|
299
|
-
recorded still fallback; the logotype placed; pause on Escape, the branded
|
|
300
|
-
loader with its key-art background, the brief's font pair actually loaded)
|
|
301
|
-
and the look floor (the step-4 renderer baseline + named post stack actually
|
|
302
|
-
built; every placed 2D/media piece — decals, posters, in-world screens —
|
|
303
|
-
screenshot-verified in situ; no UI element left as default browser CSS; no
|
|
304
|
-
placeholder primitive left where a generated asset was
|
|
305
|
-
planned)**, **plus the content floor whenever a step-1 content contract
|
|
306
|
-
exists: every countable line of the contract is present and reachable in the
|
|
307
|
-
shipped game, or the user explicitly re-scoped it in chat. "Big world"
|
|
308
|
-
shipped as one small fogged arena, "quests" shipped as a single kill
|
|
309
|
-
counter, a village of textured huts where nobody speaks — each is a scope
|
|
310
|
-
violation the same way a CSS-placeholder HUD is, and it gates publish the
|
|
311
|
-
same way.** These floors gate `npx genex publish` and the
|
|
312
|
-
final handoff of a session the same way — "I never said it was done" is not
|
|
313
|
-
an exemption. The list below applies to routed *visual-system* scenes, and each
|
|
314
|
-
system-specific item (debug views, seed manifests, tier knobs) applies only when
|
|
315
|
-
the corresponding skill was loaded.
|
|
316
|
-
|
|
317
|
-
A routed Genex scene is incomplete until it exposes:
|
|
318
|
-
|
|
319
|
-
- deterministic or reproducible inputs;
|
|
320
|
-
- camera and input controls suited to the game verb;
|
|
321
|
-
- named perceptual parameters for the important visual systems;
|
|
322
|
-
- debug views for generated fields, masks, or passes;
|
|
323
|
-
- a no-post baseline that still communicates the subject;
|
|
324
|
-
- a clear quality tier or render-budget knob when the effect is expensive —
|
|
325
|
-
and for every GAME, the adaptive-quality tier wired at boot
|
|
326
|
-
(`$genex-threejs-adaptive-quality`): tier-capped pixel ratio, tier shadow
|
|
327
|
-
budget, the runtime governor in the loop, and generated skybox/texture
|
|
328
|
-
loads routed through their rungs;
|
|
329
|
-
- when physics or controllers are in play, a fixed-timestep loop: per-frame
|
|
330
|
-
work (platforms, enter/exit, controller updates) runs inside the physics
|
|
331
|
-
world's before-step hook, then the world steps — never in the render loop;
|
|
332
|
-
- browser evidence showing the canvas renders, moves, and responds to input.
|
|
51
|
+
| eye adaptation, tone mapping, output color, LUT grading, and proven static grain | `$genex-threejs-exposure-color-grading` |
|
|
52
|
+
| fixed-view screenshots, input direction, facing, temporal and budget evidence | `$genex-threejs-visual-validation` |
|
|
53
|
+
| a static generated GLB for a concrete prop, vehicle, building, or non-rigged object | `$genex-ai-model` |
|
|
54
|
+
| generated surface or terrain texture with real-world UV scale | `$genex-ai-texture` |
|
|
55
|
+
| environment-only 360° sky | `$genex-ai-skybox` |
|
|
56
|
+
| poster, sign, sprite, decal, reference sheet, or other 2D art | `$genex-ai-image` |
|
|
57
|
+
| in-world motion art or another requested video | `$genex-ai-video` |
|
|
58
|
+
| sound effect, one looping music bed, or a short spoken line | `$genex-ai-sfx`, `$genex-ai-music`, or `$genex-ai-voice` |
|
|
59
|
+
| requested UI/HUD/menu/interface work, or the later UI milestone of a complete-game request | `$genex-threejs-game-ui` |
|
|
60
|
+
| cinematic menu/title/pause/victory/defeat/lobby/credits video treatment | `$genex-ai-menu` |
|
|
61
|
+
| cohesive art-directed HUD sprite set with matched frames, masks, and icons | `$genex-ai-hud` |
|
|
62
|
+
| the game works but feels flat, floaty, or unresponsive: input response, camera, impacts, cooldowns, difficulty, fail/retry | `$genex-threejs-game-feel` |
|
|
63
|
+
| realtime multiplayer: movement sync, shared ball/NPC, host-run scores/enemies, shots/emotes, persistence | `$genex-threejs-multiplayer` |
|
|
64
|
+
| player identity, sign-in, guests, saves/progress, per-player state, shared persistent world, leaderboards—mandatory for every game | `$genex-threejs-embed-auth` |
|
|
65
|
+
|
|
66
|
+
## Request-sized execution
|
|
67
|
+
|
|
68
|
+
### Focused work
|
|
69
|
+
|
|
70
|
+
Load only the owning row or rows, preserve the current architecture, implement
|
|
71
|
+
the requested result, and run its relevant check. UI work routes directly to
|
|
72
|
+
UI; movement routes directly to movement; publishing routes directly to the
|
|
73
|
+
existing publish flow. Do not add a concept, unrelated asset batch, full-game
|
|
74
|
+
module plan, or critic loop.
|
|
75
|
+
|
|
76
|
+
### Step by step
|
|
77
|
+
|
|
78
|
+
Make the selected part `Now:` and preserve the final requested destination plus
|
|
79
|
+
other unfinished promises under Open commitments. A small playable slice is a
|
|
80
|
+
milestone, never silent permission to replace the destination.
|
|
81
|
+
|
|
82
|
+
### Whole coordinated build
|
|
83
|
+
|
|
84
|
+
Choose milestones and workstreams from the actual request. Independent streams
|
|
85
|
+
may run in parallel; dependencies remain serial. The stable game foundations
|
|
86
|
+
still route to their protected owners:
|
|
87
|
+
|
|
88
|
+
1. `$genex-threejs-embed-auth` before boot code:
|
|
89
|
+
`initEmbed(...)` plus the correct `waitForPlayer()` gate.
|
|
90
|
+
2. `$genex-threejs-adaptive-quality` at boot: device tier, capped pixel ratio,
|
|
91
|
+
runtime governor, and generated-asset rung loaders.
|
|
92
|
+
3. `$genex-threejs-touch-controls` when a mobile recipe fits.
|
|
93
|
+
4. `$genex-threejs-multiplayer` before any networking code whenever 2+ players
|
|
94
|
+
share a world.
|
|
95
|
+
|
|
96
|
+
Then build the requested gameplay and content in dependency order. Schedule
|
|
97
|
+
UI/HUD/menu at an appropriate later milestone only when the requested complete
|
|
98
|
+
outcome includes them. There is no startup game/UI concept gate.
|
|
99
|
+
|
|
100
|
+
## Content and world promises without cookbook machinery
|
|
101
|
+
|
|
102
|
+
For a broad/full-game content-shaped request, record only promises actually
|
|
103
|
+
present in the request or essential to the stated genre. Make each promise
|
|
104
|
+
countable or otherwise observable before choosing the paid asset batch.
|
|
105
|
+
|
|
106
|
+
- A clear detailed request becomes commitments and starts; it does not trigger
|
|
107
|
+
a fixed questionnaire.
|
|
108
|
+
- Step-by-step changes `Now:`, not the requested destination.
|
|
109
|
+
- Never lower a final content target silently. Ask one scope question only
|
|
110
|
+
when a real reduction needs the player's decision.
|
|
111
|
+
- A focused request updates only its touched item; unrelated commitments stay
|
|
112
|
+
as memory, not blockers.
|
|
113
|
+
- A requested large/open world records request-derived scale, terrain/ground,
|
|
114
|
+
boundaries, and locations. Never silently reinterpret it as one small flat
|
|
115
|
+
plane hidden by fog, and never impose fixed kilometer, chunk, biome, or POI
|
|
116
|
+
defaults.
|
|
117
|
+
- Generated assets support commitments; asset availability does not decide
|
|
118
|
+
how much game the player receives.
|
|
119
|
+
|
|
120
|
+
Open commitments prevent a false “the full requested game is complete” claim.
|
|
121
|
+
They do not block an explicit preview or publish request: run the protected
|
|
122
|
+
flow and state what remains.
|
|
123
|
+
|
|
124
|
+
## Reference-driven procedural assets
|
|
125
|
+
|
|
126
|
+
Use `$genex-threejs-procedural-assets` only for explicitly requested editable,
|
|
127
|
+
parameterized code-built objects or simple environment pieces. Do not trigger
|
|
128
|
+
it merely because an image exists, and never use it for player bodies, rigged
|
|
129
|
+
characters/creatures, or animation.
|
|
130
|
+
|
|
131
|
+
- Prefer a supplied reference. A private attachment stays local unless the
|
|
132
|
+
player explicitly permits upload, publication, or commit.
|
|
133
|
+
- If a reference is part of the requested work but absent, use the existing
|
|
134
|
+
`npx genex image` lane unchanged. Record that paid image as a normal Assets
|
|
135
|
+
row, separate from the code-built object.
|
|
136
|
+
- Its output is a local TypeScript factory returning `THREE.Group`, with named
|
|
137
|
+
parts and intentional parameters/seed. Add pivots, sockets, collider
|
|
138
|
+
metadata, or destruction groups only when gameplay needs them.
|
|
139
|
+
- Compare one reference-matched view and one off-axis/in-game-scale view.
|
|
140
|
+
Correct meaningful mismatches and stop at the requested fidelity.
|
|
141
|
+
- Consume the game's existing renderer, camera, lighting, post, physics,
|
|
142
|
+
adaptive-quality, and animation authority. Never create competing systems.
|
|
143
|
+
|
|
144
|
+
Use the local status flow exactly:
|
|
145
|
+
|
|
146
|
+
`proposed → planned → building (blockout | detail | material | runtime) →
|
|
147
|
+
landed (<local TypeScript path>) → wired`
|
|
148
|
+
|
|
149
|
+
## Protected lane handoffs
|
|
150
|
+
|
|
151
|
+
### UI, HUD, menu, and FAL
|
|
152
|
+
|
|
153
|
+
Enter this lane only for a direct UI/HUD/menu request, a relevant visible UI
|
|
154
|
+
problem, or the later interface milestone of a complete-game request. Once
|
|
155
|
+
invoked, `$genex-threejs-game-ui`, `$genex-ai-hud`, `$genex-ai-menu`,
|
|
156
|
+
`$genex-ai-image`, and `$genex-ai-video` retain their existing Stage-1/Stage-2
|
|
157
|
+
prompts, FAL calls, credits/checkpoints, retries, extraction, masks, wiring,
|
|
158
|
+
markers, nudges, preflights, and approval behavior. Keep `HUD lane:`,
|
|
159
|
+
`Menu video:`, and every HUD pipeline stage ID/path current in `DESIGN.md`.
|
|
160
|
+
|
|
161
|
+
The absence of generated HUD/menu/concept art alone never interrupts unrelated
|
|
162
|
+
focused work.
|
|
163
|
+
|
|
164
|
+
### Character, creature, and animation
|
|
165
|
+
|
|
166
|
+
The character lane retains its full approval chain. Inspect any user-named
|
|
167
|
+
references, generate exactly three neutral-A-pose concepts, and do not start
|
|
168
|
+
Image-to-3D before the applicable candidate decision. Preserve and show the
|
|
169
|
+
high-detail pre-rig model from four sides with measured face count; the
|
|
170
|
+
separate approved 10,000-face triangle remesh is what gets rigged and
|
|
171
|
+
animated. Never freeze/correct Meshy limb rotations; only horizontal root/hip
|
|
172
|
+
translation may be normalized for Rapier.
|
|
173
|
+
|
|
174
|
+
Search the catalog first. A missing verb uses
|
|
175
|
+
`genex character animate <id> "<verb>"` or the creature equivalent, with the
|
|
176
|
+
existing free motion plan before paid work, route selection, source/clip
|
|
177
|
+
validation, locomotion bindings, manifests, controller authority, and runtime
|
|
178
|
+
playback unchanged. `$genex-threejs-procedural-animation` remains the
|
|
179
|
+
non-biped/prop-motion fallback.
|
|
180
|
+
|
|
181
|
+
### Optimization and mobile
|
|
182
|
+
|
|
183
|
+
`$genex-threejs-adaptive-quality` and `$genex-threejs-touch-controls` retain
|
|
184
|
+
their existing tier detection, runtime governor, DPR/shadow/post budgets,
|
|
185
|
+
generated-asset rungs and fallbacks, mobile preflight/readiness, and touch
|
|
186
|
+
input behavior. Do not hard-code competing quality or mobile systems.
|
|
187
|
+
|
|
188
|
+
## Parallel work and the optional fresh critic
|
|
189
|
+
|
|
190
|
+
Whole coordinated mode may fan independent request-derived workstreams out to
|
|
191
|
+
sub-agents. One writer owns each disjoint file set; the director integrates
|
|
192
|
+
shared boot, loop, and netcode files. Focused work skips fan-out unless the
|
|
193
|
+
request itself has independently useful parts.
|
|
194
|
+
|
|
195
|
+
For a substantial judgeable result, a fresh critic may inspect the real game,
|
|
196
|
+
rendered pixels, supplied reference, or test output—not a builder summary. It
|
|
197
|
+
returns the single largest meaningful gap; the builder may correct it and ask
|
|
198
|
+
for another fresh look. Stop when requested acceptance is reached, gains are
|
|
199
|
+
immaterial, the player redirects, or time/compute budget is spent. No fixed
|
|
200
|
+
round count, critic ledger, progress site, or automatic paid retry.
|
|
201
|
+
|
|
202
|
+
A critic can identify a protected-lane issue but cannot bypass or rewrite the
|
|
203
|
+
owning lane. Follow-up uses the same approval, credit, checkpoint, retry, and
|
|
204
|
+
verification behavior.
|
|
205
|
+
|
|
206
|
+
## Acceptance
|
|
207
|
+
|
|
208
|
+
- **Focused request:** done means its observable requested result works and the
|
|
209
|
+
relevant owning-skill evidence exists. It does not require unrelated
|
|
210
|
+
full-game floors.
|
|
211
|
+
- **Step:** done means that milestone reached preview; the final outcome and
|
|
212
|
+
open commitments remain truthful.
|
|
213
|
+
- **Whole coordinated result:** done means the requested outcome and relevant
|
|
214
|
+
commitments are present and reachable, with the invoked lanes' own checks
|
|
215
|
+
satisfied.
|
|
216
|
+
|
|
217
|
+
For moving controls, verify labeled direction. When physics/controllers are
|
|
218
|
+
used, keep per-frame work inside the physics world's before-step hook, then
|
|
219
|
+
step the world—never duplicate simulation in the render loop. Browser evidence
|
|
220
|
+
must show the relevant canvas result renders, moves, and responds.
|
|
333
221
|
|
|
334
222
|
## Publish and multiplayer awareness
|
|
335
223
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
Choose the net model from player experience: one ongoing drop-in world uses `connect()`; a fresh
|
|
373
|
-
bounded match/mission with quorum, fair start, teams, backfill, or parallel sessions uses
|
|
374
|
-
`matchmake()`. Infer this when the brief is clear. Ask one experience-level question only when both
|
|
375
|
-
are genuinely plausible — never ask the user to select an SDK API or preset. For either model, a
|
|
376
|
-
Play/Online button is the first relay contact; immediate `connect()` + spawn is valid only when
|
|
377
|
-
loading the game already means joining the always-online world and there is no fake Play screen.
|
|
378
|
-
Before handoff, run the multiplayer skill's netcode feel gate with two distinct identities.
|
|
379
|
-
Use only the APIs that skill documents — do not invent transport methods.
|
|
224
|
+
An explicit preview or publish request proceeds directly through the existing
|
|
225
|
+
protected command flow; do not restart design discovery. Preserve every
|
|
226
|
+
preflight, mobile report, source upload, live-pointer, remix, marker, and
|
|
227
|
+
approval behavior. State open commitments and warnings plainly, then follow
|
|
228
|
+
the player's explicit direction.
|
|
229
|
+
|
|
230
|
+
Do not invent unavailable Genex service APIs. Keep renderer/scene setup
|
|
231
|
+
isolated from transport/auth code, spawn/simulation seeds deterministic, state
|
|
232
|
+
serializable, asset paths explicit, and one clear start function for local
|
|
233
|
+
preview and hosted launch.
|
|
234
|
+
|
|
235
|
+
**Multiplayer is mandatory routing.** If the game has 2+ players sharing a
|
|
236
|
+
world, load `$genex-threejs-multiplayer` **before writing any networking
|
|
237
|
+
code**—it is not optional. The `@genex-ai/multiplayer` relay syncs
|
|
238
|
+
`me`/`shared`/`objects`; the **SDK auto-smooths remote players AND shared
|
|
239
|
+
objects** for you (do not write your own interpolation). It gives
|
|
240
|
+
server-enforced primitives—`objects` (one owner per ball/NPC, claimed on
|
|
241
|
+
contact) and a room `host` (single writer of scores, single simulator of
|
|
242
|
+
enemies). Draw `state` directly, render yourself and owned objects from local
|
|
243
|
+
state, use quaternion rotation, and reserve `stateRaw` for hit-tests.
|
|
244
|
+
Reconnection is built into the SDK (`reconnecting`/`reconnected`; never
|
|
245
|
+
rebuild it).
|
|
246
|
+
|
|
247
|
+
Pushable/ownable bodies use claim-on-touch plus a Rapier proxy; only a genuine
|
|
248
|
+
simultaneous contest uses the host-authoritative `inputs` + `onHostTick`
|
|
249
|
+
pattern. Choose the net model from player experience: one ongoing drop-in
|
|
250
|
+
world uses `connect()`; a fresh bounded match/mission with quorum, fair start,
|
|
251
|
+
teams, backfill, or parallel sessions uses `matchmake()`. Infer this when the
|
|
252
|
+
brief is clear. Ask one experience-level question only when both are genuinely
|
|
253
|
+
plausible—never ask the player to select an SDK API or preset.
|
|
254
|
+
|
|
255
|
+
When a Play/Online button exists, it is the first relay contact. Immediate
|
|
256
|
+
`connect()` + spawn is valid only when loading already means joining the
|
|
257
|
+
always-online world and no fake Play screen exists. Before handoff, run the
|
|
258
|
+
multiplayer skill's netcode feel gate with two distinct identities. Use only
|
|
259
|
+
the APIs that skill documents.
|