@energy8platform/game-engine 0.15.2 → 0.17.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.
Files changed (55) hide show
  1. package/README.md +22 -12
  2. package/dist/assets.d.ts +2 -14
  3. package/dist/core.cjs.js +16 -201
  4. package/dist/core.cjs.js.map +1 -1
  5. package/dist/core.d.ts +4 -35
  6. package/dist/core.esm.js +12 -197
  7. package/dist/core.esm.js.map +1 -1
  8. package/dist/debug.cjs.js +5 -233
  9. package/dist/debug.cjs.js.map +1 -1
  10. package/dist/debug.d.ts +2 -140
  11. package/dist/debug.esm.js +2 -233
  12. package/dist/debug.esm.js.map +1 -1
  13. package/dist/index.cjs.js +21 -432
  14. package/dist/index.cjs.js.map +1 -1
  15. package/dist/index.d.ts +10 -195
  16. package/dist/index.esm.js +14 -429
  17. package/dist/index.esm.js.map +1 -1
  18. package/dist/lua.cjs.js +7 -1493
  19. package/dist/lua.cjs.js.map +1 -1
  20. package/dist/lua.d.ts +1 -403
  21. package/dist/lua.esm.js +1 -1483
  22. package/dist/lua.esm.js.map +1 -1
  23. package/dist/react.cjs.js.map +1 -1
  24. package/dist/react.d.ts +4 -35
  25. package/dist/react.esm.js.map +1 -1
  26. package/dist/vite.cjs.js +19 -175
  27. package/dist/vite.cjs.js.map +1 -1
  28. package/dist/vite.d.ts +8 -3
  29. package/dist/vite.esm.js +10 -173
  30. package/dist/vite.esm.js.map +1 -1
  31. package/package.json +6 -16
  32. package/src/core/GameApplication.ts +14 -18
  33. package/src/debug/index.ts +4 -2
  34. package/src/index.ts +3 -3
  35. package/src/loading/LoadingScene.ts +1 -1
  36. package/src/loading/index.ts +11 -2
  37. package/src/lua/index.ts +3 -31
  38. package/src/types.ts +16 -41
  39. package/src/vite/index.ts +13 -196
  40. package/bin/simulate.ts +0 -139
  41. package/scripts/install-simulate.mjs +0 -101
  42. package/src/debug/DevBridge.ts +0 -305
  43. package/src/loading/CSSPreloader.ts +0 -129
  44. package/src/loading/logo.ts +0 -95
  45. package/src/lua/ActionRouter.ts +0 -132
  46. package/src/lua/LuaEngine.ts +0 -412
  47. package/src/lua/LuaEngineAPI.ts +0 -314
  48. package/src/lua/NativeSimulationRunner.ts +0 -367
  49. package/src/lua/ParallelSimulationRunner.ts +0 -156
  50. package/src/lua/PersistentState.ts +0 -80
  51. package/src/lua/SessionManager.ts +0 -227
  52. package/src/lua/SimulationRunner.ts +0 -192
  53. package/src/lua/SimulationWorker.ts +0 -44
  54. package/src/lua/fengari.d.ts +0 -10
  55. package/src/lua/types.ts +0 -149
package/dist/debug.d.ts CHANGED
@@ -1,143 +1,6 @@
1
- import { GameConfigData, SessionData, PlayParams, PlayResultData } from '@energy8platform/game-sdk';
1
+ export { DevBridge, DevBridgeConfig, ReplayConfig, ReplayLaunch } from '@energy8platform/platform-core/dev-bridge';
2
2
  import { Application } from 'pixi.js';
3
3
 
