@oyna360/game-sdk 0.5.3 → 0.6.2

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
@@ -9,9 +9,9 @@ SDK رسمی اتصال **بازی شما** به **پلتفرم oyna360**.
9
9
  - در **Production** داخل iframe پلتفرم کار کند
10
10
  - در **Development** بدون iframe، مستقیم به سرور oyna360 وصل شود
11
11
 
12
- **نسخه:** `0.5.2` · بدون وابستگی runtime · TypeScript داخل پکیج
12
+ **نسخه:** `0.6.0` · بدون وابستگی runtime · TypeScript داخل پکیج
13
13
 
14
- > این SDK مسئول لابی ۳D نیست. برای لابی از [`@oyna360/lobby-sdk`](https://www.npmjs.com/package/@oyna360/lobby-sdk) استفاده کنید. این دو پکیج را ادغام نکنید.
14
+ > برای لابی ۳D و لود آواتار از [`@oyna360/lobby-babylon`](https://www.npmjs.com/package/@oyna360/lobby-babylon) استفاده کنید؛ `@oyna360/lobby-sdk` فقط Core شبکه و state است. [مرجع استاندارد آواتار و راهنمای AI](https://github.com/mamadjavadrasti/oyna360-lobby-babylon/blob/master/docs/08-avatars.md).
15
15
 
16
16
  ---
17
17
 
@@ -26,7 +26,7 @@ pnpm add @oyna360/game-sdk
26
26
  ```json
27
27
  {
28
28
  "dependencies": {
29
- "@oyna360/game-sdk": "^0.5.2"
29
+ "@oyna360/game-sdk": "^0.6.0"
30
30
  }
31
31
  }
32
32
  ```
@@ -48,18 +48,17 @@ pnpm update @oyna360/game-sdk
48
48
  | حالت | چطور بازی باز می‌شود | `init()` از کجا Context می‌گیرد |
49
49
  |------|----------------------|----------------------------------|
50
50
  | **Production** | بازیکن از `https://oyna360.ir/play/{slug}` وارد می‌شود؛ بازی داخل iframe است | `postMessage` → `platform:init` از parent |
51
- | **Direct Development** | شما `npm run dev` می‌زنید و بازی را مستقیم روی origin خودتان باز می‌کنید | Authorize با اکانت واقعی → سشن موقت → همان `SdkInitPayload` |
52
-
53
- در هر دو حالت API بازی یکسان است:
51
+ | **Developer Environment** | `npm run dev` روی origin شما | Dev Credential → `POST /dev/gateway/session` (بدون popup) |
52
+ | **Direct Development (legacy)** | `npm run dev` + بازی منتشرشده | Authorize popup با `gameSlug` |
54
53
 
55
54
  ```ts
56
55
  import { PlatformSDK } from '@oyna360/game-sdk';
57
56
 
58
57
  const { user, game, session, avatar, lobby } = await PlatformSDK.init({
59
- // فقط برای Direct Development لازم است:
60
- // platformUrl: 'https://oyna360.ir/api',
61
- // platformWebUrl: 'https://oyna360.ir',
62
- // gameSlug: 'my-game',
58
+ platformUrl: 'https://oyna360.ir/api',
59
+ platformWebUrl: 'https://oyna360.ir',
60
+ // توصیه برای توسعه:
61
+ // dev: { clientId: '...', credential: '...' },
63
62
  });
64
63
  ```
65
64
 
@@ -88,9 +87,30 @@ boot().catch(console.error);
88
87
 
89
88
  ---
90
89
 
91
- ## شروع سریع — Direct Development
90
+ ## شروع سریع — Developer Environment (توصیه‌شده)
91
+
92
+ 1. در oyna360 وارد شوید و به `/developer` بروید.
93
+ 2. Dev Project بسازید و Origin لوکال (مثلاً `http://localhost:5173`) را اضافه کنید.
94
+ 3. Credential صادر کنید و در `.env` بازی بگذارید.
95
+
96
+ ```ts
97
+ await PlatformSDK.init({
98
+ platformUrl: 'https://oyna360.ir/api',
99
+ platformWebUrl: 'https://oyna360.ir',
100
+ dev: {
101
+ clientId: '...',
102
+ credential: '...',
103
+ },
104
+ });
105
+ ```
106
+
107
+ بدون ساختن بازی در Catalog و بدون popup هر بار. جزئیات: [docs/10-developer-environment.md](./docs/10-developer-environment.md)
108
+
109
+ ---
110
+
111
+ ## شروع سریع — Direct Development (legacy / slug)
92
112
 
93
- بدون کلون کردن پلتفرم:
113
+ بدون کلون کردن پلتفرم، ولی نیاز به بازی **منتشرشده** و authorize هر بار:
94
114
 
95
115
  ```ts
96
116
  await PlatformSDK.init({
@@ -161,7 +181,7 @@ Production از `postMessage` به parent استفاده می‌کند؛ Direct
161
181
 
162
182
  ```ts
163
183
  import { PlatformSDK } from '@oyna360/game-sdk';
164
- import { PlatformLobby } from '@oyna360/lobby-sdk';
184
+ import { PlatformLobby } from '@oyna360/lobby-babylon';
165
185
 
166
186
  const init = await PlatformSDK.init({ /* … */ });
167
187
  const lobby = await PlatformLobby.create({
@@ -174,6 +194,8 @@ const lobby = await PlatformLobby.create({
174
194
 
175
195
  `lobby.wsUrl` را هاردکد نکنید.
176
196
 
197
+ کل `init` را منتقل کنید تا مدل، لباس و اکسسوری کاربر حفظ شود. `PlatformLobby.create` لود GLB، Draco و آواتار دیگران را خودکار انجام می‌دهد. برای رندر در صحنهٔ اختصاصی و محدودیت‌های شخصی‌سازی، [راهنمای آواتار](https://github.com/mamadjavadrasti/oyna360-lobby-babylon/blob/master/docs/08-avatars.md) را بخوانید.
198
+
177
199
  ---
178
200
 
179
201
  ## لایسنس
package/dist/index.d.ts CHANGED
@@ -10,13 +10,16 @@ declare global {
10
10
  platformUrl?: string;
11
11
  platformWebUrl?: string;
12
12
  gameSlug?: string;
13
+ clientId?: string;
14
+ credential?: string;
13
15
  };
14
16
  }
15
17
  }
16
18
  /**
17
19
  * Wait for platform init payload.
18
20
  * - Production iframe: receives `platform:init` from parent.
19
- * - Direct Development: Oyna360 authorize → one-time code → standard SdkInitPayload.
21
+ * - Developer Environment: credential → POST /dev/gateway/session (no popup).
22
+ * - Legacy Direct Development: authorize popup → one-time code → SdkInitPayload.
20
23
  */
21
24
  export declare function init(options?: PlatformSdkInitOptions): Promise<SdkInitPayload>;
22
25
  export declare function getUser(): SdkUser | null;
@@ -37,7 +40,7 @@ export declare function getWallet(): Promise<WalletBalanceResponse>;
37
40
  * Convert platform gems into in-game coins.
38
41
  * Platform deducts gems; the game must credit `coinsReceived` to its own economy.
39
42
  */
40
- export declare function convertGems(gems: number): Promise<ConvertGemsResponse>;
43
+ export declare function convertGems(gems: number, requestId?: string): Promise<ConvertGemsResponse>;
41
44
  export declare function endSession(): Promise<void>;
42
45
  export declare const PlatformSDK: {
43
46
  version: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACzB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAQjB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,yBAAyB,CAAC,EAAE,mBAAmB,CAAC;QAChD,sFAAsF;QACtF,4BAA4B,CAAC,EAAE,OAAO,CAAC;QACvC,eAAe,CAAC,EAAE;YAChB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;KACH;CACF;AAucD;;;;GAIG;AACH,wBAAsB,IAAI,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,CAuDpF;AAED,wBAAgB,OAAO,IAAI,OAAO,GAAG,IAAI,CAExC;AAED,wBAAgB,UAAU,IAAI,UAAU,GAAG,IAAI,CAE9C;AAED,wBAAgB,cAAc,IAAI,cAAc,GAAG,IAAI,CAEtD;AAED,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAED,2EAA2E;AAC3E,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAiB7E;AAED,gFAAgF;AAChF,wBAAsB,cAAc,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAa7E;AAED,gEAAgE;AAChE,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAiBvF;AAED,mEAAmE;AACnE,wBAAsB,eAAe,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAQrE;AAED,+DAA+D;AAC/D,wBAAsB,SAAS,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAQhE;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgB5E;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA2BhD;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;CAcvB,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACzB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAQjB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,yBAAyB,CAAC,EAAE,mBAAmB,CAAC;QAChD,sFAAsF;QACtF,4BAA4B,CAAC,EAAE,OAAO,CAAC;QACvC,eAAe,CAAC,EAAE;YAChB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;KACH;CACF;AA+eD;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,CA+DpF;AAED,wBAAgB,OAAO,IAAI,OAAO,GAAG,IAAI,CAExC;AAED,wBAAgB,UAAU,IAAI,UAAU,GAAG,IAAI,CAE9C;AAED,wBAAgB,cAAc,IAAI,cAAc,GAAG,IAAI,CAEtD;AAED,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAED,2EAA2E;AAC3E,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAiB7E;AAED,gFAAgF;AAChF,wBAAsB,cAAc,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAa7E;AAED,gEAAgE;AAChE,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAiBvF;AAED,mEAAmE;AACnE,wBAAsB,eAAe,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAQrE;AAED,+DAA+D;AAC/D,wBAAsB,SAAS,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAQhE;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAoBhG;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA2BhD;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;CAcvB,CAAC;AAEF,eAAe,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -175,15 +175,15 @@ if (typeof window !== 'undefined') {
175
175
  window.addEventListener('message', onMessage);
176
176
  signalReady();
177
177
  }
178
- function postToPlatform(outboundType, payload, resultType, timeoutMs = DEFAULT_REQUEST_TIMEOUT_MS) {
178
+ function postToPlatform(outboundType, payload, resultType, timeoutMs = DEFAULT_REQUEST_TIMEOUT_MS, stableRequestId) {
179
179
  return new Promise((resolve, reject) => {
180
180
  if (!isEmbeddedInPlatform()) {
181
181
  reject(new Error(`${outboundType} requires the platform iframe parent`));
182
182
  return;
183
183
  }
184
- const requestId = typeof crypto !== 'undefined' && crypto.randomUUID
184
+ const requestId = stableRequestId ?? (typeof crypto !== 'undefined' && crypto.randomUUID
185
185
  ? crypto.randomUUID()
186
- : `${Date.now()}-${Math.random()}`;
186
+ : `${Date.now()}-${Math.random()}`);
187
187
  const timer = setTimeout(() => {
188
188
  window.removeEventListener('message', onResult);
189
189
  reject(new Error('Platform SDK request timeout'));
@@ -250,9 +250,9 @@ async function apiRequest(path, options = {}) {
250
250
  }
251
251
  return data;
252
252
  }
253
- function callPlatformFeature(outboundType, payload, resultType, directCall) {
253
+ function callPlatformFeature(outboundType, payload, resultType, directCall, stableRequestId) {
254
254
  if (isEmbeddedInPlatform()) {
255
- return postToPlatform(outboundType, payload, resultType);
255
+ return postToPlatform(outboundType, payload, resultType, DEFAULT_REQUEST_TIMEOUT_MS, stableRequestId);
256
256
  }
257
257
  return directCall();
258
258
  }
@@ -270,6 +270,8 @@ function resolveDevConfig(options) {
270
270
  const fromWindow = typeof window !== 'undefined' ? window.__OYNA360_DEV__ : undefined;
271
271
  const platformUrl = (options?.platformUrl || fromWindow?.platformUrl || '').replace(/\/$/, '');
272
272
  const gameSlug = (options?.gameSlug || fromWindow?.gameSlug || '').trim();
273
+ const clientId = (options?.dev?.clientId || fromWindow?.clientId || '').trim();
274
+ const credential = (options?.dev?.credential || fromWindow?.credential || '').trim();
273
275
  let platformWebUrl = (options?.platformWebUrl || fromWindow?.platformWebUrl || '').replace(/\/$/, '');
274
276
  if (!platformWebUrl && platformUrl) {
275
277
  try {
@@ -281,7 +283,35 @@ function resolveDevConfig(options) {
281
283
  platformWebUrl = '';
282
284
  }
283
285
  }
284
- return { platformUrl, platformWebUrl, gameSlug };
286
+ return { platformUrl, platformWebUrl, gameSlug, clientId, credential };
287
+ }
288
+ async function runCredentialGatewayBootstrap(options) {
289
+ const { platformUrl, clientId, credential } = resolveDevConfig(options);
290
+ if (!platformUrl || !clientId || !credential) {
291
+ throw new Error('Developer Environment requires platformUrl + dev.clientId + dev.credential. ' +
292
+ 'Create them at /developer and pass PlatformSDK.init({ platformUrl, dev: { clientId, credential } }).');
293
+ }
294
+ rememberDirectPlatformUrl(platformUrl);
295
+ const origin = window.location.origin;
296
+ const response = await fetch(`${platformUrl}/dev/gateway/session`, {
297
+ method: 'POST',
298
+ headers: { 'Content-Type': 'application/json' },
299
+ body: JSON.stringify({ clientId, credential, origin }),
300
+ });
301
+ const data = await response.json().catch(() => ({}));
302
+ if (!response.ok) {
303
+ const msg = typeof data.message === 'string'
304
+ ? data.message
305
+ : Array.isArray(data.message)
306
+ ? data.message.join(', ')
307
+ : 'Dev gateway session failed';
308
+ throw new Error(msg);
309
+ }
310
+ const payload = data;
311
+ if (!payload?.session?.token || !payload.avatar || !payload.lobby?.wsUrl) {
312
+ throw new Error('Invalid SdkInitPayload from dev gateway');
313
+ }
314
+ return payload;
285
315
  }
286
316
  function readCodeFromUrl() {
287
317
  if (typeof window === 'undefined')
@@ -417,7 +447,8 @@ function waitForIframeInit(timeoutMs) {
417
447
  /**
418
448
  * Wait for platform init payload.
419
449
  * - Production iframe: receives `platform:init` from parent.
420
- * - Direct Development: Oyna360 authorize → one-time code → standard SdkInitPayload.
450
+ * - Developer Environment: credential → POST /dev/gateway/session (no popup).
451
+ * - Legacy Direct Development: authorize popup → one-time code → SdkInitPayload.
421
452
  */
422
453
  async function init(options) {
423
454
  if (initPayload) {
@@ -465,6 +496,13 @@ async function init(options) {
465
496
  catch {
466
497
  // expected when not in iframe
467
498
  }
499
+ // Prefer Developer Environment credentials (no authorize popup).
500
+ if (earlyDev.clientId && earlyDev.credential) {
501
+ const payload = await runCredentialGatewayBootstrap(options);
502
+ settleInit(payload);
503
+ void markDirectSessionReady();
504
+ return payload;
505
+ }
468
506
  const payload = await runDirectDevelopmentBootstrap(options);
469
507
  settleInit(payload);
470
508
  void markDirectSessionReady();
@@ -526,15 +564,18 @@ async function getWallet() {
526
564
  * Convert platform gems into in-game coins.
527
565
  * Platform deducts gems; the game must credit `coinsReceived` to its own economy.
528
566
  */
529
- async function convertGems(gems) {
567
+ async function convertGems(gems, requestId) {
530
568
  const payload = await init();
531
569
  if (!Number.isInteger(gems) || gems < 1) {
532
570
  throw new Error('gems must be a positive integer');
533
571
  }
572
+ if (requestId !== undefined && !/^[A-Za-z0-9_-]{8,128}$/.test(requestId)) {
573
+ throw new Error('requestId must contain 8-128 ASCII letters, digits, underscores or hyphens');
574
+ }
534
575
  return callPlatformFeature('platform:gems:exchange', { sessionToken: payload.session.token, gems }, 'platform:gems:exchange:result', () => apiRequest(`/games/${payload.game.slug}/wallet/exchange`, {
535
576
  method: 'POST',
536
- body: { gems },
537
- }));
577
+ body: { gems, requestId },
578
+ }), requestId);
538
579
  }
539
580
  async function endSession() {
540
581
  const token = initPayload?.session.token;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** Public SDK contract — keep in sync with platform `@platform/types` when protocol changes. */
2
- export declare const SDK_VERSION = "0.5.2";
2
+ export declare const SDK_VERSION = "0.6.0";
3
3
  export type AvatarPresetKind = 'procedural' | 'glb';
4
4
  export interface SdkLobbyAvatar {
5
5
  presetId: string;
@@ -54,8 +54,19 @@ export interface PlatformSdkInitOptions {
54
54
  * Defaults to origin of `platformUrl` without `/api`.
55
55
  */
56
56
  platformWebUrl?: string;
57
- /** Published game slug. Required for Direct Development Mode. */
57
+ /**
58
+ * Published game slug — legacy Direct Dev (authorize popup).
59
+ * Prefer `dev: { clientId, credential }` for Developer Environment.
60
+ */
58
61
  gameSlug?: string;
62
+ /**
63
+ * Developer Environment credentials from /developer portal.
64
+ * Creates a temporary session via POST /dev/gateway/session — no popup.
65
+ */
66
+ dev?: {
67
+ clientId: string;
68
+ credential: string;
69
+ };
59
70
  }
60
71
  export interface LeaderboardEntry {
61
72
  rank: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAEhG,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,KAAK,CAAC;AAEpD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,UAAU,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE;QACJ,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -2,5 +2,5 @@
2
2
  /** Public SDK contract — keep in sync with platform `@platform/types` when protocol changes. */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.SDK_VERSION = void 0;
5
- exports.SDK_VERSION = '0.5.2';
5
+ exports.SDK_VERSION = '0.6.0';
6
6
  //# sourceMappingURL=types.js.map
@@ -20,7 +20,7 @@
20
20
 
21
21
  | کار | کجا |
22
22
  |-----|-----|
23
- | لابی ۳D، آواتار متحرک، چت لابی، WebSocket بازیکنان | `@oyna360/lobby-sdk` |
23
+ | لابی ۳D و آواتار متحرک با شبکه | `@oyna360/lobby-babylon` (بر پایه Core در `@oyna360/lobby-sdk`) |
24
24
  | سرور اختصاصی گیم‌پلی شما | سرور خودتان |
25
25
  | ذخیره پسورد یا توکن دائمی داخل بازی | نباید انجام شود |
26
26
 
@@ -46,7 +46,7 @@
46
46
  │
47
47
  ┌────────────┴────────────┐
48
48
  ▼ ▼
49
- گیم‌پلی / امتیاز @oyna360/lobby-sdk
49
+ گیم‌پلی / امتیاز @oyna360/lobby-babylon
50
50
  (score, wallet, …) (لابی ۳D اختیاری)
51
51
  ```
52
52
 
package/docs/02-init.md CHANGED
@@ -1,136 +1,138 @@
1
- # `init()` و Platform Context
2
-
3
- اولین فراخوانی تقریباً همیشه `PlatformSDK.init()` است.
4
-
5
- ## امضا
6
-
7
- ```ts
8
- function init(options?: PlatformSdkInitOptions): Promise<SdkInitPayload>;
9
-
10
- interface PlatformSdkInitOptions {
11
- /** حداکثر انتظار (ms). در iframe پیش‌فرض ~10s؛ در Direct برای authorize می‌توانید بیشتر بدهید. */
12
- timeout?: number;
13
- /** پایه API با `/api` — الزامی در Direct Development */
14
- platformUrl?: string;
15
- /** origin وب پلتفرم برای صفحه Authorize — در Direct اگر API و Web جدا باشند الزامی */
16
- platformWebUrl?: string;
17
- /** slug بازی published — الزامی در Direct Development */
18
- gameSlug?: string;
19
- }
20
- ```
21
-
22
- جایگزین تنظیمات Direct:
23
-
24
- ```ts
25
- window.__OYNA360_DEV__ = {
26
- platformUrl: 'https://oyna360.ir/api',
27
- platformWebUrl: 'https://oyna360.ir',
28
- gameSlug: 'my-game',
29
- };
30
- ```
31
-
32
- ---
33
-
34
- ## خروجی — `SdkInitPayload`
35
-
36
- همان Context استاندارد Production (`platform:init`):
37
-
38
- ```ts
39
- interface SdkInitPayload {
40
- user: SdkUser;
41
- session: SdkSession;
42
- game: SdkGameInfo;
43
- avatar: SdkLobbyAvatar;
44
- avatarBases?: Array<{ id: string; glbUrl: string }>;
45
- lobby?: {
46
- wsUrl: string; // مثلاً https://oyna360.ir/lobby
47
- roomId: string; // مثلاً game:my-game
48
- strictRoom?: boolean;
49
- };
50
- }
51
- ```
52
-
53
- | فیلد | کاربرد |
54
- |------|--------|
55
- | `user` | نمایش نام، id |
56
- | `session` | `{ id, token }` — سشن بازی ephemeral |
57
- | `game` | `slug` / `name` |
58
- | `avatar` | ظاهر لابی برای lobby-sdk |
59
- | `avatarBases` | کاتالوگ GLB مشترک (اختیاری) |
60
- | `lobby` | آدرس WebSocket و اتاق — **هاردکد نکنید** |
61
-
62
- ---
63
-
64
- ## رفتار بر اساس محیط
65
-
66
- ### 1) داخل iframe پلتفرم (Production)
67
-
68
- 1. SDK در صورت embed بودن، `platform:ready` به parent می‌فرستد.
69
- 2. منتظر `platform:init` می‌ماند.
70
- 3. Context را ذخیره می‌کند و همان را روی `window` هم برای lobby-sdk منتشر می‌کند.
71
-
72
- ```ts
73
- const ctx = await PlatformSDK.init({ timeout: 15_000 });
74
- ```
75
-
76
- ### 2) تب مستقیم / بدون parent (Direct Development)
77
-
78
- 1. اگر `platformUrl` + `gameSlug` نباشد → خطای واضح.
79
- 2. صفحه `/dev/game-auth` (popup یا redirect) باز می‌شود.
80
- 3. با اکانت واقعی لاگین می‌کنید.
81
- 4. code یک‌بارمصرف → `exchange` → همان `SdkInitPayload`.
82
-
83
- ```ts
84
- const ctx = await PlatformSDK.init({
85
- platformUrl: 'https://oyna360.ir/api',
86
- platformWebUrl: 'https://oyna360.ir',
87
- gameSlug: 'my-game',
88
- timeout: 120_000,
89
- });
90
- ```
91
-
92
- ### 3) Idempotent
93
-
94
- اگر قبلاً init شده باشد، فراخوانی بعدی همان Promise/payload را می‌دهد.
95
-
96
- ---
97
-
98
- ## بعد از init
99
-
100
- ```ts
101
- PlatformSDK.isReady(); // true
102
- PlatformSDK.getUser(); // SdkUser | null
103
- PlatformSDK.getSession(); // SdkSession | null
104
- PlatformSDK.getInitPayload(); // SdkInitPayload | null (کامل)
105
- ```
106
-
107
- ---
108
-
109
- ## تحویل به lobby-sdk
110
-
111
- روش توصیه‌شده:
112
-
113
- ```ts
114
- const init = await PlatformSDK.init({ /* … */ });
115
- await PlatformLobby.create({
116
- canvas,
117
- platformInit: init,
118
- roomId: init.lobby!.roomId,
119
- wsUrl: init.lobby!.wsUrl,
120
- });
121
- ```
122
-
123
- یا بعد از `init()` می‌توانید `PlatformLobby.createFromPlatform(canvas)` را بزنید (SDK لابی از Context منتشرشده روی window استفاده می‌کند).
124
-
125
- ---
126
-
127
- ## خطاهای رایج
128
-
129
- | پیام / وضعیت | معنی |
130
- |--------------|------|
131
- | `init timeout — is the game running inside the platform?` | iframe هستید ولی parent `platform:init` نفرستاده (یا دیر) |
132
- | `requires platformUrl + gameSlug` | Direct Mode بدون تنظیم |
133
- | `Development origin not allowed` | origin بازی در allowlist سرور نیست |
134
- | Authorize timeout | لاگین تمام نشد / popup بلاک شد |
135
-
136
- بعدی: [03-user-session.md](./03-user-session.md) · Direct: [09-direct-development.md](./09-direct-development.md)
1
+ # `init()` و Platform Context
2
+
3
+ اولین فراخوانی تقریباً همیشه `PlatformSDK.init()` است.
4
+
5
+ ## امضا
6
+
7
+ ```ts
8
+ function init(options?: PlatformSdkInitOptions): Promise<SdkInitPayload>;
9
+
10
+ interface PlatformSdkInitOptions {
11
+ /** حداکثر انتظار (ms). در iframe پیش‌فرض ~10s؛ در Direct برای authorize می‌توانید بیشتر بدهید. */
12
+ timeout?: number;
13
+ /** پایه API با `/api` — الزامی در Direct Development */
14
+ platformUrl?: string;
15
+ /** origin وب پلتفرم برای صفحه Authorize — در Direct اگر API و Web جدا باشند الزامی */
16
+ platformWebUrl?: string;
17
+ /** slug بازی published — الزامی در Direct Development */
18
+ gameSlug?: string;
19
+ }
20
+ ```
21
+
22
+ جایگزین تنظیمات Direct:
23
+
24
+ ```ts
25
+ window.__OYNA360_DEV__ = {
26
+ platformUrl: 'https://oyna360.ir/api',
27
+ platformWebUrl: 'https://oyna360.ir',
28
+ gameSlug: 'my-game',
29
+ };
30
+ ```
31
+
32
+ ---
33
+
34
+ ## خروجی — `SdkInitPayload`
35
+
36
+ همان Context استاندارد Production (`platform:init`):
37
+
38
+ ```ts
39
+ interface SdkInitPayload {
40
+ user: SdkUser;
41
+ session: SdkSession;
42
+ game: SdkGameInfo;
43
+ avatar: SdkLobbyAvatar;
44
+ avatarBases?: Array<{ id: string; glbUrl: string }>;
45
+ lobby?: {
46
+ wsUrl: string; // مثلاً https://oyna360.ir/lobby
47
+ roomId: string; // مثلاً game:my-game
48
+ strictRoom?: boolean;
49
+ };
50
+ }
51
+ ```
52
+
53
+ | فیلد | کاربرد |
54
+ |------|--------|
55
+ | `user` | نمایش نام، id |
56
+ | `session` | `{ id, token }` — سشن بازی ephemeral |
57
+ | `game` | `slug` / `name` |
58
+ | `avatar` | ظاهر لابی برای lobby-sdk |
59
+ | `avatarBases` | کاتالوگ GLB مشترک (اختیاری) |
60
+ | `lobby` | آدرس WebSocket و اتاق — **هاردکد نکنید** |
61
+
62
+ ---
63
+
64
+ ## رفتار بر اساس محیط
65
+
66
+ ### 1) داخل iframe پلتفرم (Production)
67
+
68
+ 1. SDK در صورت embed بودن، `platform:ready` به parent می‌فرستد.
69
+ 2. منتظر `platform:init` می‌ماند.
70
+ 3. Context را ذخیره می‌کند و همان را روی `window` هم برای lobby-sdk منتشر می‌کند.
71
+
72
+ ```ts
73
+ const ctx = await PlatformSDK.init({ timeout: 15_000 });
74
+ ```
75
+
76
+ ### 2) تب مستقیم / بدون parent (Direct Development)
77
+
78
+ 1. اگر `platformUrl` + `gameSlug` نباشد → خطای واضح.
79
+ 2. صفحه `/dev/game-auth` (popup یا redirect) باز می‌شود.
80
+ 3. با اکانت واقعی لاگین می‌کنید.
81
+ 4. code یک‌بارمصرف → `exchange` → همان `SdkInitPayload`.
82
+
83
+ ```ts
84
+ const ctx = await PlatformSDK.init({
85
+ platformUrl: 'https://oyna360.ir/api',
86
+ platformWebUrl: 'https://oyna360.ir',
87
+ gameSlug: 'my-game',
88
+ timeout: 120_000,
89
+ });
90
+ ```
91
+
92
+ ### 3) Idempotent
93
+
94
+ اگر قبلاً init شده باشد، فراخوانی بعدی همان Promise/payload را می‌دهد.
95
+
96
+ ---
97
+
98
+ ## بعد از init
99
+
100
+ ```ts
101
+ PlatformSDK.isReady(); // true
102
+ PlatformSDK.getUser(); // SdkUser | null
103
+ PlatformSDK.getSession(); // SdkSession | null
104
+ PlatformSDK.getInitPayload(); // SdkInitPayload | null (کامل)
105
+ ```
106
+
107
+ ---
108
+
109
+ ## تحویل به lobby-sdk
110
+
111
+ `PlatformLobby` را از `@oyna360/lobby-babylon` import کنید. کل payload را منتقل کنید؛ لود GLB، Draco، لباس و remoteها خودکار است. [راهنمای کامل آواتار](https://github.com/mamadjavadrasti/oyna360-lobby-babylon/blob/master/docs/08-avatars.md).
112
+
113
+ روش توصیه‌شده:
114
+
115
+ ```ts
116
+ const init = await PlatformSDK.init({ /* … */ });
117
+ await PlatformLobby.create({
118
+ canvas,
119
+ platformInit: init,
120
+ roomId: init.lobby!.roomId,
121
+ wsUrl: init.lobby!.wsUrl,
122
+ });
123
+ ```
124
+
125
+ یا بعد از `init()` می‌توانید `PlatformLobby.createFromPlatform(canvas)` را بزنید (SDK لابی از Context منتشرشده روی window استفاده می‌کند).
126
+
127
+ ---
128
+
129
+ ## خطاهای رایج
130
+
131
+ | پیام / وضعیت | معنی |
132
+ |--------------|------|
133
+ | `init timeout — is the game running inside the platform?` | iframe هستید ولی parent `platform:init` نفرستاده (یا دیر) |
134
+ | `requires platformUrl + gameSlug` | Direct Mode بدون تنظیم |
135
+ | `Development origin not allowed` | origin بازی در allowlist سرور نیست |
136
+ | Authorize timeout | لاگین تمام نشد / popup بلاک شد |
137
+
138
+ بعدی: [03-user-session.md](./03-user-session.md) · Direct: [09-direct-development.md](./09-direct-development.md)
@@ -1,33 +1,33 @@
1
- # User و Session
2
-
3
- بعد از `init()` موفق.
4
-
5
- ## خواندن sync
6
-
7
- ```ts
8
- const user = PlatformSDK.getUser();
9
- // { id, username, displayName, avatarUrl }
10
-
11
- const session = PlatformSDK.getSession();
12
- // { id, token }
13
- ```
14
-
15
- قبل از init هر دو `null` هستند.
16
-
17
- ## نکات session
18
-
19
- - `token` برای هویت سشن بازی است (با JWT لاگین کاربر فرق دارد).
20
- - عمر سشن محدود است و با activity تمدید می‌شود؛ آن را دائمی فرض نکنید.
21
- - در Git / `.env` / localStorage ذخیره نکنید.
22
- - برای lobby-sdk همان `session.token` از Context کافی است؛ خودتان به سوکت وصل نشوید مگر عمداً کلاینت سفارشی بنویسید.
23
-
24
- ## نمایش در UI
25
-
26
- ```ts
27
- const { user, game } = await PlatformSDK.init();
28
- title.textContent = `${user.displayName} — ${game.name}`;
29
- ```
30
-
31
- `avatarUrl` ممکن است `null` باشد؛ آواتار ۳D لابی از فیلد `avatar` در `getInitPayload()` می‌آید نه لزوماً از `avatarUrl`.
32
-
33
- بعدی: [04-end-session.md](./04-end-session.md)
1
+ # User و Session
2
+
3
+ بعد از `init()` موفق.
4
+
5
+ ## خواندن sync
6
+
7
+ ```ts
8
+ const user = PlatformSDK.getUser();
9
+ // { id, username, displayName, avatarUrl }
10
+
11
+ const session = PlatformSDK.getSession();
12
+ // { id, token }
13
+ ```
14
+
15
+ قبل از init هر دو `null` هستند.
16
+
17
+ ## نکات session
18
+
19
+ - `token` برای هویت سشن بازی است (با JWT لاگین کاربر فرق دارد).
20
+ - عمر سشن محدود است و با activity تمدید می‌شود؛ آن را دائمی فرض نکنید.
21
+ - در Git / `.env` / localStorage ذخیره نکنید.
22
+ - برای lobby-sdk همان `session.token` از Context کافی است؛ خودتان به سوکت وصل نشوید مگر عمداً کلاینت سفارشی بنویسید.
23
+
24
+ ## نمایش در UI
25
+
26
+ ```ts
27
+ const { user, game } = await PlatformSDK.init();
28
+ title.textContent = `${user.displayName} — ${game.name}`;
29
+ ```
30
+
31
+ `avatarUrl` ممکن است `null` باشد؛ آواتار ۳D لابی از فیلد `avatar` در `getInitPayload()` می‌آید نه لزوماً از `avatarUrl`.
32
+
33
+ بعدی: [04-end-session.md](./04-end-session.md)
@@ -1,22 +1,22 @@
1
- # `endSession()`
2
-
3
- سشن بازی را می‌بندد تا در آمار/idle پلتفرم باز نماند.
4
-
5
- ```ts
6
- await PlatformSDK.endSession();
7
- ```
8
-
9
- ## رفتار
10
-
11
- - **Production (iframe):** پیام `platform:session:end` به parent فرستاده می‌شود؛ پلتفرم سشن را می‌بندد.
12
- - **Direct Development:** `POST {platformUrl}/sessions/end` با همان session token.
13
-
14
- ## کی صدا بزنید؟
15
-
16
- - وقتی بازیکن از بازی خارج می‌شود
17
- - قبل از unload صفحه (در iframe)
18
- - بعد از اتمام مسابقه اگر سشن دیگری نمی‌سازید
19
-
20
- چندبار صدا زدن نباید بازی را خراب کند؛ اگر سشن از قبل بسته شده باشد parent نادیده می‌گیرد.
21
-
22
- بعدی: [05-scores.md](./05-scores.md)
1
+ # `endSession()`
2
+
3
+ سشن بازی را می‌بندد تا در آمار/idle پلتفرم باز نماند.
4
+
5
+ ```ts
6
+ await PlatformSDK.endSession();
7
+ ```
8
+
9
+ ## رفتار
10
+
11
+ - **Production (iframe):** پیام `platform:session:end` به parent فرستاده می‌شود؛ پلتفرم سشن را می‌بندد.
12
+ - **Direct Development:** `POST {platformUrl}/sessions/end` با همان session token.
13
+
14
+ ## کی صدا بزنید؟
15
+
16
+ - وقتی بازیکن از بازی خارج می‌شود
17
+ - قبل از unload صفحه (در iframe)
18
+ - بعد از اتمام مسابقه اگر سشن دیگری نمی‌سازید
19
+
20
+ چندبار صدا زدن نباید بازی را خراب کند؛ اگر سشن از قبل بسته شده باشد parent نادیده می‌گیرد.
21
+
22
+ بعدی: [05-scores.md](./05-scores.md)
package/docs/05-scores.md CHANGED
@@ -1,30 +1,30 @@
1
- # امتیاز — `submitScore`
2
-
3
- بهترین امتیاز بازیکن برای این بازی را ثبت می‌کند (keep-best).
4
-
5
- ```ts
6
- const result = await PlatformSDK.submitScore(4200);
7
- // { score, previousBest, isNewBest, rank }
8
- ```
9
-
10
- ## پیش‌نیاز
11
-
12
- - `init()` موفق
13
- - سشن فعال
14
- - **Production:** از طریق iframe parent · **Direct Dev:** REST مستقیم به `platformUrl` (همان session token)
15
-
16
- ## قوانین
17
-
18
- - `score` باید عدد نامنفی و finite باشد؛ اعشار truncate می‌شود.
19
- - امتیاز بدتر از بهترین قبلی، best را عوض نمی‌کند (`isNewBest: false`).
20
-
21
- ## مثال
22
-
23
- ```ts
24
- await PlatformSDK.init();
25
- // … پایان مسابقه
26
- const { isNewBest, rank } = await PlatformSDK.submitScore(finalScore);
27
- if (isNewBest) showToast(`رکورد جدید! رتبه ${rank}`);
28
- ```
29
-
30
- بعدی: [06-leaderboard.md](./06-leaderboard.md)
1
+ # امتیاز — `submitScore`
2
+
3
+ بهترین امتیاز بازیکن برای این بازی را ثبت می‌کند (keep-best).
4
+
5
+ ```ts
6
+ const result = await PlatformSDK.submitScore(4200);
7
+ // { score, previousBest, isNewBest, rank }
8
+ ```
9
+
10
+ ## پیش‌نیاز
11
+
12
+ - `init()` موفق
13
+ - سشن فعال
14
+ - **Production:** از طریق iframe parent · **Direct Dev:** REST مستقیم به `platformUrl` (همان session token)
15
+
16
+ ## قوانین
17
+
18
+ - `score` باید عدد نامنفی و finite باشد؛ اعشار truncate می‌شود.
19
+ - امتیاز بدتر از بهترین قبلی، best را عوض نمی‌کند (`isNewBest: false`).
20
+
21
+ ## مثال
22
+
23
+ ```ts
24
+ await PlatformSDK.init();
25
+ // … پایان مسابقه
26
+ const { isNewBest, rank } = await PlatformSDK.submitScore(finalScore);
27
+ if (isNewBest) showToast(`رکورد جدید! رتبه ${rank}`);
28
+ ```
29
+
30
+ بعدی: [06-leaderboard.md](./06-leaderboard.md)
@@ -1,19 +1,19 @@
1
- # لیدربورد — `getLeaderboard`
2
-
3
- ```ts
4
- const board = await PlatformSDK.getLeaderboard(20);
5
- // { gameSlug, entries: [{ rank, score, achievedAt, user: { displayName, username, avatarUrl } }] }
6
- ```
7
-
8
- - `limit` پیش‌فرض ۲۰
9
- - نیاز به `init()` دارد
10
- - **Production** و **Direct Dev** هر دو کار می‌کنند (iframe یا REST)
11
-
12
- ```ts
13
- const { entries } = await PlatformSDK.getLeaderboard(10);
14
- for (const row of entries) {
15
- console.log(row.rank, row.user.displayName, row.score);
16
- }
17
- ```
18
-
19
- بعدی: [07-postmessage-protocol.md](./07-postmessage-protocol.md)
1
+ # لیدربورد — `getLeaderboard`
2
+
3
+ ```ts
4
+ const board = await PlatformSDK.getLeaderboard(20);
5
+ // { gameSlug, entries: [{ rank, score, achievedAt, user: { displayName, username, avatarUrl } }] }
6
+ ```
7
+
8
+ - `limit` پیش‌فرض ۲۰
9
+ - نیاز به `init()` دارد
10
+ - **Production** و **Direct Dev** هر دو کار می‌کنند (iframe یا REST)
11
+
12
+ ```ts
13
+ const { entries } = await PlatformSDK.getLeaderboard(10);
14
+ for (const row of entries) {
15
+ console.log(row.rank, row.user.displayName, row.score);
16
+ }
17
+ ```
18
+
19
+ بعدی: [07-postmessage-protocol.md](./07-postmessage-protocol.md)
@@ -1,45 +1,45 @@
1
- # پروتکل postMessage (Production)
2
-
3
- در Production، بازی داخل iframe است و با **صفحهٔ parent پلتفرم** حرف می‌زند — نه مستقیم با REST برای این عملیات.
4
-
5
- ## از بازی → پلتفرم
6
-
7
- | `type` | نقش |
8
- |--------|-----|
9
- | `platform:ready` | SDK لود شد؛ لطفاً init بفرست |
10
- | `platform:session:end` | بستن سشن |
11
- | `platform:score:submit` | ثبت امتیاز (+ `requestId`, `sessionToken`, `score`) |
12
- | `platform:leaderboard:get` | درخواست لیدربورد |
13
- | `platform:achievement:unlock` / `platform:achievements:get` | دستاورد |
14
- | `platform:wallet:get` / `platform:gems:exchange` | کیف‌پول |
15
- | `platform:lobby:ready` | (از lobby-sdk) درخواست مجدد init |
16
-
17
- ## از پلتفرم → بازی
18
-
19
- | `type` | نقش |
20
- |--------|-----|
21
- | `platform:init` | Context کامل |
22
- | `platform:score:result` و بقیه `*:result` | پاسخ RPC با همان `requestId` |
23
-
24
- ## `platform:init` (شکل)
25
-
26
- ```ts
27
- {
28
- type: 'platform:init',
29
- version: string,
30
- session: { id, token },
31
- user: { id, username, displayName, avatarUrl },
32
- game: { slug, name },
33
- avatar: { presetId, presetKey, presetKind, customConfig },
34
- avatarBases?: [{ id, glbUrl }],
35
- lobby?: { wsUrl, roomId, strictRoom? }
36
- }
37
- ```
38
-
39
- بازی‌ساز معمولاً لازم نیست این پیام‌ها را دستی بسازد؛ `PlatformSDK` و parent پلتفرم این کار را می‌کنند.
40
-
41
- ## Direct Development
42
-
43
- به‌جای parent، Authorize HTTP استفاده می‌شود؛ ولی **شکل نهایی Context همان `SdkInitPayload` است** تا lobby-sdk و کد بازی یکسان بمانند.
44
-
45
- بعدی: [08-wallet.md](./08-wallet.md)
1
+ # پروتکل postMessage (Production)
2
+
3
+ در Production، بازی داخل iframe است و با **صفحهٔ parent پلتفرم** حرف می‌زند — نه مستقیم با REST برای این عملیات.
4
+
5
+ ## از بازی → پلتفرم
6
+
7
+ | `type` | نقش |
8
+ |--------|-----|
9
+ | `platform:ready` | SDK لود شد؛ لطفاً init بفرست |
10
+ | `platform:session:end` | بستن سشن |
11
+ | `platform:score:submit` | ثبت امتیاز (+ `requestId`, `sessionToken`, `score`) |
12
+ | `platform:leaderboard:get` | درخواست لیدربورد |
13
+ | `platform:achievement:unlock` / `platform:achievements:get` | دستاورد |
14
+ | `platform:wallet:get` / `platform:gems:exchange` | کیف‌پول |
15
+ | `platform:lobby:ready` | (از lobby-sdk) درخواست مجدد init |
16
+
17
+ ## از پلتفرم → بازی
18
+
19
+ | `type` | نقش |
20
+ |--------|-----|
21
+ | `platform:init` | Context کامل |
22
+ | `platform:score:result` و بقیه `*:result` | پاسخ RPC با همان `requestId` |
23
+
24
+ ## `platform:init` (شکل)
25
+
26
+ ```ts
27
+ {
28
+ type: 'platform:init',
29
+ version: string,
30
+ session: { id, token },
31
+ user: { id, username, displayName, avatarUrl },
32
+ game: { slug, name },
33
+ avatar: { presetId, presetKey, presetKind, customConfig },
34
+ avatarBases?: [{ id, glbUrl }],
35
+ lobby?: { wsUrl, roomId, strictRoom? }
36
+ }
37
+ ```
38
+
39
+ بازی‌ساز معمولاً لازم نیست این پیام‌ها را دستی بسازد؛ `PlatformSDK` و parent پلتفرم این کار را می‌کنند.
40
+
41
+ ## Direct Development
42
+
43
+ به‌جای parent، Authorize HTTP استفاده می‌شود؛ ولی **شکل نهایی Context همان `SdkInitPayload` است** تا lobby-sdk و کد بازی یکسان بمانند.
44
+
45
+ بعدی: [08-wallet.md](./08-wallet.md)
package/docs/08-wallet.md CHANGED
@@ -1,32 +1,40 @@
1
- # کیف‌پول جِم — `getWallet` / `convertGems`
2
-
3
- جِم ارز پلتفرم است. تبدیل به «سکه داخل بازی» با نرخ `coinsPerGem` همان بازی انجام می‌شود.
4
-
5
- ```ts
6
- const wallet = await PlatformSDK.getWallet();
7
- // { gems, coinsPerGem, gameSlug }
8
-
9
- const result = await PlatformSDK.convertGems(5);
10
- // { gemsSpent, coinsReceived, coinsPerGem, gemsRemaining, gameSlug }
11
- ```
12
-
13
- ## مسئولیت بازی
14
-
15
- پلتفرم جِم را کم می‌کند و `coinsReceived` را برمی‌گرداند.
16
- **اعتبار سکه داخل اقتصاد خودتان** با شماست (در سرور/کلاینت بازی اعمال کنید).
17
-
18
- ## نکات
19
-
20
- - `gems` باید عدد صحیح مثبت باشد.
21
- - در **Production** و **Direct Dev** هر دو کار می‌کند (iframe یا REST با session token).
22
-
23
- ```ts
24
- try {
25
- const { coinsReceived } = await PlatformSDK.convertGems(amount);
26
- await creditLocalCoins(coinsReceived);
27
- } catch (e) {
28
- showError(e);
29
- }
30
- ```
31
-
32
- بعدی: [09-direct-development.md](./09-direct-development.md) · [10-achievements.md](./10-achievements.md)
1
+ # کیف‌پول جِم — `getWallet` / `convertGems`
2
+
3
+ جِم ارز پلتفرم است. تبدیل به «سکه داخل بازی» با نرخ `coinsPerGem` همان بازی انجام می‌شود.
4
+
5
+ ```ts
6
+ const wallet = await PlatformSDK.getWallet();
7
+ // { gems, coinsPerGem, gameSlug }
8
+
9
+ // Generate once, persist with your pending purchase, and reuse on retry.
10
+ const requestId = crypto.randomUUID();
11
+ const result = await PlatformSDK.convertGems(5, requestId);
12
+ // { gemsSpent, coinsReceived, coinsPerGem, gemsRemaining, gameSlug }
13
+ ```
14
+
15
+ ## مسئولیت بازی
16
+
17
+ پلتفرم جِم را کم می‌کند و `coinsReceived` را برمی‌گرداند.
18
+ **اعتبار سکه داخل اقتصاد خودتان** با شماست (در سرور/کلاینت بازی اعمال کنید).
19
+
20
+ ## درخواست پایدار و بازیابی
21
+
22
+ پارامتر دوم `convertGems(gems, requestId?)` شناسهٔ عملیات اقتصادی است. آن را **قبل از ارسال** در ذخیره‌سازی پایدار ثبت کنید و در تلاش مجدد همان عملیات از همان شناسه استفاده کنید. شناسه باید ۸ تا ۱۲۸ کاراکتر از حروف لاتین، عدد، `_` یا `-` باشد (UUID مناسب است).
23
+
24
+ **توجه: این تغییر SDK به‌تنهایی idempotency را تضمین نمی‌کند.** بک‌اند پلتفرم باید `requestId` را همراه هویت کاربر، بازی، مبلغ و نتیجهٔ تبدیل در تراکنش دیتابیس ذخیره کند، تکرار همان درخواست را بدون کسر مجدد پاسخ دهد و برای شناسه‌ای با پارامترهای ناسازگار خطا برگرداند. مسیر postMessage والد نیز باید شناسه را به بک‌اند منتقل کند. بازی باید اعطای سکه را با شناسهٔ همان تبدیل فقط یک بار اعمال کند. برای بازیابی پس از بسته‌شدن بازی، API استعلام وضعیت همان شناسه هم لازم است.
25
+
26
+ ## نکات
27
+
28
+ - `gems` باید عدد صحیح مثبت باشد.
29
+ - در **Production** و **Direct Dev** هر دو کار می‌کند (iframe یا REST با session token).
30
+
31
+ ```ts
32
+ try {
33
+ const { coinsReceived } = await PlatformSDK.convertGems(amount);
34
+ await creditLocalCoins(coinsReceived);
35
+ } catch (e) {
36
+ showError(e);
37
+ }
38
+ ```
39
+
40
+ بعدی: [09-direct-development.md](./09-direct-development.md) · [10-achievements.md](./10-achievements.md)
@@ -88,7 +88,7 @@ DEV_GAME_ORIGINS=http://localhost:5180,http://127.0.0.1:5173,http://192.168.1.20
88
88
 
89
89
  ```ts
90
90
  import { PlatformSDK } from '@oyna360/game-sdk';
91
- import { PlatformLobby } from '@oyna360/lobby-sdk';
91
+ import { PlatformLobby } from '@oyna360/lobby-babylon';
92
92
 
93
93
  const init = await PlatformSDK.init({
94
94
  platformUrl: 'https://oyna360.ir/api',
@@ -0,0 +1,111 @@
1
+ # Developer Environment
2
+
3
+ بازی را روی ماشین خودتان با `npm run dev` اجرا کنید و بدون ساختن بازی در Catalog، به زیرساخت واقعی Oyna360 وصل شوید.
4
+
5
+ این مسیر **جدا از** Direct Development قدیمی (slug + authorize popup) است.
6
+
7
+ ---
8
+
9
+ ## جریان
10
+
11
+ ```text
12
+ 1. ثبت‌نام / ورود در oyna360.ir
13
+ 2. /developer → Create Dev Project → Allowed Origins
14
+ 3. صدور Dev Credential (یک‌بار نمایش)
15
+ 4. در بازی:
16
+
17
+ PlatformSDK.init({
18
+ platformUrl: 'https://oyna360.ir/api',
19
+ platformWebUrl: 'https://oyna360.ir',
20
+ dev: { clientId, credential },
21
+ })
22
+
23
+ 5. SDK → POST /api/dev/gateway/session
24
+ 6. SdkInitPayload استاندارد → Lobby SDK / امتیاز / …
25
+ ```
26
+
27
+ هر `npm run dev` یک **Session موقت جدید** می‌سازد. Credential همان می‌ماند — بدون popup لاگین هر بار.
28
+
29
+ ---
30
+
31
+ ## پیکربندی بازی
32
+
33
+ ### `init`
34
+
35
+ ```ts
36
+ import { PlatformSDK } from '@oyna360/game-sdk';
37
+
38
+ await PlatformSDK.init({
39
+ platformUrl: 'https://oyna360.ir/api',
40
+ platformWebUrl: 'https://oyna360.ir',
41
+ dev: {
42
+ clientId: process.env.VITE_OYNA_DEV_CLIENT_ID!,
43
+ credential: process.env.VITE_OYNA_DEV_CREDENTIAL!,
44
+ },
45
+ });
46
+ ```
47
+
48
+ ### `window.__OYNA360_DEV__`
49
+
50
+ ```ts
51
+ window.__OYNA360_DEV__ = {
52
+ platformUrl: 'https://oyna360.ir/api',
53
+ platformWebUrl: 'https://oyna360.ir',
54
+ clientId: '...',
55
+ credential: '...',
56
+ };
57
+ await PlatformSDK.init();
58
+ ```
59
+
60
+ ### env نمونه
61
+
62
+ ```env
63
+ VITE_PLATFORM_API_URL=https://oyna360.ir/api
64
+ VITE_PLATFORM_WEB_URL=https://oyna360.ir
65
+ VITE_OYNA_DEV_CLIENT_ID=oy_dev_...
66
+ VITE_OYNA_DEV_CREDENTIAL=oy_sec_...
67
+ ```
68
+
69
+ Origin صفحه (مثلاً `http://localhost:5173`) فقط وقتی اجباری است که در Dev Project → Allowed Origins چیزی ثبت کرده باشید.
70
+
71
+ اگر **Allowed Origins خالی** باشد، فقط Credential کافی است — روی لوکال، بیلد استیجینگ، یا هر دامنه‌ای کار می‌کند.
72
+
73
+ ---
74
+
75
+ ## تسترها — چند بازیکن با یک پروژه
76
+
77
+ `clientId` برای هر Dev Project **ثابت** است. هر Credential که با گزینهٔ «کاربر تست جدید» صادر شود یک **کاربر تست جدا** دارد، پس هر دستگاه `user.id` متفاوتی می‌گیرد. برای تست چندنفره لازم نیست روی چند اکانت Oyna360 پروژه بسازید.
78
+
79
+ ```env
80
+ # دستگاه ۱
81
+ OYNA_DEV_CLIENT_ID=oy_dev_<project>
82
+ OYNA_DEV_CREDENTIAL=oy_sec_<tester-1>
83
+
84
+ # دستگاه ۲ — همان clientId، credential دیگر
85
+ OYNA_DEV_CLIENT_ID=oy_dev_<project>
86
+ OYNA_DEV_CREDENTIAL=oy_sec_<tester-2>
87
+ ```
88
+
89
+ - همهٔ تسترهای یک پروژه **همان `game.slug`** را دارند (shell همان پروژه).
90
+ - گزینهٔ «هویت خودم» یعنی نشست با حساب صاحب پروژه ساخته می‌شود.
91
+ - حداکثر ۱۰ تستر فعال در هر پروژه. Rotate همان تستر را روی secret جدید نگه می‌دارد؛ Revoke تستر را از کار می‌اندازد.
92
+ - کاربر تست در سایت لاگین نمی‌کند و در لیست کاربران و کاتالوگ دیده نمی‌شود.
93
+ - Credentialهایی که قبل از این قابلیت ساخته شده‌اند با همان `clientId` قبلی‌شان مثل قبل کار می‌کنند و هویت صاحب پروژه را دارند.
94
+
95
+ ---
96
+
97
+ ## چه چیزی ساخته نمی‌شود
98
+
99
+ - Game در Catalog عمومی
100
+ - slug قابل `/play/:slug`
101
+ - entryUrl روی سایت
102
+
103
+ Dev Project فقط برای توسعه است. انتشار بازی مسیر جدا (ادمین / Catalog) دارد.
104
+
105
+ ---
106
+
107
+ ## Legacy Direct Dev (slug)
108
+
109
+ اگر هنوز `gameSlug` بدهید و credential ندهید، همان authorize popup قبلی کار می‌کند و نیاز به بازی **منتشرشده** دارد. برای پروژهٔ جدید از Credential استفاده کنید.
110
+
111
+ همچنین: [09-direct-development.md](./09-direct-development.md)
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@oyna360/game-sdk",
3
- "version": "0.5.3",
4
- "description": "oyna360 Game SDK — postMessage bridge + Direct Development Mode (init, scores, achievements, gem→coin).",
3
+ "version": "0.6.2",
4
+ "description": "oyna360 Game SDK — postMessage bridge, Developer Environment credentials, and Direct Development Mode.",
5
5
  "license": "MIT",
6
6
  "author": "oyna360",
7
7
  "keywords": [