@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 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 Lua game definition, 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. |
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.logic.lua` | The game's math logic (returns a bet-multiplier `total_win`). |
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 (config + Lua)
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 Lua math, and the rendering — see the generated `CLAUDE.md` for the full map.
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 (Lua engine, shell, SDK session).
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 Lua \`GameDefinition\`, the \`modeMap\`
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 (config + Lua)
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
- function genLuaLogic(a) {
489
- const cascade = a.cascades === true;
490
- const ret = cascade
491
- ? ` return {
492
- total_win = win, -- bet-multiplier; the platform multiplies by the actual bet
493
- cascades = {}, -- TODO: emit cascade steps { winning, removed, new, grid }
494
- free_spins = free_spins_result,
495
- -- The engine reads these VARIABLES (not the nested free_spins table) to open / retrigger the
496
- -- free-spins SESSION. Without them, free_spin would fail "requires an active session".
497
- variables = { free_spins_awarded = fs_awarded, retrigger_spins = retrigger_awarded },
498
- }`
499
- : ` return {
500
- total_win = win, -- bet-multiplier
501
- matrix = grid, -- 2D array of SYM.* ids
502
- wins = {}, -- TODO: emit line/way wins
503
- free_spins = free_spins_result,
504
- -- The engine reads these VARIABLES (not the nested free_spins table) to open / retrigger the
505
- -- free-spins SESSION. Without them, free_spin would fail "requires an active session".
506
- variables = { free_spins_awarded = fs_awarded, retrigger_spins = retrigger_awarded },
507
- }`;
508
- return `-- Game logic. The spec-derived prelude (SPEC/SYMBOLS/SYM/PAYTABLE) is injected above this file.
509
- -- Reel weights / RTP tuning live here. Implement your mechanic; return a bet-multiplier in total_win.
510
- function execute(state)
511
- -- state.action: 'spin' | 'ante' | 'buy_bonus' | 'free_spin'
512
- -- state.bet, state.action_config.feature_data
513
- local action = state.action or 'spin'
514
- local grid = {}
515
- for c = 1, SPEC.cols do
516
- grid[c] = {}
517
- for r = 1, SPEC.rows do
518
- grid[c][r] = engine.random(1, #SYMBOLS)
519
- end
520
- end
521
-
522
- -- Placeholder random payout (replace with your real mechanic).
523
- local win = 0
524
- local free_spins_result = nil
525
- local fs_awarded = 0 -- engine VARIABLE: spins this round awards (opens the session)
526
- local retrigger_awarded = 0 -- engine VARIABLE: extra spins a free_spin retrigger awards
527
-
528
- if action == 'buy_bonus' then
529
- -- Player bought free spins: always award them, no base win.
530
- fs_awarded = 10
531
- free_spins_result = { awarded = fs_awarded, total = fs_awarded }
532
-
533
- elseif action == 'free_spin' then
534
- -- Free-spin round: random payout + small retrigger chance (~5%).
535
- local roll = engine.random(1, 1000)
536
- if roll <= 400 then -- ~40% small win (higher hit-rate in bonus)
537
- win = engine.random(1, 8) * 0.3
538
- elseif roll <= 440 then -- ~4% medium win
539
- win = engine.random(10, 50)
540
- elseif roll <= 442 then -- ~0.2% large win
541
- win = engine.random(100, 800)
542
- end
543
- -- Retrigger: ~5% chance to award extra spins (read via retrigger_spins).
544
- local retrigger_roll = engine.random(1, 100)
545
- if retrigger_roll <= 5 then
546
- retrigger_awarded = 5
547
- free_spins_result = { awarded = retrigger_awarded, total = retrigger_awarded }
548
- end
549
-
550
- elseif action == 'ante' then
551
- -- Ante (paid-boost) spin: same payouts as base but higher free-spins trigger (~5%).
552
- local roll = engine.random(1, 1000)
553
- if roll <= 250 then -- ~25% small win
554
- win = engine.random(1, 5) * 0.2
555
- elseif roll <= 270 then -- ~2% medium win
556
- win = engine.random(5, 30)
557
- elseif roll <= 272 then -- ~0.2% large win
558
- win = engine.random(50, 500)
559
- end
560
- local fs_roll = engine.random(1, 100)
561
- if fs_roll <= 5 then -- ~5% free-spins trigger
562
- fs_awarded = 8
563
- free_spins_result = { awarded = fs_awarded, total = fs_awarded }
564
- end
565
-
566
- else
567
- -- Base spin ('spin'): random payout + small free-spins trigger (~2%).
568
- local roll = engine.random(1, 1000)
569
- if roll <= 250 then -- ~25% small win
570
- win = engine.random(1, 5) * 0.2
571
- elseif roll <= 270 then -- ~2% medium win
572
- win = engine.random(5, 30)
573
- elseif roll <= 272 then -- ~0.2% large win
574
- win = engine.random(50, 500)
575
- end
576
- local fs_roll = engine.random(1, 100)
577
- if fs_roll <= 2 then -- ~2% free-spins trigger
578
- fs_awarded = 8
579
- free_spins_result = { awarded = fs_awarded, total = fs_awarded }
580
- end
581
- end
582
-
583
- ${ret}
584
- end
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.logic.lua returns. */
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 Lua "data" table your script.logic.lua returns (the engine nests it under result.data).
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 { buildLuaScript } from '@energy8platform/platform-core/game-spec';
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 Lua via node:fs, not Vite raw imports.
799
- const logic = readFileSync(new URL('./src/game/script.logic.lua', import.meta.url), 'utf8');
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
- luaScript: buildLuaScript(model, logic),
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.logic.lua'), genLuaLogic(a));
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.28.3', 'game-engine': '^0.27.1', 'stake-kit': '^0.4.3', 'stake-bridge': '^0.4.2',
938
- 'stake-math-tools': '^0.8.1', 'harness': '^0.3.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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@energy8platform/create-slot",
3
- "version": "0.5.7",
3
+ "version": "0.6.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "create-slot": "dist/cli.js"
@@ -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 + in-process DevBridge running your Lua)
8
- - Edit `src/game.spec.ts` (symbols/paytable/bet levels/actions) and `src/game/script.logic.lua` (math).
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
@@ -1,6 +1,9 @@
1
- import { buildLuaScript } from '@energy8platform/platform-core/game-spec';
1
+ import { buildSpinScript } from '@energy8platform/platform-core/game-spec';
2
2
  import { model } from './src/game.spec';