4
- interface GameDefinition {
5
- id: string;
6
- type: 'SLOT' | 'TABLE';
7
- actions: Record<string, ActionDefinition>;
8
- bet_levels?: number[] | BetLevelsConfig;
9
- max_win?: MaxWinConfig;
10
- buy_bonus?: BuyBonusConfig;
11
- ante_bet?: AnteBetConfig;
12
- persistent_state?: PersistentStateConfig;
13
- }
14
- interface BetLevelsConfig {
15
- levels?: number[];
16
- min?: number;
17
- max?: number;
18
- }
19
- interface MaxWinConfig {
20
- multiplier?: number;
21
- fixed?: number;
22
- }
23
- interface BuyBonusConfig {
24
- modes: Record<string, BuyBonusMode>;
25
- }
26
- interface BuyBonusMode {
27
- cost_multiplier: number;
28
- /** Distribution of forced scatter counts. Optional — if omitted, Lua script handles bonus setup itself. */
29
- scatter_distribution?: Record<string, number>;
30
- /** Optional description */
31
- description?: string;
32
- }
33
- interface AnteBetConfig {
34
- cost_multiplier: number;
35
- }
36
- interface PersistentStateConfig {
37
- vars: string[];
38
- exposed_vars: string[];
39
- }
40
- interface ActionDefinition {
41
- stage: string;
42
- debit: 'bet' | 'buy_bonus_cost' | 'ante_bet_cost' | 'none';
43
- credit?: 'win' | 'none' | 'defer';
44
- requires_session?: boolean;
45
- buy_bonus_mode?: string;
46
- transitions: TransitionRule[];
47
- input_schema?: Record<string, unknown>;
48
- }
49
- interface TransitionRule {
50
- condition: string;
51
- creates_session?: boolean;
52
- complete_session?: boolean;
53
- credit_override?: 'defer';
54
- next_actions: string[];
55
- session_config?: SessionConfig;
56
- add_spins_var?: string;
57
- }
58
- interface SessionConfig {
59
- total_spins_var: string;
60
- persistent_vars?: string[];
61
- }
62
-
63
- interface DevBridgeConfig {
64
- /** Mock initial balance */
65
- balance?: number;
66
- /** Mock currency */
67
- currency?: string;
68
- /** Game config */
69
- gameConfig?: Partial<GameConfigData>;
70
- /** Base URL for assets (default: '/assets/') */
71
- assetsUrl?: string;
72
- /** Active session to resume (null = no active session) */
73
- session?: SessionData | null;
74
- /** Custom play result handler — return mock result data */
75
- onPlay?: (params: PlayParams) => Partial<PlayResultData>;
76
- /** Simulated network delay in ms */
77
- networkDelay?: number;
78
- /** Enable debug logging */
79
- debug?: boolean;
80
- /** Lua script source code. When set, play requests are routed to the Vite dev server's LuaEngine. */
81
- luaScript?: string;
82
- /** Game definition for Lua engine (actions, transitions, etc.) */
83
- gameDefinition?: GameDefinition;
84
- /** RNG seed for deterministic Lua execution */
85
- luaSeed?: number;
86
- }
87
- /**
88
- * Mock host bridge for local development.
89
- *
90
- * Uses the SDK's `Bridge` class in `devMode` to communicate with
91
- * `CasinoGameSDK` via a shared in-memory `MemoryChannel`, removing
92
- * the need for postMessage and iframes.
93
- *
94
- * When `luaScript` is set, play requests are sent to the Vite dev server
95
- * which runs LuaEngine in Node.js — no fengari in the browser.
96
- *
97
- * @example
98
- * ```ts
99
- * import { DevBridge } from '@energy8platform/game-engine/debug';
100
- *
101
- * const devBridge = new DevBridge({
102
- * balance: 5000,
103
- * currency: 'EUR',
104
- * gameConfig: { id: 'my-slot', type: 'slot', betLevels: [0.2, 0.5, 1, 2] },
105
- * onPlay: ({ action, bet }) => ({
106
- * totalWin: Math.random() > 0.5 ? bet * (Math.random() * 20) : 0,
107
- * data: { matrix: [[1,2,3],[4,5,6],[7,8,9]] },
108
- * }),
109
- * });
110
- * devBridge.start();
111
- * ```
112
- */
113
- declare class DevBridge {
114
- private _config;
115
- private _balance;
116
- private _roundCounter;
117
- private _bridge;
118
- private _useLuaServer;
119
- constructor(config?: DevBridgeConfig);
120
- /** Current mock balance */
121
- get balance(): number;
122
- /** Start listening for SDK messages */
123
- start(): void;
124
- /** Stop listening */
125
- stop(): void;
126
- /** Set mock balance */
127
- setBalance(balance: number): void;
128
- /** Destroy the dev bridge */
129
- destroy(): void;
130
- private handleGameReady;
131
- private handlePlayRequest;
132
- private executeLuaOnServer;
133
- private buildFallbackResult;
134
- private handlePlayAck;
135
- private handleGetBalance;
136
- private handleGetState;
137
- private handleOpenDeposit;
138
- private delayedSend;
139
- }
140
-
141
4
  /**
142
5
  * FPS overlay for debugging performance.
143
6
  *
@@ -169,5 +32,4 @@ declare class FPSOverlay {
169
32
  destroy(): void;
170
33
  }
171
34
 
172
- export { DevBridge, FPSOverlay };
173
- export type { DevBridgeConfig };
35
+ export { FPSOverlay };
package/dist/debug.esm.js CHANGED
@@ -1,237 +1,6 @@
1
- import { Bridge } from '@energy8platform/game-sdk';
1
+ export { DevBridge } from '@energy8platform/platform-core/dev-bridge';
2
2
  import { Container, Text } from 'pixi.js';
3
3
 
4
- const DEFAULT_CONFIG = {
5
- balance: 10000,
6
- currency: 'USD',
7
- gameConfig: {
8
- id: 'dev-game',
9
- type: 'slot',
10
- version: '1.0.0',
11
- viewport: { width: 1920, height: 1080 },
12
- betLevels: [0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50],
13
- },
14
- assetsUrl: '/assets/',
15
- session: null,
16
- onPlay: () => ({}),
17
- networkDelay: 200,
18
- debug: true,
19
- };
20
- /**
21
- * Mock host bridge for local development.
22
- *
23
- * Uses the SDK's `Bridge` class in `devMode` to communicate with
24
- * `CasinoGameSDK` via a shared in-memory `MemoryChannel`, removing
25
- * the need for postMessage and iframes.
26
- *
27
- * When `luaScript` is set, play requests are sent to the Vite dev server
28
- * which runs LuaEngine in Node.js — no fengari in the browser.
29
- *
30
- * @example
31
- * ```ts
32
- * import { DevBridge } from '@energy8platform/game-engine/debug';
33
- *
34
- * const devBridge = new DevBridge({
35
- * balance: 5000,
36
- * currency: 'EUR',
37
- * gameConfig: { id: 'my-slot', type: 'slot', betLevels: [0.2, 0.5, 1, 2] },
38
- * onPlay: ({ action, bet }) => ({
39
- * totalWin: Math.random() > 0.5 ? bet * (Math.random() * 20) : 0,
40
- * data: { matrix: [[1,2,3],[4,5,6],[7,8,9]] },
41
- * }),
42
- * });
43
- * devBridge.start();
44
- * ```
45
- */
46
- class DevBridge {
47
- _config;
48
- _balance;
49
- _roundCounter = 0;
50
- _bridge = null;
51
- _useLuaServer;
52
- constructor(config = {}) {
53
- this._config = { ...DEFAULT_CONFIG, ...config };
54
- this._balance = this._config.balance;
55
- this._useLuaServer = !!(this._config.luaScript && this._config.gameDefinition);
56
- }
57
- /** Current mock balance */
58
- get balance() {
59
- return this._balance;
60
- }
61
- /** Start listening for SDK messages */
62
- start() {
63
- if (this._bridge)
64
- return;
65
- console.debug('[DevBridge] Starting with config:', this._config);
66
- this._bridge = new Bridge({ devMode: true, debug: this._config.debug });
67
- this._bridge.on('GAME_READY', (_payload, id) => {
68
- this.handleGameReady(id);
69
- });
70
- this._bridge.on('PLAY_REQUEST', (payload, id) => {
71
- this.handlePlayRequest(payload, id);
72
- });
73
- this._bridge.on('PLAY_RESULT_ACK', (payload) => {
74
- this.handlePlayAck(payload);
75
- });
76
- this._bridge.on('GET_BALANCE', (_payload, id) => {
77
- this.handleGetBalance(id);
78
- });
79
- this._bridge.on('GET_STATE', (_payload, id) => {
80
- this.handleGetState(id);
81
- });
82
- this._bridge.on('OPEN_DEPOSIT', () => {
83
- this.handleOpenDeposit();
84
- });
85
- if (this._config.debug) {
86
- const mode = this._useLuaServer ? 'Lua (server-side)' : 'onPlay callback';
87
- console.log(`[DevBridge] Started — mode: ${mode}`);
88
- }
89
- }
90
- /** Stop listening */
91
- stop() {
92
- if (this._bridge) {
93
- this._bridge.destroy();
94
- this._bridge = null;
95
- }
96
- if (this._config.debug) {
97
- console.log('[DevBridge] Stopped');
98
- }
99
- }
100
- /** Set mock balance */
101
- setBalance(balance) {
102
- this._balance = balance;
103
- this._bridge?.send('BALANCE_UPDATE', { balance: this._balance });
104
- }
105
- /** Destroy the dev bridge */
106
- destroy() {
107
- this.stop();
108
- }
109
- // ─── Message Handling ──────────────────────────────────
110
- handleGameReady(id) {
111
- const initData = {
112
- balance: this._balance,
113
- currency: this._config.currency,
114
- config: this._config.gameConfig,
115
- session: this._config.session,
116
- assetsUrl: this._config.assetsUrl,
117
- };
118
- this.delayedSend('INIT', initData, id);
119
- }
120
- handlePlayRequest(payload, id) {
121
- const { action, bet, roundId, params } = payload;
122
- this._roundCounter++;
123
- if (this._useLuaServer) {
124
- // Debit bet (server deducts before Lua execution)
125
- // For session actions (free spins), debit is 0 — LuaEngine handles bet from session
126
- this._balance -= bet;
127
- this.executeLuaOnServer({ action, bet, roundId, params })
128
- .then((result) => {
129
- this._bridge?.send('PLAY_RESULT', result, id);
130
- })
131
- .catch((err) => {
132
- console.error('[DevBridge] Lua server error:', err);
133
- this._balance += bet;
134
- this._bridge?.send('PLAY_RESULT', this.buildFallbackResult(action, bet, roundId), id);
135
- });
136
- }
137
- else {
138
- // Fallback to onPlay callback
139
- const customResult = this._config.onPlay({ action, bet, roundId, params });
140
- const totalWin = customResult.totalWin ?? (Math.random() > 0.6 ? bet * (1 + Math.random() * 10) : 0);
141
- this._balance += totalWin;
142
- const result = {
143
- roundId: roundId ?? `dev-round-${this._roundCounter}`,
144
- action,
145
- balanceAfter: this._balance,
146
- totalWin: Math.round(totalWin * 100) / 100,
147
- data: customResult.data ?? {},
148
- nextActions: customResult.nextActions ?? ['spin'],
149
- session: customResult.session ?? null,
150
- creditPending: false,
151
- bonusFreeSpin: customResult.bonusFreeSpin ?? null,
152
- currency: this._config.currency,
153
- gameId: this._config.gameConfig?.id ?? 'dev-game',
154
- };
155
- this.delayedSend('PLAY_RESULT', result, id);
156
- }
157
- }
158
- async executeLuaOnServer(params) {
159
- const response = await fetch('/__lua-play', {
160
- method: 'POST',
161
- headers: { 'Content-Type': 'application/json' },
162
- body: JSON.stringify(params),
163
- });
164
- if (!response.ok) {
165
- const err = await response.json().catch(() => ({ error: 'Unknown error' }));
166
- throw new Error(err.error ?? `HTTP ${response.status}`);
167
- }
168
- const luaResult = await response.json();
169
- // Server credit logic:
170
- // shouldCredit = (no session) OR (session.completed)
171
- // creditAmount = result.totalWin
172
- const shouldCredit = !luaResult.session || luaResult.session.completed;
173
- if (shouldCredit && luaResult.totalWin > 0) {
174
- this._balance += luaResult.totalWin;
175
- }
176
- return {
177
- roundId: params.roundId ?? `dev-round-${this._roundCounter}`,
178
- action: params.action,
179
- balanceAfter: this._balance,
180
- totalWin: Math.round(luaResult.totalWin * 100) / 100,
181
- data: luaResult.data,
182
- nextActions: luaResult.nextActions,
183
- session: luaResult.session,
184
- creditPending: !shouldCredit,
185
- bonusFreeSpin: null,
186
- currency: this._config.currency,
187
- gameId: this._config.gameConfig?.id ?? 'dev-game',
188
- };
189
- }
190
- buildFallbackResult(action, bet, roundId) {
191
- return {
192
- roundId: roundId ?? `dev-round-${this._roundCounter}`,
193
- action,
194
- balanceAfter: this._balance,
195
- totalWin: 0,
196
- data: { error: 'Lua execution failed' },
197
- nextActions: ['spin'],
198
- session: null,
199
- creditPending: false,
200
- bonusFreeSpin: null,
201
- currency: this._config.currency,
202
- gameId: this._config.gameConfig?.id ?? 'dev-game',
203
- };
204
- }
205
- handlePlayAck(_payload) {
206
- if (this._config.debug) {
207
- console.log('[DevBridge] Play acknowledged');
208
- }
209
- }
210
- handleGetBalance(id) {
211
- this.delayedSend('BALANCE_UPDATE', { balance: this._balance }, id);
212
- }
213
- handleGetState(id) {
214
- this.delayedSend('STATE_RESPONSE', { session: this._config.session ?? null }, id);
215
- }
216
- handleOpenDeposit() {
217
- if (this._config.debug) {
218
- console.log('[DevBridge] Open deposit requested (mock: adding 1000)');
219
- }
220
- this._balance += 1000;
221
- this._bridge?.send('BALANCE_UPDATE', { balance: this._balance });
222
- }
223
- // ─── Communication ─────────────────────────────────────
224
- delayedSend(type, payload, id) {
225
- const delay = this._config.networkDelay;
226
- if (delay > 0) {
227
- setTimeout(() => this._bridge?.send(type, payload, id), delay);
228
- }
229
- else {
230
- this._bridge?.send(type, payload, id);
231
- }
232
- }
233
- }
234
-
235
4
  /**
236
5
  * FPS overlay for debugging performance.
237
6
  *
@@ -322,5 +91,5 @@ class FPSOverlay {
322
91
  }
323
92
  }
324
93
 
325
- export { DevBridge, FPSOverlay };
94
+ export { FPSOverlay };
326
95
  //# sourceMappingURL=debug.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"debug.esm.js","sources":["../src/debug/DevBridge.ts","../src/debug/FPSOverlay.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"debug.esm.js","sources":["../src/debug/FPSOverlay.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}