@genex-ai/cli-demo 0.78.0-dev.200 → 0.80.0-dev.211
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 +1 -1
- package/package.json +1 -1
- package/templates/README.md +1 -1
- package/templates/controllers/quality/pick-asset.ts +12 -7
- package/templates/skills/genex-ai-character/SKILL.md +2 -4
- package/templates/skills/genex-ai-hud/SKILL.md +69 -23
- package/templates/skills/genex-ai-menu/SKILL.md +17 -12
- package/templates/skills/genex-ai-model/SKILL.md +58 -7
- package/templates/skills/genex-game-director/SKILL.md +265 -0
- package/templates/skills/genex-game-director/references/design-contract.md +148 -0
- package/templates/skills/{genex-threejs-skill-router → genex-game-director}/references/routing-map.md +82 -63
- package/templates/skills/genex-getting-started/SKILL.md +3 -2
- package/templates/skills/genex-threejs-adaptive-quality/SKILL.md +23 -8
- package/templates/skills/genex-threejs-adaptive-quality/references/adaptive-quality.md +16 -4
- package/templates/skills/genex-threejs-character-controller/SKILL.md +2 -4
- package/templates/skills/genex-threejs-embed-auth/SKILL.md +6 -48
- package/templates/skills/genex-threejs-game-content/SKILL.md +3 -4
- package/templates/skills/genex-threejs-game-ui/SKILL.md +95 -76
- package/templates/skills/genex-threejs-game-ui/references/style-capsules.md +9 -5
- package/templates/skills/genex-threejs-lighting-design/SKILL.md +7 -0
- package/templates/skills/genex-threejs-multiplayer/SKILL.md +1 -2
- package/templates/skills/genex-threejs-visual-validation/SKILL.md +2 -4
- package/templates/skills/genex-threejs-skill-router/SKILL.md +0 -263
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: genex-threejs-skill-router
|
|
3
|
-
description: Route Genex 3D browser-game work to the smallest useful Three.js skill set. Use for new game scenes, graphics upgrades, visual reference matching, game-feel passes, render-pipeline work, publishing readiness, multiplayer-aware scene architecture, or requests spanning cameras, geometry, materials, atmosphere, water, VFX, lighting, shadows, post-processing, and validation.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Genex Three.js Skill Router
|
|
7
|
-
|
|
8
|
-
Use this skill first for broad 3D browser-game requests. Load only the skills
|
|
9
|
-
that change the result; do not load the whole pack by default.
|
|
10
|
-
|
|
11
|
-
Read [references/routing-map.md](references/routing-map.md) for the full routing
|
|
12
|
-
map, execution order, and acceptance gate.
|
|
13
|
-
|
|
14
|
-
## Route by system
|
|
15
|
-
|
|
16
|
-
| Work needed | Load |
|
|
17
|
-
| --- | --- |
|
|
18
|
-
| shot composition, chase/side/orbit rigs, camera handoffs, projection ownership, pointer look, mouse-aimed action (shooter, FPS/first-person, sniper, turret, crosshair/reticle), mouse-look, hand-rolled steering/pan/look input signs (screen-direction contract), floating origins | `$genex-threejs-camera-direction` |
|
|
19
|
-
| on-foot player movement: walk/run/jump/crouch, third-person character, slopes, stairs, moving platforms, personal VRM animation, directional locomotion, transitions, action motion | `$genex-threejs-character-controller` |
|
|
20
|
-
| a custom generated playable humanoid or Meshy animation coverage beyond UAL: reference-informed A-pose concepts, explicit candidate + 10k-remesh approvals, exact action IDs, same-rig adapter | `$genex-ai-character` + `$genex-threejs-character-controller` |
|
|
21
|
-
| the player drives or flies something: cars, drones, vehicle physics, gearbox, enter/exit between character and vehicle | `$genex-threejs-vehicle-controllers` |
|
|
22
|
-
| playable on phones: touch/mobile input for any game — joystick, virtual buttons, drag zones, per-genre touch recipes, rotate-device overlay — wired by default for every NEW game when a recipe fits (skip with a one-line reason) | `$genex-threejs-touch-controls` |
|
|
23
|
-
| phone-survivable rendering — device tiers, DPR/shadow/post budgets, the runtime quality governor, per-tier asset rungs for generated skyboxes/textures, the Quality picker, dispose-on-swap discipline — **mandatory for every game at boot wiring** | `$genex-threejs-adaptive-quality` |
|
|
24
|
-
| anything falls, collides, gets pushed, or needs physics: Rapier world setup, colliders for meshes and GLBs, collision events | `$genex-threejs-physics-rapier` |
|
|
25
|
-
| launch and docking timelines, procedural transform phases, springs, staging, rotating-frame alignment, debris motion | `$genex-threejs-procedural-animation` |
|
|
26
|
-
| reusable scalar/vector fields, domain warping, causal masks, procedural normals | `$genex-threejs-procedural-fields` |
|
|
27
|
-
| atlas-filtered blocks, planetary surfaces, terrain wetness, lava/emissive procedural surfaces, authored frame PBR, specular AA | `$genex-threejs-procedural-materials` |
|
|
28
|
-
| sculpted rails/frames, branch rings, semantic mesh writers, material groups | `$genex-threejs-procedural-geometry` |
|
|
29
|
-
| trees, stylized grass, GPU-computed grass fields, branching organisms, roots, foliage, rooted wind deformation | `$genex-threejs-procedural-vegetation` |
|
|
30
|
-
| buildings, façade grammars, profiles, ornaments, modular mesh writers | `$genex-threejs-procedural-architecture` |
|
|
31
|
-
| planets, terrain, craters, biome fields, coastlines, spherical detail | `$genex-threejs-procedural-planets` |
|
|
32
|
-
| sky scattering, planetary shells, depth-based aerial perspective | `$genex-threejs-atmosphere-aerial-perspective` |
|
|
33
|
-
| weather-driven raymarched clouds and cloud shadows | `$genex-threejs-volumetric-clouds` |
|
|
34
|
-
| 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` |
|
|
35
|
-
| **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` |
|
|
36
|
-
| 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` |
|
|
37
|
-
| curved-ray black holes, accretion disks, wormholes | `$genex-threejs-raymarched-space-effects` |
|
|
38
|
-
| particles, trails, plasma, shockwaves, layered event effects | `$genex-threejs-procedural-vfx` |
|
|
39
|
-
| accumulated screen frost, touch clearing, reduced blur, and refraction masks | `$genex-threejs-temporal-surfaces` |
|
|
40
|
-
| 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` |
|
|
41
|
-
| stable large-world shadows, cascades, clipmaps, cached updates | `$genex-threejs-shadow-systems` |
|
|
42
|
-
| GTAO, bent normals, bilateral reconstruction | `$genex-threejs-screen-space-ambient-occlusion` |
|
|
43
|
-
| HDR bloom and selective emission contribution | `$genex-threejs-bloom` |
|
|
44
|
-
| eye adaptation, tone mapping, LUT grading, output color | `$genex-threejs-exposure-color-grading` |
|
|
45
|
-
| shared depth/normal/velocity ownership and multi-pass ordering | `$genex-threejs-image-pipeline` |
|
|
46
|
-
| fixed-view diagnostics, seed sweeps, temporal and budget evidence | `$genex-threejs-visual-validation` |
|
|
47
|
-
| game content named in the plural or a content genre: quests, objectives, NPCs, dialogue, shops, inventory, loot, XP/progression, an RPG/adventure/story game — **mandatory whenever the ask names content**, and its content contract is written before the asset batch | `$genex-threejs-game-content` |
|
|
48
|
-
| a big/open world: kilometers of terrain, multiple regions or locations, exploration, points of interest, biomes, world streaming | `$genex-threejs-open-world` |
|
|
49
|
-
| the 2D interface — HUD, menus, pause/win/lose screens, loaders, lobby, on-screen text and buttons, UI state flow — **mandatory for every game**, and its "Plan the UI first" gate runs right after the concept is locked | `$genex-threejs-game-ui` |
|
|
50
|
-
| a cinematic menu — main menu/title/pause/victory/defeat/lobby/credits with a looping generated video backdrop behind DOM buttons | `$genex-ai-menu` |
|
|
51
|
-
| a cohesive art-directed HUD — generated sprite set (matched frames, masks, icons in one style) wired with masked fills | `$genex-ai-hud` |
|
|
52
|
-
| the game works but feels flat, floaty, or unresponsive: input response, acceleration curves, camera shake, hit feedback, hitstop, cooldowns, difficulty ramp, fail/retry loop | `$genex-threejs-game-feel` |
|
|
53
|
-
| realtime multiplayer: movement sync, a shared ball/NPC, host-run scores/enemies, shots/emotes, persistence | `$genex-threejs-multiplayer` |
|
|
54
|
-
| player identity, sign-in, guests, saves/progress, per-player state, a shared persistent world, leaderboards — **mandatory for every game** | `$genex-threejs-embed-auth` |
|
|
55
|
-
|
|
56
|
-
**Identity is mandatory routing:** every Genex game ships with the embed SDK — load
|
|
57
|
-
`$genex-threejs-embed-auth` unconditionally before writing boot code (it wires
|
|
58
|
-
`initEmbed(...)` and the `waitForPlayer()` gate), and route to it whenever the task
|
|
59
|
-
mentions sign-in, saves, progress, per-player state, a persistent world, or
|
|
60
|
-
leaderboards. Multiplayer auth (`getColyseusAuth`) comes from it too.
|
|
61
|
-
|
|
62
|
-
**Adaptive quality is mandatory routing:** every game wires the device tier at
|
|
63
|
-
boot — `$genex-threejs-adaptive-quality` (three lines: `detectTier()` before the
|
|
64
|
-
renderer, tier-capped `setPixelRatio`, the governor in the loop; generated
|
|
65
|
-
skyboxes/textures load through their rungs). Phones enforce a hard GPU-memory
|
|
66
|
-
kill desktops never show you; the tier is what keeps a phone boot alive while
|
|
67
|
-
desktop keeps the full look. This is a completion gate like the post stack —
|
|
68
|
-
cheap to wire, not a new testing burden (desktop-only verification stands).
|
|
69
|
-
|
|
70
|
-
**Character-animation routing:** use the existing VRM + UAL character
|
|
71
|
-
controller by default. Use `npx genex character` when the game needs a custom
|
|
72
|
-
generated humanoid or an action unavailable in UAL. Before generating a Meshy
|
|
73
|
-
character, discuss two or three visual directions. When the user names a visual
|
|
74
|
-
reference, inspect references before writing the concept prompt. Recommend a
|
|
75
|
-
neutral A-pose for characters that will be rigged.
|
|
76
|
-
|
|
77
|
-
Generate concept images first and show the actual images to the user. Do not
|
|
78
|
-
start Image-to-3D until the user explicitly selects a candidate. Generate
|
|
79
|
-
exactly three concepts, all neutral A-pose; never use a dynamic concept pose or
|
|
80
|
-
silently fall back to T-pose. Warn that held, slung, or overlapping props and
|
|
81
|
-
straps can fuse into the body or obscure limbs, and recommend separate gameplay
|
|
82
|
-
props.
|
|
83
|
-
|
|
84
|
-
Meshy Image-to-3D first produces an unremeshed high-detail model. Show its
|
|
85
|
-
front, back, left, and right views and report its measured face count. Preserve
|
|
86
|
-
that model in R2. Before rigging, ask the user to approve a separate
|
|
87
|
-
10,000-face triangle remesh. The 10k remesh—not the high-detail source—is
|
|
88
|
-
rigged and animated. Keep every pre-animation generation in the selected
|
|
89
|
-
neutral A-pose.
|
|
90
|
-
|
|
91
|
-
Load `$genex-ai-character`, search Meshy actions first with
|
|
92
|
-
`npx genex animations search "<intent>" --json`, and use returned action IDs;
|
|
93
|
-
never invent IDs. Meshy limb rotations play unchanged. Never freeze hand tracks
|
|
94
|
-
or apply post-mixer arm, hand, leg, or foot corrections. Only horizontal root
|
|
95
|
-
or hip translation may be normalized for Rapier. In both lanes, the
|
|
96
|
-
ECCTRL-derived character controller owns collision and world translation.
|
|
97
|
-
|
|
98
|
-
**UI is mandatory routing:** every game has an interface — load
|
|
99
|
-
`$genex-threejs-game-ui` for every NEW game and run its "Plan the UI first" gate
|
|
100
|
-
(screen inventory, one shared style brief, tier decisions) right after the game
|
|
101
|
-
concept is locked, before any UI code. Its Tier-2 generations (cinematic menu,
|
|
102
|
-
sprite HUD) are enqueued async (`--no-wait` + `npx genex wait <id>`) so they land
|
|
103
|
-
while the game is being built — they never block a playable v0, and the game is
|
|
104
|
-
not done, published, or handed off until they've been picked up (`npx genex wait`)
|
|
105
|
-
and wired in.
|
|
106
|
-
|
|
107
|
-
**Content is mandatory routing when the ask names it:** if the request names
|
|
108
|
-
game content in the plural — quests, enemies, bosses, locations, spells, items,
|
|
109
|
-
factions — or a content genre (an RPG, an adventure, an open world, a story
|
|
110
|
-
game), load `$genex-threejs-game-content` and write its **content contract**
|
|
111
|
-
into the same plan message as the UI gate, BEFORE the asset batch: every
|
|
112
|
-
plural noun of the request becomes a countable line (how many quests and what
|
|
113
|
-
chain, which locations, what progression), plus the minute-ten answer. Those
|
|
114
|
-
lines are hard floors exactly like the sprite HUD — the game is not done,
|
|
115
|
-
published, or handed off while a contract line is missing, and shrinking one
|
|
116
|
-
is a structured question to the user, never a silent cut ("vertical slice
|
|
117
|
-
first" is a build order, not a smaller destination) — use your environment's
|
|
118
|
-
structured question tool when it has one (Claude Code: `AskUserQuestion`;
|
|
119
|
-
Codex: `request_user_input`); if it has none (e.g. Cursor), a short numbered
|
|
120
|
-
list in chat. A request that says
|
|
121
|
-
**big/open world** also loads `$genex-threejs-open-world` and fixes the
|
|
122
|
-
world's scale as a number in the same plan — world size comes from streamed
|
|
123
|
-
terrain, never from fog hiding the edges of a small plane. This routing
|
|
124
|
-
exists because the failure it prevents is invisible to every visual gate: a
|
|
125
|
-
"Skyrim-like big world with quests" can pass every look floor as a
|
|
126
|
-
300-meter single-quest vignette.
|
|
127
|
-
|
|
128
|
-
**The look is planned up front too:** right after the UI gate, lock the visual
|
|
129
|
-
direction in the same plan block — the camera rig + pointer bucket
|
|
130
|
-
(`$genex-threejs-camera-direction`), the renderer baseline (tone mapping,
|
|
131
|
-
exposure, output color space — set deliberately at boot; stock three.js
|
|
132
|
-
defaults are not a look, `$genex-threejs-exposure-color-grading`), the post
|
|
133
|
-
stack this game ships — read off the concept frame's OWN look (the grade, bloom
|
|
134
|
-
level, haze, grain it already shows) and which post the 2–3 AAA references lean
|
|
135
|
-
on, not a default single bloom; ONE built render-pass effect is the FLOOR
|
|
136
|
-
against no-post for EVERY game, never the target — ship the richness the concept
|
|
137
|
-
implies. The floor is TIER-AWARE (`$genex-threejs-adaptive-quality`): on phone
|
|
138
|
-
tiers it is satisfied by the built tone-mapping/output pass with the light
|
|
139
|
-
additions the tier allows (FXAA/vignette), while the full named stack remains
|
|
140
|
-
the desktop floor — never ship the heavy stack undropped to phones (the UI
|
|
141
|
-
vignette div or a CSS canvas filter does not count on any tier;
|
|
142
|
-
`$genex-threejs-image-pipeline` owns ordering when 2+ compose), a decision for
|
|
143
|
-
**every primitive surface** the game builds — walls, barriers, kerbs and
|
|
144
|
-
platforms each get a real texture or a **shader** where that surface wants motion
|
|
145
|
-
or energy (a pulsing force barrier, an electric fence, a scrolling hazard strip),
|
|
146
|
-
judged one by one: a shader that gives a barrier life earns its place, the same
|
|
147
|
-
effect everywhere disfigures, deliberate flat black is valid if you say so — but
|
|
148
|
-
a flat-colour box beside textured geometry is the "stopped halfway" tell
|
|
149
|
-
(`$genex-threejs-procedural-materials` / `$genex-threejs-procedural-vfx`, and SEE
|
|
150
|
-
it in the running game), one named
|
|
151
|
-
**ambient-motion loop** that keeps
|
|
152
|
-
the scene alive at rest (emissive pulse, shimmer, drifting dust — shader
|
|
153
|
-
work, zero generations), and the lighting/atmosphere mood from that
|
|
154
|
-
same brief — walked source by source, every light with a visible cause
|
|
155
|
-
(`$genex-threejs-lighting-design` owns that gate). Planning is not building — effects still land last in the
|
|
156
|
-
execution order.
|
|
157
|
-
|
|
158
|
-
**Multiplayer is mandatory routing:** if the game has 2+ players sharing a world, loading
|
|
159
|
-
`$genex-threejs-multiplayer` is **required** before any networking code — the SDK auto-smooths
|
|
160
|
-
remote players **and shared objects**, and gives you server-enforced object ownership (a ball) and
|
|
161
|
-
a room `host` (scores, enemies). Choose the net model from the player experience before coding:
|
|
162
|
-
`connect()` is one ongoing drop-in world; `matchmake()` forms capped rooms for fresh matches or
|
|
163
|
-
missions with quorum/fair-start/backfill rules. Infer it when clear; ask one plain-language
|
|
164
|
-
ongoing-world-vs-fresh-session question only when both experiences genuinely fit. A Play/Online
|
|
165
|
-
button is always the commitment point for either API; only a truly always-online `connect()` world
|
|
166
|
-
may join/spawn immediately, and then it must not show a fake Play screen. Only `matchmake()` requires
|
|
167
|
-
a server-owned `genex.matchmaking` block in `package.json`, reported by preview/publish. Both models
|
|
168
|
-
accept a fresh auth supplier, but their terminal-recovery duties differ, so follow the chosen model's
|
|
169
|
-
section rather than mixing the two. Run that skill's netcode feel gate before handoff. The skill also
|
|
170
|
-
covers the rules that keep it smooth and its per-genre recipes (sports/ball, shooter, co-op).
|
|
171
|
-
|
|
172
|
-
## Real (AI-generated) assets — `npx genex` commands
|
|
173
|
-
|
|
174
|
-
When the user wants a **specific, recognizable asset** (a named object, a described
|
|
175
|
-
sky, a particular sound, surface, image, or clip) rather than something authored in
|
|
176
|
-
code, generate it with an `npx genex` command (run inside the project, where the
|
|
177
|
-
`@genex-ai/cli-demo` dev dependency makes `genex` resolve to the right CLI). Each
|
|
178
|
-
prints a permanent public `assets.genex.technology` URL you load straight from at
|
|
179
|
-
runtime — the asset lives in Genex storage (R2), not your repo, so there's nothing to
|
|
180
|
-
commit. Each skill has the exact Three.js loader code.
|
|
181
|
-
|
|
182
|
-
| Work needed | Generate with | Skill |
|
|
183
|
-
| --- | --- | --- |
|
|
184
|
-
| a specific prop / item / non-playable static figure / vehicle body as a real mesh | `npx genex model "<prompt>"` | `$genex-ai-model` |
|
|
185
|
-
| a custom generated playable humanoid with a rig and controller-ready animation pack | `npx genex character "<prompt>"` | `$genex-ai-character` |
|
|
186
|
-
| a described 360° sky / backdrop + image-based lighting | `npx genex skybox "<prompt>"` | `$genex-ai-skybox` |
|
|
187
|
-
| a specific sound effect tied to an event | `npx genex sfx "<prompt>"` | `$genex-ai-sfx` |
|
|
188
|
-
| a photoreal surface/material on a mesh or terrain | `npx genex texture "<prompt>" [--terrain]` | `$genex-ai-texture` |
|
|
189
|
-
| a picture on a plane/sprite — poster, sign, sprite, card art, decal/sticker | `npx genex image "<prompt>" [--transparent]` | `$genex-ai-image` |
|
|
190
|
-
| a video clip on a surface — in-game screen, billboard, cutscene, backdrop | `npx genex video "<prompt>" [--loop]` | `$genex-ai-video` |
|
|
191
|
-
|
|
192
|
-
Prefer the **procedural** skills above for abstract/parametric/animated systems
|
|
193
|
-
(geometry, materials, sky, water, VFX) — no files, infinite variation. Prefer the
|
|
194
|
-
**`npx genex` generators** for concrete, describable, photoreal assets. They complement
|
|
195
|
-
each other.
|
|
196
|
-
|
|
197
|
-
**Generate a core asset set by default — don't wait to be asked.** For any game that
|
|
198
|
-
needs concrete objects or surfaces, decide a small core set from the concept and start
|
|
199
|
-
generating it **up front, in parallel** (each `npx genex` is an independent ~1-minute
|
|
200
|
-
job — launch them concurrently in the background, then scaffold the scene while they run
|
|
201
|
-
and wire each asset in as it lands, with a procedural placeholder as fallback until then):
|
|
202
|
-
|
|
203
|
-
- the **hero model** the player controls or chases (`npx genex model`),
|
|
204
|
-
- one key **texture** for the ground/main surface (`npx genex texture --terrain` for ground),
|
|
205
|
-
- a **skybox** when the scene is outdoors (`npx genex skybox`),
|
|
206
|
-
- a **sfx** or two for the core action/feedback (`npx genex sfx`).
|
|
207
|
-
|
|
208
|
-
Skip generation only for purely abstract/geometric games. Keep the set small and
|
|
209
|
-
concept-driven — a richer first build beats a grey-box one.
|
|
210
|
-
|
|
211
|
-
## Routing rules
|
|
212
|
-
|
|
213
|
-
- Start from the playable game target: player verb, scene scale, camera distance,
|
|
214
|
-
input mode, and frame budget.
|
|
215
|
-
- Pointer bucket (decide before building, state it in the plan): the bundled
|
|
216
|
-
`FollowCamera` locks the pointer by default on desktop, so this is mostly a
|
|
217
|
-
decision to opt OUT. **mandatory pointer lock** — first-person of any kind, and
|
|
218
|
-
any mouse-aimed action (third-person shooter, turret/range); leave it on.
|
|
219
|
-
**Lock by default** — third-person free-camera action/adventure; on already,
|
|
220
|
-
drag-orbit (`pointerLockAim: false`) only with a stated reason (e.g. a
|
|
221
|
-
cursor-heavy UI core). **Never** — cursor-core games (click-to-move, tower
|
|
222
|
-
defense, builder, card/puzzle), orbit showcases, touch-only; these MUST pass
|
|
223
|
-
`pointerLockAim: false`. Keyboard-only games (racer, platformer) lock too —
|
|
224
|
-
the cursor is either a gameplay tool or locked away during play. The mechanism
|
|
225
|
-
and the full aim contract live in `$genex-threejs-camera-direction`.
|
|
226
|
-
- Input direction (always — every game that moves with keys or pointer):
|
|
227
|
-
D/ArrowRight must move or turn the player screen-RIGHT, mouse-right must turn
|
|
228
|
-
the view right, drag-pan axes share one convention. The screen-direction
|
|
229
|
-
contract and verified copy-paste bases live in
|
|
230
|
-
`$genex-threejs-camera-direction` — hand-rolled steering/pan/look math copies
|
|
231
|
-
one instead of deriving signs, and the smoke check's input-direction pass
|
|
232
|
-
verifies it.
|
|
233
|
-
- Art direction follows THIS game's concept. The style examples inside skills
|
|
234
|
-
are examples, not defaults — never default to neon/cyberpunk/synthwave (or any
|
|
235
|
-
other single register) unless the concept calls for it.
|
|
236
|
-
- Build silhouette, motion, and material readability before adding image effects.
|
|
237
|
-
Never dress a primitive shape in glow or bloom to fake quality — authored
|
|
238
|
-
forms first, then materials, then lighting, then effects last.
|
|
239
|
-
- Set the renderer baseline deliberately at boot — tone mapping, exposure,
|
|
240
|
-
output color space (`$genex-threejs-exposure-color-grading`). A game that
|
|
241
|
-
ships on stock defaults hasn't chosen a look; a game that stacks post
|
|
242
|
-
effects it never planned has chosen several.
|
|
243
|
-
- Prefer deterministic seeds and named controls for every procedural system.
|
|
244
|
-
- Keep game logic, simulation state, visual fields, and screen-space passes
|
|
245
|
-
separated unless coupling is intentional.
|
|
246
|
-
- Use `$genex-threejs-visual-validation` before declaring graphics/procedural-system
|
|
247
|
-
work done. **Game fast path:** for game tasks that loaded no procedural/visual-system
|
|
248
|
-
skill, done = a screenshot plus an interaction smoke check (load the page, press each
|
|
249
|
-
control, see the visible response in its labeled direction) — don't run the full diagnostic gate — PLUS the
|
|
250
|
-
floors from the routing-map's acceptance gate: the generated sprite HUD wired in
|
|
251
|
-
(not the CSS placeholder), pause on Escape, the branded loader with its key-art
|
|
252
|
-
background, the brief's fonts actually loaded, the renderer baseline + at least one
|
|
253
|
-
built render-pass effect, every placed 2D/media piece screenshot-verified in
|
|
254
|
-
situ, no UI element left as default browser CSS, and no placeholder primitive
|
|
255
|
-
left where a generated asset was planned. These floors gate `npx genex publish`
|
|
256
|
-
and the final handoff of a session the
|
|
257
|
-
same way — they do not wait for the word "done" to be said.
|
|
258
|
-
- Entering an **existing or remixed project**: read before writing — learn the
|
|
259
|
-
current renderer choice, physics setup, and file conventions first, then
|
|
260
|
-
extend them. Don't rebuild working systems or switch renderers mid-project.
|
|
261
|
-
- For three.js APIs **not covered by any skill here**, consult the official
|
|
262
|
-
three.js documentation (https://threejs.org/docs/) rather than guessing —
|
|
263
|
-
the skills cover Genex-specific and hard-won patterns, not the whole engine.
|