3
- import logic from './src/game/script.logic.lua?raw';
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: buildLuaScript(model, logic),
14
+ luaScript: buildSpinScript(model, logic),
12
15
  luaSeed: 12345,
13
16
  };
@@ -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.lua}
3
+ // npm run export:e8 → dist/e8/{config.json, script.spin}
4
4
  //
5
- // config.json is the GameDefinition (platform fields only); script.lua is the self-contained Lua
6
- // (auto-generated prelude ⧺ your script.logic.lua). Upload them to S3 as games/{id}/config.json
7
- // and games/{id}/script.lua (see casino_platform game_development_guide.md).
8
- import { writeFileSync, mkdirSync, readFileSync } from 'node:fs';
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 { exportGame } from '@energy8platform/platform-core/game-spec';
12
- import { LuaEngine } from '@energy8platform/platform-core/lua';
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.logic.lua'), 'utf8');
19
+ const logic = readFileSync(resolve(root, 'src/game/script.spin'), 'utf8');
17
20
 
18
- // exportGame runs structural validation (well-formed config, script defines execute()).
19
- const out = exportGame(spec, { logicLua: logic });
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 load in a clean engine and resolve every non-session action
23
- // (free spins need a live session, so they're exercised by the base spin that opens one).
24
- const engine = new LuaEngine({ script: out['script.lua'], gameDefinition: config, seed: 1 });
25
- for (const [action, def] of Object.entries(config.actions as Record<string, { requires_session?: boolean }>)) {
26
- if (def.requires_session) continue;
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
- engine.execute({ action, bet: spec.defaultBet ?? spec.betLevels[0] });
29
- } catch (e) {
30
- engine.destroy();
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 outDir = resolve(root, 'dist/e8');
37
- mkdirSync(outDir, { recursive: true });
38
- writeFileSync(resolve(outDir, 'config.json'), out['config.json']);
39
- writeFileSync(resolve(outDir, 'script.lua'), out['script.lua']);
40
- console.log(`E8 export OK dist/e8/{config.json, script.lua} (id=${config.id}, script_path=${config.script_path})`);
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`);
@@ -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'], exclude: ['fengari'] },
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