@energy8platform/create-slot 0.6.22 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +219 -12
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/template/README.md +1 -1
- package/template/_gitignore +4 -0
- package/template/vite.config.ts +80 -22
package/dist/cli.js
CHANGED
|
@@ -48,6 +48,10 @@ function parseFlags(argv) {
|
|
|
48
48
|
out.stake = true;
|
|
49
49
|
else if (a === '--no-stake')
|
|
50
50
|
out.stake = false;
|
|
51
|
+
else if (a === '--artube')
|
|
52
|
+
out.artube = true;
|
|
53
|
+
else if (a === '--no-artube')
|
|
54
|
+
out.artube = false;
|
|
51
55
|
else if (a === '--dir')
|
|
52
56
|
out.dir = args[++i];
|
|
53
57
|
}
|
|
@@ -61,6 +65,9 @@ function applyDefaults(partial) {
|
|
|
61
65
|
mechanic,
|
|
62
66
|
grid: partial.grid ?? DEFAULT_GRID[mechanic],
|
|
63
67
|
stake: partial.stake ?? true,
|
|
68
|
+
// Off by default: Artube needs a companion backend repo (@energy8platform/artube-server), so
|
|
69
|
+
// it's an explicit choice, not something a game inherits by being scaffolded.
|
|
70
|
+
artube: partial.artube ?? false,
|
|
64
71
|
cascades: partial.cascades ?? (mechanic !== 'lines'),
|
|
65
72
|
};
|
|
66
73
|
}
|
|
@@ -109,7 +116,7 @@ function seedFromArgv(argv) {
|
|
|
109
116
|
return flags;
|
|
110
117
|
}
|
|
111
118
|
|
|
112
|
-
/** Ask the
|
|
119
|
+
/** Ask the questions interactively, applying defaults for blank answers. */
|
|
113
120
|
async function prompt(seed) {
|
|
114
121
|
const rl = createInterface({ input: stdin, output: stdout });
|
|
115
122
|
try {
|
|
@@ -120,7 +127,8 @@ async function prompt(seed) {
|
|
|
120
127
|
const gridStr = (await rl.question('Grid colsxrows [default for mechanic]: ')).trim();
|
|
121
128
|
const grid = seed.grid ?? (gridStr ? { cols: Number(gridStr.split('x')[0]), rows: Number(gridStr.split('x')[1]) } : undefined);
|
|
122
129
|
const stakeAns = seed.stake ?? ((await rl.question('Stake integration? (Y/n): ')).trim().toLowerCase() !== 'n');
|
|
123
|
-
|
|
130
|
+
const artubeAns = seed.artube ?? ((await rl.question('Artube integration? (y/N): ')).trim().toLowerCase() === 'y');
|
|
131
|
+
return applyDefaults({ id, title, mechanic, grid, stake: stakeAns, artube: artubeAns });
|
|
124
132
|
}
|
|
125
133
|
finally {
|
|
126
134
|
rl.close();
|
|
@@ -177,10 +185,102 @@ export const model = defineGame(spec);
|
|
|
177
185
|
* project is wired, what to edit, and what the framework already handles. */
|
|
178
186
|
function genClaudeMd(a) {
|
|
179
187
|
const cascade = a.cascades === true;
|
|
188
|
+
const artubeCommands = a.artube
|
|
189
|
+
? `npm run dev:artube # ONE command: frontend + the game's backend, /api proxied — see below
|
|
190
|
+
npm run build:artube # BOTH Artube deployables: dist-artube/ (frontend) + dist-artube-server/
|
|
191
|
+
npm run bundle:artube # build:artube + a zip of dist-artube/ for manual upload
|
|
192
|
+
`
|
|
193
|
+
: '';
|
|
194
|
+
const artubeSection = a.artube
|
|
195
|
+
? `
|
|
196
|
+
## Artube
|
|
197
|
+
|
|
198
|
+
\`createSlotGame({ artube: { load: () => import('@energy8platform/artube-bridge') } })\` in
|
|
199
|
+
\`src/main.ts\` is the whole game-side wiring: the host detects
|
|
200
|
+
the launch (\`?sessionId=…\`), REFUSES a launch that claims a session but carries a blank one —
|
|
201
|
+
without that refusal it falls through to whatever else answers: an offline dev bridge locally
|
|
202
|
+
(free spins) or, in a deployed build, nothing at all (a hang) — lazy-loads
|
|
203
|
+
\`@energy8platform/artube-bridge\`, and drives the same play loop as everywhere else. There is no
|
|
204
|
+
per-game adapter on Artube — the game's BACKEND owns the round shape.
|
|
205
|
+
|
|
206
|
+
Artube ships as two deployables — a frontend and a backend — and this repo now BUILDS BOTH
|
|
207
|
+
(see "Deployment"), while **development is one command.** \`npm run dev:artube\` runs
|
|
208
|
+
\`artubePlugin\` from
|
|
209
|
+
\`@energy8platform/artube-server/vite\` (see \`vite.config.ts\`), which starts the backend as a child
|
|
210
|
+
of the dev server, on a free port it picks itself, waits until it actually serves, and proxies
|
|
211
|
+
\`/api\` (HTTP + WS) to it — so dev has the same single-origin shape as production. The backend is
|
|
212
|
+
killed when the dev server closes.
|
|
213
|
+
|
|
214
|
+
Defaults: the public sandbox (\`GameId=game1\`, no API key) and \`./src/game/script.spin\`. Override
|
|
215
|
+
with \`artubePlugin({ gameId, gamesApiUrl, apiKey, spinPath, port })\`, or with the platform's own
|
|
216
|
+
env vars (\`GameId\`, \`GamesApiUrl\`, \`GamesApiKey\`). To point at a backend you run yourself (an IDE
|
|
217
|
+
debug session):
|
|
218
|
+
|
|
219
|
+
\`\`\`bash
|
|
220
|
+
ARTUBE_BACKEND=http://localhost:8080 npm run dev:artube # proxies there, starts nothing
|
|
221
|
+
\`\`\`
|
|
222
|
+
|
|
223
|
+
If the backend cannot start, \`vite\` aborts with the reason and the backend's last output — a bad
|
|
224
|
+
\`.spin\`, a missing \`e8-server\` binary and an unreachable GamesAPI all name themselves there.
|
|
225
|
+
\`artube-server\` is a **devDependency** and is imported dynamically inside the Artube branch of
|
|
226
|
+
\`vite.config.ts\`, so an Energy8/Stake-only build never resolves it.
|
|
227
|
+
|
|
228
|
+
\`dev:artube\` also runs WITHOUT the DevBridge, so during development the math comes from the backend
|
|
229
|
+
exactly as it will in production — a plain \`npm run dev\` would answer spins locally instead.
|
|
230
|
+
|
|
231
|
+
**Deployment: \`npm run build:artube\` produces BOTH deployables.**
|
|
232
|
+
|
|
233
|
+
- \`dist-artube/\` — the frontend. Its own folder (like \`dist-stake/\`), so no target can silently
|
|
234
|
+
ship another target's bytes. **Artube's CI pipeline deploys the repo's \`dist\` folder**, so a game
|
|
235
|
+
built this way needs its pipeline pointed at \`dist-artube\` — change the job's artifact path, or
|
|
236
|
+
copy the folder in CI. That is the accepted trade for keeping the targets visibly separate.
|
|
237
|
+
- \`dist-artube-server/\` — the backend, emitted by the same \`artubePlugin\` (its \`apply: 'build'\`
|
|
238
|
+
half). It contains this game's \`.spin\` copied byte-for-byte, a plain-JS \`index.js\`, a
|
|
239
|
+
\`package.json\` pinning \`@energy8platform/artube-server\`, and a \`Dockerfile\`. \`docker build\` it
|
|
240
|
+
as-is, or commit its contents into the server repo. The plugin does this because it already knows
|
|
241
|
+
the spin path — the alternative was a human copying the math between repos, which is how a
|
|
242
|
+
frontend ends up live against last week's backend math. Read \`dist-artube-server/README.md\`.
|
|
243
|
+
It is generated output: wiped and rewritten on every build, so never edit it.
|
|
244
|
+
|
|
245
|
+
**Loading screen: Artube's first, then this game's.** \`artubePartnerLoader()\` (the Artube branch of
|
|
246
|
+
\`vite.config.ts\`) injects Artube's two-phase branded loader into \`index.html\`, so it is painted
|
|
247
|
+
before the game bundle is even fetched. \`src/main.ts\` calls \`createArtubeLoader()\` — null on every
|
|
248
|
+
other target, where the markup is absent — and passes the controller as \`loading.externalOverlay\`.
|
|
249
|
+
|
|
250
|
+
That overlay covers ONLY the gap the game cannot paint: bundle download, Pixi init, the SDK
|
|
251
|
+
handshake. The engine reports boot milestones into Artube's bar (which is also what makes their
|
|
252
|
+
loader crossfade from the dark partner phase to the green branded one — that transition fires on
|
|
253
|
+
the first progress above zero), waits until Artube's screen has had its minimum time
|
|
254
|
+
(\`loading.externalOverlayMinDisplayTime\`, default 1500 ms — the raw gap is often only a few
|
|
255
|
+
hundred, which shows a partner's brand to nobody and cuts their 500 ms crossfade in half), then
|
|
256
|
+
mounts its own loading screen, waits for its FIRST FRAME to be painted, and only then dismisses
|
|
257
|
+
Artube's. From that frame on, loading is identical to every other target: this game's brand, bar,
|
|
258
|
+
tap-to-start and \`minDisplayTime\` (which is measured from the hand-over, so a game setting both
|
|
259
|
+
gets the sum). Set loading options OUTSIDE the Artube branch — they apply on all targets, Artube
|
|
260
|
+
included, and options set inside it apply only there.
|
|
261
|
+
|
|
262
|
+
The dismissal also happens on every failure path, so a boot that throws cannot leave Artube's
|
|
263
|
+
screen stranded over a dead game.
|
|
264
|
+
|
|
265
|
+
\`loading.externalOverlay\` is typed structurally (\`{ showLoader, updateProgress, hideLoader }\`) so
|
|
266
|
+
no engine package names an Artube type — the same discipline as \`artube: { load }\`: the engine
|
|
267
|
+
describes the shape, THIS game supplies the instance.
|
|
268
|
+
|
|
269
|
+
**Nothing is installed from Artube.** Their loader is vendored into \`@energy8platform/artube-bridge\`
|
|
270
|
+
(browser controller, at \`/loader\`) and \`@energy8platform/artube-server\` (the Vite plugin). No
|
|
271
|
+
private registry, no \`.npmrc\`, no token — a plain \`npm install\` is enough. When Artube ships a new
|
|
272
|
+
loader version, the vendored copies are updated in the game-engine monorepo, not here.
|
|
273
|
+
|
|
274
|
+
The \`BUILD_TARGET=artube\` flag does NOT harden the frontend bundle — the DevBridge is injected by a
|
|
275
|
+
dev-server-only Vite plugin, so no production build has ever carried one. What protects a real
|
|
276
|
+
launch is the host's gate: a launch claiming a session with a blank \`sessionId\` makes the game
|
|
277
|
+
refuse to start.
|
|
278
|
+
`
|
|
279
|
+
: '';
|
|
180
280
|
return `# CLAUDE.md
|
|
181
281
|
|
|
182
282
|
Guidance for Claude Code (claude.ai/code) working in this repository — a slot game built on the
|
|
183
|
-
Energy8 \`@energy8platform/game-engine\` framework, targeting Stake Engine.
|
|
283
|
+
Energy8 \`@energy8platform/game-engine\` framework, targeting Stake Engine${a.artube ? ' and Artube' : ''}.
|
|
184
284
|
|
|
185
285
|
## What this project is
|
|
186
286
|
|
|
@@ -230,7 +330,8 @@ npm run stake # the Stake dev harness — iframe wrapper + dev-RGS back
|
|
|
230
330
|
npm run build:stake # the Stake frontend build → dist-stake/ (base './', no DevBridge)
|
|
231
331
|
npm run math:pool # Stage A — honest large simulation (the pool); see math.config.ts
|
|
232
332
|
npm run math:curate # Stage B — compress the pool into the publishable stake-math/ bundle
|
|
233
|
-
\`\`\`
|
|
333
|
+
${artubeCommands}\`\`\`
|
|
334
|
+
${artubeSection}
|
|
234
335
|
|
|
235
336
|
## Math pipeline
|
|
236
337
|
|
|
@@ -245,7 +346,7 @@ Segment-drain of bonuses, \`roundId\` forwarding, free-spins counter (with retri
|
|
|
245
346
|
unfinished round, win/balance HUD timing, social-mode vocabulary, the legal disclaimer, currency
|
|
246
347
|
formatting, jurisdiction → feature restrictions, the insufficient-funds guard, the play-error modal
|
|
247
348
|
+ reconnect overlay, autoplay, the bet ladder + default bet from \`/wallet/authenticate\`, the
|
|
248
|
-
open-redirect \`rgs_url\` guard, spacebar handling, pause on tab-blur (ticker + music), and
|
|
349
|
+
open-redirect \`rgs_url\` guard${a.artube ? ' (and the Artube blank-`sessionId` guard)' : ''}, spacebar handling, pause on tab-blur (ticker + music), and
|
|
249
350
|
double-tap-to-skip (opt out with \`createSlotGame({ skipGesture: false })\`). Write player-facing
|
|
250
351
|
copy normally — it is socialized automatically in social mode.
|
|
251
352
|
|
|
@@ -293,6 +394,21 @@ function genPackageJson(a, v) {
|
|
|
293
394
|
scripts['stake:bundle'] =
|
|
294
395
|
`rm -rf dist-stake stake-math ${a.id}-stake.zip stake-math.zip && npm run build:stake && npm run math && cd dist-stake && zip -r ../${a.id}-stake.zip . && cd ../stake-math && zip -r ../stake-math.zip . && cd .. && echo 'Stake artifacts: ${a.id}-stake.zip + stake-math.zip'`;
|
|
295
396
|
}
|
|
397
|
+
if (a.artube) {
|
|
398
|
+
// `build:artube` produces BOTH of Artube's deployables: the frontend in `dist-artube` (its own
|
|
399
|
+
// folder, like `dist-stake`, so no target can silently ship another's bytes) and the backend in
|
|
400
|
+
// `dist-artube-server` (emitted by artubePlugin's build half — with this game's `.spin` in it).
|
|
401
|
+
// Both are wiped first so a previous build's stale hashed assets can't ride along to the CDN.
|
|
402
|
+
//
|
|
403
|
+
// CONSEQUENCE: Artube's CI pipeline deploys the repo's `dist` folder, so point the pipeline at
|
|
404
|
+
// `dist-artube` (change the job's artifact path, or copy the folder in CI). That is the accepted
|
|
405
|
+
// trade for keeping the targets separate.
|
|
406
|
+
scripts['dev:artube'] = 'BUILD_TARGET=artube vite';
|
|
407
|
+
scripts['build:artube'] =
|
|
408
|
+
'rm -rf dist-artube dist-artube-server && BUILD_TARGET=artube vite build';
|
|
409
|
+
scripts['bundle:artube'] =
|
|
410
|
+
`rm -f ${a.id}-artube.zip && npm run build:artube && cd dist-artube && zip -r ../${a.id}-artube.zip . && cd .. && echo 'Artube artifacts: dist-artube/ (point the CI pipeline here) + ${a.id}-artube.zip, and dist-artube-server/ (docker build it)'`;
|
|
411
|
+
}
|
|
296
412
|
const pkg = {
|
|
297
413
|
name: a.id,
|
|
298
414
|
private: true,
|
|
@@ -303,12 +419,24 @@ function genPackageJson(a, v) {
|
|
|
303
419
|
'@energy8platform/game-engine': v['game-engine'],
|
|
304
420
|
'@energy8platform/harness': v['harness'],
|
|
305
421
|
...(a.stake ? { '@energy8platform/stake-kit': v['stake-kit'], '@energy8platform/stake-bridge': v['stake-bridge'] } : { '@energy8platform/stake-kit': v['stake-kit'] }),
|
|
422
|
+
// The host lazy-imports the bridge, but the bundler still has to resolve it at build time —
|
|
423
|
+
// so the BRIDGE is a runtime dependency. The SERVER is not: see devDependencies below.
|
|
424
|
+
//
|
|
425
|
+
// It also carries Artube's branded loading screen (`/loader`), vendored from `@artube/loader`
|
|
426
|
+
// — so there is NO Artube package to install, no private registry to configure and no token.
|
|
427
|
+
// A plain `npm install` resolves everything this game needs.
|
|
428
|
+
...(a.artube ? { '@energy8platform/artube-bridge': v['artube-bridge'] } : {}),
|
|
306
429
|
'pixi.js': '^8.16.0',
|
|
307
430
|
'@pixi/sound': '^6.0.0',
|
|
308
431
|
'@esotericsoftware/spine-pixi-v8': '~4.2.0',
|
|
309
432
|
zod: '^3.23.0',
|
|
310
433
|
},
|
|
311
434
|
devDependencies: {
|
|
435
|
+
// `dev:artube` starts the game's backend itself (artubePlugin in vite.config.ts). It is a
|
|
436
|
+
// DEV dependency and nothing else: Node-side, imported only from vite.config.ts, and never
|
|
437
|
+
// part of any bundle — an Energy8/Stake-only build must not have to resolve it, which is why
|
|
438
|
+
// vite.config.ts imports it dynamically inside the Artube branch.
|
|
439
|
+
...(a.artube ? { '@energy8platform/artube-server': v['artube-server'] } : {}),
|
|
312
440
|
'@energy8platform/stake-math-tools': v['stake-math-tools'],
|
|
313
441
|
'@types/node': '^20.0.0',
|
|
314
442
|
tsx: '^4.21.0',
|
|
@@ -662,7 +790,40 @@ export default adapter;
|
|
|
662
790
|
|
|
663
791
|
function genMainTs(a) {
|
|
664
792
|
const stakeImport = a.stake ? `import adapter from './stake/adapter';\n` : '';
|
|
793
|
+
const artubeLoaderImport = a.artube
|
|
794
|
+
? `import { createArtubeLoader } from '@energy8platform/artube-bridge/loader';\n`
|
|
795
|
+
: '';
|
|
665
796
|
const stakeOpt = a.stake ? ` stake: { adapter },\n` : '';
|
|
797
|
+
// Artube needs no per-game artifact: the game's backend (artube-server) owns the round shape, so
|
|
798
|
+
// the loader IS the opt-in. The host classifies the launch, refuses a malformed one, and only
|
|
799
|
+
// then constructs the bridge. The GAME passes the import so the specifier never ends up in
|
|
800
|
+
// game-engine's own bundle (games without the dependency must still build).
|
|
801
|
+
const artubeOpt = a.artube
|
|
802
|
+
? ` // Artube: enabled by the launch URL (?sessionId=…). Build with \`npm run build:artube\`;
|
|
803
|
+
// the backend runs separately (\`artube-server --spin ./game.spin --sandbox --port 8080\`).
|
|
804
|
+
artube: { load: () => import('@energy8platform/artube-bridge') },
|
|
805
|
+
// Artube's loader covers the gap this game cannot paint — bundle download, Pixi init, the SDK
|
|
806
|
+
// handshake — and the engine dismisses it once ITS loading screen has painted AND Artube's has
|
|
807
|
+
// had its minimum time on screen (\`externalOverlayMinDisplayTime\`, 1500ms by default; the raw
|
|
808
|
+
// gap can be under half a second). Nothing else is set here on purpose: from that frame on,
|
|
809
|
+
// loading looks the same as on every other target, so any loading options this game wants
|
|
810
|
+
// belong OUTSIDE this branch — set here they would apply on Artube only.
|
|
811
|
+
...(artubeLoader ? { loading: { externalOverlay: artubeLoader } } : {}),\n`
|
|
812
|
+
: '';
|
|
813
|
+
// Artube ships its own branded loading screen; `artubePartnerLoader` (vite.config.ts) injects it
|
|
814
|
+
// into index.html so it is on screen before this bundle runs. Handing the engine the controller
|
|
815
|
+
// suppresses OUR preloader and routes the same progress into theirs — one continuous overlay.
|
|
816
|
+
const artubeLoaderSetup = a.artube
|
|
817
|
+
? `
|
|
818
|
+
// Artube's branded loading screen — its markup is injected into index.html by \`artubePartnerLoader\`
|
|
819
|
+
// (vite.config.ts), so it is already on screen when this module runs. It covers the gap this game
|
|
820
|
+
// cannot paint (bundle, Pixi init, SDK handshake); the engine dismisses it once ITS loading screen
|
|
821
|
+
// has painted its first frame. Only an Artube build has that markup, so this is null everywhere
|
|
822
|
+
// else and every other target simply shows the engine's preloader from the start. The controller is
|
|
823
|
+
// Artube's own code, vendored into @energy8platform/artube-bridge — nothing to install from Artube.
|
|
824
|
+
const artubeLoader = createArtubeLoader();
|
|
825
|
+
`
|
|
826
|
+
: '';
|
|
666
827
|
return `import { createSlotGame } from '@energy8platform/game-engine/host';
|
|
667
828
|
import { ScaleMode } from '@energy8platform/game-engine';
|
|
668
829
|
import { model } from './game.spec';
|
|
@@ -670,7 +831,7 @@ import { GameScene } from './scenes/GameScene';
|
|
|
670
831
|
import { IntroScene } from './scenes/IntroScene';
|
|
671
832
|
import { normalize } from './game/normalize';
|
|
672
833
|
import { i18n } from './i18n';
|
|
673
|
-
${stakeImport}
|
|
834
|
+
${artubeLoaderImport}${stakeImport}${artubeLoaderSetup}
|
|
674
835
|
createSlotGame({
|
|
675
836
|
model,
|
|
676
837
|
normalize,
|
|
@@ -686,7 +847,7 @@ createSlotGame({
|
|
|
686
847
|
fonts: ['400 24px "Inter"'],
|
|
687
848
|
textureDefaults: true,
|
|
688
849
|
dev: (import.meta as any).env?.DEV ?? false,
|
|
689
|
-
${stakeOpt} shell: {
|
|
850
|
+
${stakeOpt}${artubeOpt} shell: {
|
|
690
851
|
// Per-game localisation map (english-as-key). Fill other languages in src/i18n.ts.
|
|
691
852
|
i18n,
|
|
692
853
|
// buy/ante cards + currency derive from the spec + initData.
|
|
@@ -950,6 +1111,47 @@ function substituteTree(dir, vars) {
|
|
|
950
1111
|
writeFileSync(p, text);
|
|
951
1112
|
}
|
|
952
1113
|
}
|
|
1114
|
+
/** The README's Artube block (empty for a non-Artube game) — see `${artube}` in template/README.md. */
|
|
1115
|
+
function artubeReadme(a) {
|
|
1116
|
+
if (!a.artube)
|
|
1117
|
+
return '';
|
|
1118
|
+
return `## Artube
|
|
1119
|
+
- \`npm run dev:artube\` — ONE command. No dev bridge, so spins come from the backend exactly as in
|
|
1120
|
+
production. The dev server starts the game's backend (\`@energy8platform/artube-server\`) itself,
|
|
1121
|
+
on a free port it picks, and proxies \`/api\` to it — there is nothing else to start.
|
|
1122
|
+
Against the public sandbox by default; \`ARTUBE_BACKEND=http://localhost:8080\` proxies at a
|
|
1123
|
+
backend you run yourself instead.
|
|
1124
|
+
- \`npm run build:artube\` — BOTH Artube deployables:
|
|
1125
|
+
- \`dist-artube/\` — the frontend (its own folder, like \`dist-stake/\`). **Artube's CI pipeline
|
|
1126
|
+
deploys the repo's \`dist\` folder**, so point the pipeline at \`dist-artube\` — change the job's
|
|
1127
|
+
artifact path, or copy the folder in CI.
|
|
1128
|
+
- \`dist-artube-server/\` — the deployable backend, emitted by the same plugin: this game's
|
|
1129
|
+
\`.spin\` byte-for-byte, a plain-JS entry point, a \`package.json\` and a \`Dockerfile\`.
|
|
1130
|
+
\`docker build\` it as-is, or commit it into the server repo. See its README. Generated output —
|
|
1131
|
+
wiped and rewritten every build.
|
|
1132
|
+
- Enabled in \`src/main.ts\` via
|
|
1133
|
+
\`createSlotGame({ artube: { load: () => import('@energy8platform/artube-bridge') } })\`; the host
|
|
1134
|
+
classifies the launch, refuses a malformed one, and loads the bridge itself.
|
|
1135
|
+
- **Loading screen** — an Artube build opens on ARTUBE's branded two-phase loader.
|
|
1136
|
+
\`artubePartnerLoader()\` (vite.config.ts) injects it into \`index.html\`, so it is painted before
|
|
1137
|
+
the game bundle is even fetched, and \`src/main.ts\` hands the engine its controller as
|
|
1138
|
+
\`loading.externalOverlay\`. It covers exactly the gap nothing of this game can paint — bundle
|
|
1139
|
+
download, Pixi init, the SDK handshake — and the engine dismisses it once ITS OWN loading screen
|
|
1140
|
+
has painted its first frame AND Artube's has had its minimum time on screen
|
|
1141
|
+
(\`loading.externalOverlayMinDisplayTime\`, default 1500 ms; the raw gap can be under half a
|
|
1142
|
+
second, too fast for a partner's brand to register). From there the player gets this game's
|
|
1143
|
+
loading screen, bar and tap-to-start, exactly as on every other target. In order: Artube's dark
|
|
1144
|
+
partner screen → Artube's green branded screen with the bar filling as the game boots → this
|
|
1145
|
+
game's loading screen → the game.
|
|
1146
|
+
|
|
1147
|
+
### Nothing to install from Artube
|
|
1148
|
+
|
|
1149
|
+
There is no registry to configure, no \`.npmrc\` and no token: Artube's loader is vendored into
|
|
1150
|
+
\`@energy8platform/artube-bridge\` (the browser controller) and \`@energy8platform/artube-server\`
|
|
1151
|
+
(the Vite plugin that injects the markup). A plain \`npm install\` resolves everything.
|
|
1152
|
+
|
|
1153
|
+
`;
|
|
1154
|
+
}
|
|
953
1155
|
async function generate(a, targetDir, versions) {
|
|
954
1156
|
validate(a);
|
|
955
1157
|
mkdirSync(targetDir, { recursive: true });
|
|
@@ -958,8 +1160,8 @@ async function generate(a, targetDir, versions) {
|
|
|
958
1160
|
// _gitignore → .gitignore
|
|
959
1161
|
if (existsSync(join(targetDir, '_gitignore')))
|
|
960
1162
|
renameSync(join(targetDir, '_gitignore'), join(targetDir, '.gitignore'));
|
|
961
|
-
// 2) substitute ${id}/${title}
|
|
962
|
-
substituteTree(targetDir, { id: a.id, title: a.title });
|
|
1163
|
+
// 2) substitute ${id}/${title}/${artube}
|
|
1164
|
+
substituteTree(targetDir, { id: a.id, title: a.title, artube: artubeReadme(a) });
|
|
963
1165
|
// 3) codegen files
|
|
964
1166
|
mkdirSync(join(targetDir, 'src/game'), { recursive: true });
|
|
965
1167
|
mkdirSync(join(targetDir, 'src/scenes'), { recursive: true });
|
|
@@ -988,12 +1190,17 @@ async function generate(a, targetDir, versions) {
|
|
|
988
1190
|
// Dependency versions written into a scaffolded game's package.json. Keep in lock-step with the
|
|
989
1191
|
// published @energy8platform/* versions (a create-slot test asserts these match the workspace).
|
|
990
1192
|
const PUBLISHED = {
|
|
991
|
-
'platform-core': '^0.
|
|
992
|
-
'game-engine': '^0.
|
|
1193
|
+
'platform-core': '^0.31.0',
|
|
1194
|
+
'game-engine': '^0.35.0',
|
|
993
1195
|
'stake-kit': '^0.6.4',
|
|
994
|
-
'stake-bridge': '^0.6.
|
|
1196
|
+
'stake-bridge': '^0.6.4',
|
|
995
1197
|
'stake-math-tools': '^0.9.3',
|
|
996
1198
|
harness: '^0.3.1',
|
|
1199
|
+
// UNPUBLISHED at the time of writing: `--artube` scaffolds cannot `npm install` until
|
|
1200
|
+
// @energy8platform/artube-bridge and -server ship. Re-pin these to the published versions at that
|
|
1201
|
+
// point — test/versions.test.ts fails the moment they drift from the workspace's own versions.
|
|
1202
|
+
'artube-bridge': '^0.1.0',
|
|
1203
|
+
'artube-server': '^0.1.0',
|
|
997
1204
|
};
|
|
998
1205
|
async function main() {
|
|
999
1206
|
const seed = seedFromArgv(argv.slice(2));
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sources":["../src/answers.ts","../src/prompts.ts","../src/codegen/gameSpec.ts","../src/codegen/claudeMd.ts","../src/codegen/packageJson.ts","../src/codegen/gameScene.ts","../src/codegen/reelConfig.ts","../src/codegen/spinLogic.ts","../src/codegen/stakeAdapter.ts","../src/codegen/mainTs.ts","../src/codegen/introScene.ts","../src/codegen/normalize.ts","../src/codegen/schema.ts","../src/codegen/mathConfig.ts","../src/codegen/i18nTs.ts","../src/generate.ts","../src/cli.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sources":["../src/answers.ts","../src/prompts.ts","../src/codegen/gameSpec.ts","../src/codegen/claudeMd.ts","../src/codegen/packageJson.ts","../src/codegen/gameScene.ts","../src/codegen/reelConfig.ts","../src/codegen/spinLogic.ts","../src/codegen/stakeAdapter.ts","../src/codegen/mainTs.ts","../src/codegen/introScene.ts","../src/codegen/normalize.ts","../src/codegen/schema.ts","../src/codegen/mathConfig.ts","../src/codegen/i18nTs.ts","../src/generate.ts","../src/cli.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/template/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Generated with `npm create @energy8platform/slot`. Built on @energy8platform gam
|
|
|
8
8
|
- Edit `src/game.spec.ts` (symbols/paytable/bet levels/actions) and `src/game/script.spin` (math).
|
|
9
9
|
- Swap placeholder art in `public/assets/` (see NAMING.md) and wire it in `src/slot/symbols.ts`.
|
|
10
10
|
|
|
11
|
-
## Verify
|
|
11
|
+
${artube}## Verify
|
|
12
12
|
- `npm run typecheck`
|
|
13
13
|
- `npm run smoke` — proves spec → export artifacts
|
|
14
14
|
|
package/template/_gitignore
CHANGED
package/template/vite.config.ts
CHANGED
|
@@ -6,28 +6,86 @@ import { reelDevtoolsPlugin } from '@energy8platform/game-engine/harness';
|
|
|
6
6
|
const target = process.env.BUILD_TARGET;
|
|
7
7
|
const isStake = target === 'stake';
|
|
8
8
|
const isHarness = target === 'stake-harness';
|
|
9
|
+
const isArtube = target === 'artube';
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
// `artubePlugin` is ONE call site and both halves of the Artube target.
|
|
12
|
+
//
|
|
13
|
+
// DEV (`apply: 'serve'`) — `npm run dev:artube` is ONE command. The plugin starts the game's own
|
|
14
|
+
// backend (`@energy8platform/artube-server`) as a child of the dev server — on a free port it picks
|
|
15
|
+
// itself, waiting until the backend actually serves — and points the `/api` proxy at it. In
|
|
16
|
+
// production Artube serves the game and its backend on ONE origin split by path (`/api/**` →
|
|
17
|
+
// backend) and the bridge derives its API base from the page's origin, so proxying `/api` keeps dev
|
|
18
|
+
// the same shape.
|
|
19
|
+
//
|
|
20
|
+
// BUILD (`apply: 'build'`) — `npm run build:artube` emits `dist-artube-server/`: the deployable
|
|
21
|
+
// backend, with THIS game's `.spin` copied into it byte-for-byte, a plain-JS entry point, a
|
|
22
|
+
// `package.json` and a `Dockerfile`. The plugin already knows the spin path (it hands it to the dev
|
|
23
|
+
// backend above), so it is the one place that cannot ship the frontend against one version of the
|
|
24
|
+
// math and the backend against another. `docker build` the directory as-is, or commit it into the
|
|
25
|
+
// server repo; see its README.
|
|
26
|
+
//
|
|
27
|
+
// Escape hatch: `ARTUBE_BACKEND=http://localhost:8080 npm run dev:artube` proxies at a backend you
|
|
28
|
+
// run yourself (debugging the server in an IDE), and starts nothing.
|
|
29
|
+
//
|
|
30
|
+
// `artubePartnerLoader` is Artube's OWN branded loading screen. It injects its markup into
|
|
31
|
+
// index.html, so the loader is painted before this game's bundle is even fetched — the property
|
|
32
|
+
// no JS-mounted preloader can have. It covers exactly that gap: `src/main.ts` hands the engine the
|
|
33
|
+
// matching controller, and the engine dismisses Artube's screen the moment its own loading screen
|
|
34
|
+
// has painted its first frame. Everything after that frame is the same on every target.
|
|
35
|
+
//
|
|
36
|
+
// It is Artube's code VENDORED into `@energy8platform/artube-server` (the Node half) and
|
|
37
|
+
// `@energy8platform/artube-bridge` (the browser half), so a game installs no Artube package, needs
|
|
38
|
+
// no private registry and no token. Both halves of the import below are dev-time Node-side: the
|
|
39
|
+
// dynamic, branch-local form is because `artube-server` is a devDependency an Energy8/Stake-only
|
|
40
|
+
// build must never have to resolve — a static import would make it break every build.
|
|
41
|
+
export default async () => {
|
|
42
|
+
const artube = isArtube ? await import('@energy8platform/artube-server/vite') : null;
|
|
43
|
+
|
|
44
|
+
const plugins = [
|
|
45
|
+
...(artube
|
|
46
|
+
? [
|
|
47
|
+
artube.artubePlugin({ spinPath: './src/game/script.spin' }),
|
|
48
|
+
artube.artubePartnerLoader(),
|
|
49
|
+
]
|
|
50
|
+
: []),
|
|
19
51
|
// The dev harness: a Stake RGS backend + the reel-config sidebar panel.
|
|
20
52
|
...(isHarness
|
|
21
|
-
?
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
53
|
+
? [
|
|
54
|
+
createHarness({
|
|
55
|
+
plugins: [
|
|
56
|
+
stakeRgsPlugin({ config: './math.config.ts', booksDir: 'stake-math' }),
|
|
57
|
+
reelDevtoolsPlugin(),
|
|
58
|
+
],
|
|
59
|
+
}),
|
|
60
|
+
]
|
|
61
|
+
: []),
|
|
62
|
+
];
|
|
63
|
+
|
|
64
|
+
return defineGameConfig({
|
|
65
|
+
base: './',
|
|
66
|
+
// Stake builds and harness run inside the Stake RGS shell — no local DevBridge.
|
|
67
|
+
// The Artube target drops it too, so `npm run dev:artube` develops against the REAL backend
|
|
68
|
+
// (math on the server, /api proxied above) instead of local offline math.
|
|
69
|
+
// What this flag does NOT do: change any production bundle. `devBridgePlugin` is `apply: 'serve'`,
|
|
70
|
+
// so no `vite build` has ever injected the DevBridge bootstrapper — `BUILD_TARGET=artube vite
|
|
71
|
+
// build` and a plain `vite build` emit the same bytes. In production what protects a
|
|
72
|
+
// session-less launch is the host's gate (createSlotGame refuses to start), not this flag.
|
|
73
|
+
devBridge: !isStake && !isHarness && !isArtube,
|
|
74
|
+
devBridgeConfig: './dev.config',
|
|
75
|
+
vite: {
|
|
76
|
+
server: { port: 5173 },
|
|
77
|
+
optimizeDeps: { include: ['pixi.js'] },
|
|
78
|
+
// One folder per target, so no build can silently ship another target's bytes: `dist` (plain),
|
|
79
|
+
// `dist-stake`, `dist-artube`. `build:artube` wipes its folders first so a previous build's
|
|
80
|
+
// stale hashed assets don't ride along to the CDN.
|
|
81
|
+
//
|
|
82
|
+
// CONSEQUENCE: Artube's CI pipeline deploys the repo's `dist` folder (their hosting/devops
|
|
83
|
+
// docs). A game built with `build:artube` therefore needs that pipeline pointed at
|
|
84
|
+
// `dist-artube` — change the job's artifact path, or copy the folder in CI. That is the
|
|
85
|
+
// accepted trade for keeping the two targets visibly separate.
|
|
86
|
+
...(isStake ? { build: { outDir: 'dist-stake' } } : {}),
|
|
87
|
+
...(isArtube ? { build: { outDir: 'dist-artube' } } : {}),
|
|
88
|
+
plugins,
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
};
|