@energy8platform/create-slot 0.5.7 → 0.6.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/README.md +5 -5
- package/dist/cli.js +143 -108
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/template/README.md +2 -2
- package/template/dev.config.ts +6 -3
- package/template/export.e8.ts +28 -26
- package/template/vite.config.ts +1 -1
package/README.md
CHANGED
|
@@ -15,10 +15,10 @@ It asks a few questions (id, title, mechanic, grid, …) and writes a complete,
|
|
|
15
15
|
|
|
16
16
|
| File | Role |
|
|
17
17
|
|---|---|
|
|
18
|
-
| `src/game.spec.ts` | **Single source of truth.** `defineGame(spec)` derives the
|
|
18
|
+
| `src/game.spec.ts` | **Single source of truth.** `defineGame(spec)` derives the `GameDefinition`, the SpinML prelude (`SPEC`/`SYM`/`PAY_*`), the `modeMap`, the math modes, the paytable, the shell's buy-bonus cards AND the Game Info per-mode table. Edit modes / symbols / bet levels / `rtp` / `maxWin` here. |
|
|
19
19
|
| `src/scenes/GameScene.ts` | The render-only scene: `present(result, ctx)` + optional `onBonusEnter`/`onBonusExit`. The host owns the play loop; the scene never calls play/ack. |
|
|
20
20
|
| `src/scenes/IntroScene.ts` | Tap-to-start splash (skipped on replay). |
|
|
21
|
-
| `src/game/script.
|
|
21
|
+
| `src/game/script.spin` | The game's math logic in SpinML (typed; returns `outcome { win, vars, data }` with a bet-multiplier `win`). See [docs/spinml.md](../../docs/spinml.md). |
|
|
22
22
|
| `src/game/normalize.ts` + `schema.ts` | Map the raw play result → the scene's typed `SpinData`. |
|
|
23
23
|
| `src/stake/adapter.ts` | The Stake book adapter (`createGameAdapter`) — slices a round-book into segments. |
|
|
24
24
|
| `math.config.ts` | Per-mode sim + curate tuning for the math pipeline (independent of the spec's declared rtp/maxWin). |
|
|
@@ -29,7 +29,7 @@ It asks a few questions (id, title, mechanic, grid, …) and writes a complete,
|
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
31
|
npm install
|
|
32
|
-
npm run dev # local dev via Energy8 DevBridge (
|
|
32
|
+
npm run dev # local dev via Energy8 DevBridge (e8-server + .spin, hot reload)
|
|
33
33
|
npm run stake # Stake dev harness: iframe wrapper + dev-RGS backed by curated books
|
|
34
34
|
npm run math:pool # Stage A — honest large simulation (the pool)
|
|
35
35
|
npm run math:curate # Stage B — compress into the publishable stake-math/ bundle
|
|
@@ -38,11 +38,11 @@ npm run build:stake # the Stake frontend build → dist-stake/
|
|
|
38
38
|
|
|
39
39
|
The framework handles the Stake integration end-to-end (RGS bridge, shell, play loop, bonus
|
|
40
40
|
segment-drain, resume, autoplay, social mode, jurisdiction, money formatting, the math pipeline).
|
|
41
|
-
You write the spec, the
|
|
41
|
+
You write the spec, the SpinML math, and the rendering — see the generated `CLAUDE.md` for the full map.
|
|
42
42
|
|
|
43
43
|
## Related packages
|
|
44
44
|
|
|
45
45
|
- `@energy8platform/game-engine` — the PixiJS engine + host the game runs on.
|
|
46
|
-
- `@energy8platform/platform-core` — renderer-agnostic platform (
|
|
46
|
+
- `@energy8platform/platform-core` — renderer-agnostic platform (SpinML runtime, SDK session, DevBridge).
|
|
47
47
|
- `@energy8platform/stake-kit` — the Stake book adapter + dev harness used by the scaffold.
|
|
48
48
|
- `@energy8platform/stake-math-tools` — the `e8-math` simulation + curation pipeline.
|
package/dist/cli.js
CHANGED
|
@@ -190,7 +190,7 @@ pipeline. This repo contains only the GAME: its spec, math logic, rendering, and
|
|
|
190
190
|
|
|
191
191
|
## Single source of truth: \`src/game.spec.ts\`
|
|
192
192
|
|
|
193
|
-
\`defineGame(spec)\` derives everything from one file: the
|
|
193
|
+
\`defineGame(spec)\` derives everything from one file: the \`GameDefinition\`, the .spin prelude, the \`modeMap\`
|
|
194
194
|
(action → Stake mode), the math modes, the paytable, AND the shell's buy-bonus cards + Game Info
|
|
195
195
|
per-mode table. **Edit modes/symbols/bet levels/RTP/maxWin there — never duplicate them elsewhere.**
|
|
196
196
|
Each \`actions[key]\` carries \`role\` (base/feature/buy/free), \`cost\`, \`rtp\`, \`maxWin\`, \`title\`,
|
|
@@ -221,7 +221,7 @@ The reels are the configurable **ReelSystem** (see \`src/slot/reelConfig.ts\`);
|
|
|
221
221
|
## Commands
|
|
222
222
|
|
|
223
223
|
\`\`\`bash
|
|
224
|
-
npm run dev # local dev via Energy8 DevBridge (
|
|
224
|
+
npm run dev # local dev via Energy8 DevBridge (e8-server runs script.spin)
|
|
225
225
|
npm run stake # the Stake dev harness — iframe wrapper + dev-RGS backed by curated books
|
|
226
226
|
npm run build:stake # the Stake frontend build → dist-stake/ (base './', no DevBridge)
|
|
227
227
|
npm run math:pool # Stage A — honest large simulation (the pool); see math.config.ts
|
|
@@ -277,6 +277,7 @@ function genPackageJson(a, v) {
|
|
|
277
277
|
smoke: 'tsx smoke.ts',
|
|
278
278
|
'export:e8': 'tsx export.e8.ts',
|
|
279
279
|
sim: 'e8-math sim --config ./math.config.ts',
|
|
280
|
+
'math:smoke': 'e8-math sim --config ./math.config.ts --iterations 2000',
|
|
280
281
|
pool: 'e8-math pool --config ./math.config.ts',
|
|
281
282
|
curate: 'e8-math curate --config ./math.config.ts',
|
|
282
283
|
math: 'e8-math all --config ./math.config.ts',
|
|
@@ -485,103 +486,136 @@ export const reelConfig = resolveReelConfig({
|
|
|
485
486
|
`;
|
|
486
487
|
}
|
|
487
488
|
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
489
|
+
/**
|
|
490
|
+
* Skeleton `script.spin` — the SpinML math the scaffold starts from.
|
|
491
|
+
* The spec prelude (SPEC / SYMBOLS / SYM / PAY_*) is prepended by
|
|
492
|
+
* buildSpinScript, so this file only holds the game's own declarations
|
|
493
|
+
* and `execute`. It compiles and plays out of the box: uniform reels,
|
|
494
|
+
* placeholder pays, free spins with a small retrigger.
|
|
495
|
+
*/
|
|
496
|
+
function genSpinLogic(a) {
|
|
497
|
+
return `-- Game math (SpinML). The spec-derived prelude (SPEC/SYMBOLS/SYM/PAY_*)
|
|
498
|
+
-- is prepended by buildSpinScript — tune weights here, keep pays in game.spec.ts.
|
|
499
|
+
-- Contract: execute returns outcome{win, vars, data}; sessions open/extend/end
|
|
500
|
+
-- from the DECLARED transitions below (no manual session management).
|
|
501
|
+
|
|
502
|
+
record Vars {
|
|
503
|
+
free_spins_awarded: int
|
|
504
|
+
retrigger_spins: int
|
|
505
|
+
max_win_reached: bool
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
record Feat {
|
|
509
|
+
buy: int
|
|
510
|
+
ante: int
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
record Data {
|
|
514
|
+
stage: str
|
|
515
|
+
grid: [[int]]
|
|
516
|
+
win: float
|
|
517
|
+
free_spins_awarded: int
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
game "${a.id}" {
|
|
521
|
+
bet_levels = [0.01, 0.1, 0.2, 0.5, 1.0, 2.0, 5.0, 10.0, 20.0, 50.0, 100.0, 200.0, 500.0, 1000.0, 10000.0, 100000.0, 1000000.0]
|
|
522
|
+
max_win = 5000.0
|
|
523
|
+
vars = Vars
|
|
524
|
+
feature = Feat
|
|
525
|
+
data = Data
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
action spin {
|
|
529
|
+
stage = base_game
|
|
530
|
+
cost = 1.0
|
|
531
|
+
opens = free_spin count free_spins_awarded
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
action ante {
|
|
535
|
+
stage = base_game
|
|
536
|
+
cost = 1.5
|
|
537
|
+
feature { ante = 1 }
|
|
538
|
+
opens = free_spin count free_spins_awarded
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
action buy_bonus {
|
|
542
|
+
stage = buy_bonus
|
|
543
|
+
cost = 100.0
|
|
544
|
+
feature { buy = 1 }
|
|
545
|
+
opens = free_spin count free_spins_awarded
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
action free_spin {
|
|
549
|
+
stage = free_spins
|
|
550
|
+
cost = 1.0
|
|
551
|
+
session = true
|
|
552
|
+
extends = retrigger_spins
|
|
553
|
+
ends when max_win_reached
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
-- равновероятная сетка-заглушка: замени на веса своего механика
|
|
557
|
+
fn fill_grid(c: ctx, g: [int; 64]) {
|
|
558
|
+
for i in 0..SPEC.cells {
|
|
559
|
+
g[i] = rng(c, 1, N_SYMBOLS)
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
fn grid_out(c: ctx, g: [int; 64]) -> [[int]] {
|
|
564
|
+
let rowsv: [[int]] = list()
|
|
565
|
+
for col in 0..SPEC.cols {
|
|
566
|
+
let rowv: [int] = list()
|
|
567
|
+
for row in 0..SPEC.rows {
|
|
568
|
+
push(rowv, g[col * SPEC.rows + row])
|
|
569
|
+
}
|
|
570
|
+
push(rowsv, rowv)
|
|
571
|
+
}
|
|
572
|
+
return rowsv
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
fn execute(c: ctx, v: Vars) -> outcome {
|
|
576
|
+
let g = [0; 64]
|
|
577
|
+
fill_grid(c, g)
|
|
578
|
+
|
|
579
|
+
-- плейсхолдерная математика: замени на свой механик (${a.mechanic})
|
|
580
|
+
if action_is(c, "buy_bonus") {
|
|
581
|
+
return outcome {
|
|
582
|
+
win: 0.0,
|
|
583
|
+
vars: Vars { free_spins_awarded: 10, retrigger_spins: 0, max_win_reached: false },
|
|
584
|
+
data: Data { stage: "buy_bonus", grid: grid_out(c, g), win: 0.0, free_spins_awarded: 10 },
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
if action_is(c, "free_spin") {
|
|
589
|
+
let win = 0.0
|
|
590
|
+
let retrigger = 0
|
|
591
|
+
let roll = rng(c, 1, 1000)
|
|
592
|
+
if roll <= 300 { win = to_float(rng(c, 1, 20)) / 2.0 }
|
|
593
|
+
if roll <= 50 { retrigger = 2 }
|
|
594
|
+
return outcome {
|
|
595
|
+
win: win,
|
|
596
|
+
vars: Vars {
|
|
597
|
+
free_spins_awarded: 0,
|
|
598
|
+
retrigger_spins: retrigger,
|
|
599
|
+
max_win_reached: win >= SPEC.max_win,
|
|
600
|
+
},
|
|
601
|
+
data: Data { stage: "free_spins", grid: grid_out(c, g), win: win, free_spins_awarded: 0 },
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
-- base game: spin и ante (у ante выше шанс фриспинов)
|
|
606
|
+
let win = 0.0
|
|
607
|
+
let fs = 0
|
|
608
|
+
let fs_th = 20
|
|
609
|
+
if action_is(c, "ante") { fs_th = 30 }
|
|
610
|
+
let roll = rng(c, 1, 1000)
|
|
611
|
+
if roll <= 200 { win = to_float(rng(c, 1, 10)) / 2.0 }
|
|
612
|
+
if roll <= fs_th { fs = 10 }
|
|
613
|
+
return outcome {
|
|
614
|
+
win: win,
|
|
615
|
+
vars: Vars { free_spins_awarded: fs, retrigger_spins: 0, max_win_reached: false },
|
|
616
|
+
data: Data { stage: "base_game", grid: grid_out(c, g), win: win, free_spins_awarded: fs },
|
|
617
|
+
}
|
|
618
|
+
}
|
|
585
619
|
`;
|
|
586
620
|
}
|
|
587
621
|
|
|
@@ -742,7 +776,7 @@ import type { ${cascade ? 'CascadeStepData' : 'CellData'} } from '@energy8platfo
|
|
|
742
776
|
import { deriveArrayFields, coerceLuaArrays } from '@energy8platform/stake-kit';
|
|
743
777
|
import { spinSchema, type SpinDataRaw } from './schema';
|
|
744
778
|
|
|
745
|
-
/** The game's typed play result. Extend with any fields your script.
|
|
779
|
+
/** The game's typed play result. Extend with any fields your script.spin returns. */
|
|
746
780
|
export interface SpinData extends SlotSpinResultBase {
|
|
747
781
|
${dataShape}
|
|
748
782
|
}
|
|
@@ -777,7 +811,7 @@ function genSchema(a) {
|
|
|
777
811
|
wins: z.array(z.object({}).passthrough()).optional(),`;
|
|
778
812
|
return `import { z } from 'zod';
|
|
779
813
|
|
|
780
|
-
/** The inner
|
|
814
|
+
/** The inner "data" value your script.spin returns (the engine nests it under result.data).
|
|
781
815
|
* Edit these fields to match your math. Array fields MUST stay z.array(...) so Lua {} coerces to []. */
|
|
782
816
|
export const spinSchema = z.object({
|
|
783
817
|
total_win: z.number().optional(),
|
|
@@ -791,16 +825,17 @@ export type SpinDataRaw = z.infer<typeof spinSchema>;
|
|
|
791
825
|
|
|
792
826
|
function genMathConfig(_a) {
|
|
793
827
|
return `import { readFileSync } from 'node:fs';
|
|
794
|
-
import {
|
|
828
|
+
import { buildSpinScript } from '@energy8platform/platform-core/game-spec';
|
|
795
829
|
import { model } from './src/game.spec';
|
|
796
830
|
import type { MathConfig } from '@energy8platform/stake-math-tools';
|
|
797
831
|
|
|
798
|
-
// node-only (the e8-math CLI runs in node) — reads the
|
|
799
|
-
const logic = readFileSync(new URL('./src/game/script.
|
|
832
|
+
// node-only (the e8-math CLI runs in node) — reads the math via node:fs, not Vite raw imports.
|
|
833
|
+
const logic = readFileSync(new URL('./src/game/script.spin', import.meta.url), 'utf8');
|
|
800
834
|
|
|
801
835
|
export default {
|
|
802
836
|
model,
|
|
803
|
-
|
|
837
|
+
runtime: 'spin',
|
|
838
|
+
luaScript: buildSpinScript(model, logic),
|
|
804
839
|
// One block per Stake mode key. Tune sim iterations + curate targets per mode.
|
|
805
840
|
// Missing modes use seeded defaults (see resolveModes in stake-math-tools).
|
|
806
841
|
modes: {
|
|
@@ -918,7 +953,7 @@ async function generate(a, targetDir, versions) {
|
|
|
918
953
|
writeFileSync(join(targetDir, 'src/i18n.ts'), genI18nTs(a));
|
|
919
954
|
writeFileSync(join(targetDir, 'src/main.ts'), genMainTs(a));
|
|
920
955
|
writeFileSync(join(targetDir, 'src/scenes/IntroScene.ts'), genIntroScene(a));
|
|
921
|
-
writeFileSync(join(targetDir, 'src/game/script.
|
|
956
|
+
writeFileSync(join(targetDir, 'src/game/script.spin'), genSpinLogic(a));
|
|
922
957
|
writeFileSync(join(targetDir, 'src/game/normalize.ts'), genNormalize(a));
|
|
923
958
|
writeFileSync(join(targetDir, 'src/game/schema.ts'), genSchema(a));
|
|
924
959
|
if (a.stake) {
|
|
@@ -934,8 +969,8 @@ async function generate(a, targetDir, versions) {
|
|
|
934
969
|
// Dependency versions written into a scaffolded game's package.json. Keep in lock-step with the
|
|
935
970
|
// published @energy8platform/* versions (a create-slot test asserts these match the workspace).
|
|
936
971
|
const PUBLISHED = {
|
|
937
|
-
'platform-core': '^0.
|
|
938
|
-
'stake-math-tools': '^0.
|
|
972
|
+
'platform-core': '^0.29.0', 'game-engine': '^0.28.0', 'stake-kit': '^0.5.0', 'stake-bridge': '^0.5.0',
|
|
973
|
+
'stake-math-tools': '^0.9.0', 'harness': '^0.3.0',
|
|
939
974
|
};
|
|
940
975
|
async function main() {
|
|
941
976
|
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/luaLogic.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
|
@@ -4,8 +4,8 @@ Generated with `npm create @energy8platform/slot`. Built on @energy8platform gam
|
|
|
4
4
|
|
|
5
5
|
## Develop
|
|
6
6
|
- `npm install`
|
|
7
|
-
- `npm run dev` — runs the game in a browser (Vite +
|
|
8
|
-
- Edit `src/game.spec.ts` (symbols/paytable/bet levels/actions) and `src/game/script.
|
|
7
|
+
- `npm run dev` — runs the game in a browser (Vite + DevBridge; math served by e8-server with `.spin` hot reload)
|
|
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
11
|
## Verify
|
package/template/dev.config.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { buildSpinScript } from '@energy8platform/platform-core/game-spec';
|
|
2
2
|
import { model } from './src/game.spec';
|
|
3
|
-
|
|
3
|
+
// Математика — SpinML: в деве раунды ведёт e8-server (vite-плагин spinPlugin
|
|
4
|
+
// из defineGameConfig). Для клиентского DevBridge luaScript — лишь маркер
|
|
5
|
+
// «играть через POST /__lua-play»; исполняет всегда сервер.
|
|
6
|
+
import logic from './src/game/script.spin?raw';
|
|
4
7
|
|
|
5
8
|
export default {
|
|
6
9
|
balance: 100000,
|
|
@@ -8,6 +11,6 @@ export default {
|
|
|
8
11
|
networkDelay: 80,
|
|
9
12
|
debug: true,
|
|
10
13
|
gameDefinition: model.gameDefinition,
|
|
11
|
-
luaScript:
|
|
14
|
+
luaScript: buildSpinScript(model, logic),
|
|
12
15
|
luaSeed: 12345,
|
|
13
16
|
};
|
package/template/export.e8.ts
CHANGED
|
@@ -1,40 +1,42 @@
|
|
|
1
1
|
// export.e8.ts — generate the E8 platform deliverables from the single game spec.
|
|
2
2
|
//
|
|
3
|
-
// npm run export:e8 → dist/e8/{config.json, script.
|
|
3
|
+
// npm run export:e8 → dist/e8/{config.json, script.spin}
|
|
4
4
|
//
|
|
5
|
-
// config.json is the GameDefinition (
|
|
6
|
-
// (auto-generated prelude ⧺ your script.
|
|
7
|
-
// and games/{id}/script.
|
|
8
|
-
|
|
5
|
+
// config.json is the GameDefinition (engine_mode=spin); script.spin is the
|
|
6
|
+
// self-contained SpinML (auto-generated prelude ⧺ your script.spin). Upload to
|
|
7
|
+
// S3 as games/{id}/config.json and games/{id}/script.spin — e8-server picks the
|
|
8
|
+
// script up from its --games-s3 prefix; the platform routes by engine_mode.
|
|
9
|
+
import { writeFileSync, mkdirSync, readFileSync, rmSync } from 'node:fs';
|
|
9
10
|
import { resolve } from 'node:path';
|
|
11
|
+
import { tmpdir } from 'node:os';
|
|
12
|
+
import { execFileSync } from 'node:child_process';
|
|
10
13
|
import { fileURLToPath } from 'node:url';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
14
|
+
import { exportGameSpin } from '@energy8platform/platform-core/game-spec';
|
|
15
|
+
import { findE8Binary } from '@energy8platform/platform-core/simulation';
|
|
13
16
|
import { spec } from './src/game.spec';
|
|
14
17
|
|
|
15
18
|
const root = fileURLToPath(new URL('.', import.meta.url));
|
|
16
|
-
const logic = readFileSync(resolve(root, 'src/game/script.
|
|
19
|
+
const logic = readFileSync(resolve(root, 'src/game/script.spin'), 'utf8');
|
|
17
20
|
|
|
18
|
-
//
|
|
19
|
-
const out =
|
|
20
|
-
const config = JSON.parse(out['config.json']);
|
|
21
|
+
// exportGameSpin runs structural validation (well-formed config, `fn execute`).
|
|
22
|
+
const out = exportGameSpin(spec, { logicSpin: logic });
|
|
21
23
|
|
|
22
|
-
// Boot check: the exported script must
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
// Boot check: the exported script must typecheck+compile in the e8 engine.
|
|
25
|
+
const e8 = findE8Binary();
|
|
26
|
+
if (e8) {
|
|
27
|
+
const tmp = resolve(tmpdir(), `export-${process.pid}.spin`);
|
|
28
|
+
writeFileSync(tmp, out['script.spin']);
|
|
27
29
|
try {
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
throw new Error(`E8 export: action "${action}" threw on a clean boot — ${(e as Error).message}`);
|
|
30
|
+
execFileSync(e8, ['check', tmp], { stdio: 'inherit' });
|
|
31
|
+
} finally {
|
|
32
|
+
rmSync(tmp, { force: true });
|
|
32
33
|
}
|
|
34
|
+
} else {
|
|
35
|
+
console.warn('[export] e8 binary not found — skipping compile check (npm install fetches it)');
|
|
33
36
|
}
|
|
34
|
-
engine.destroy();
|
|
35
37
|
|
|
36
|
-
const
|
|
37
|
-
mkdirSync(
|
|
38
|
-
writeFileSync(resolve(
|
|
39
|
-
writeFileSync(resolve(
|
|
40
|
-
console.log(`E8
|
|
38
|
+
const dir = resolve(root, 'dist/e8');
|
|
39
|
+
mkdirSync(dir, { recursive: true });
|
|
40
|
+
writeFileSync(resolve(dir, 'config.json'), out['config.json']);
|
|
41
|
+
writeFileSync(resolve(dir, 'script.spin'), out['script.spin']);
|
|
42
|
+
console.log(`E8 deliverables written to ${dir}: config.json + script.spin`);
|
package/template/vite.config.ts
CHANGED
|
@@ -14,7 +14,7 @@ export default defineGameConfig({
|
|
|
14
14
|
devBridgeConfig: './dev.config',
|
|
15
15
|
vite: {
|
|
16
16
|
server: { port: 5173 },
|
|
17
|
-
optimizeDeps: { include: ['pixi.js']
|
|
17
|
+
optimizeDeps: { include: ['pixi.js'] },
|
|
18
18
|
...(isStake ? { build: { outDir: 'dist-stake' } } : {}),
|
|
19
19
|
// The dev harness: a Stake RGS backend + the reel-config sidebar panel.
|
|
20
20
|
...(isHarness
|