@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 +35 -13
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +51 -10
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +13 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/docs/00-overview.md +2 -2
- package/docs/02-init.md +138 -136
- package/docs/03-user-session.md +33 -33
- package/docs/04-end-session.md +22 -22
- package/docs/05-scores.md +30 -30
- package/docs/06-leaderboard.md +19 -19
- package/docs/07-postmessage-protocol.md +45 -45
- package/docs/08-wallet.md +40 -32
- package/docs/09-direct-development.md +1 -1
- package/docs/10-developer-environment.md +111 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -9,9 +9,9 @@ SDK رسمی اتصال **بازی شما** به **پلتفرم oyna360**.
|
|
|
9
9
|
- در **Production** داخل iframe پلتفرم کار کند
|
|
10
10
|
- در **Development** بدون iframe، مستقیم به سرور oyna360 وصل شود
|
|
11
11
|
|
|
12
|
-
**نسخه:** `0.
|
|
12
|
+
**نسخه:** `0.6.0` · بدون وابستگی runtime · TypeScript داخل پکیج
|
|
13
13
|
|
|
14
|
-
>
|
|
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.
|
|
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
|
-
| **
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
//
|
|
62
|
-
//
|
|
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
|
-
## شروع سریع —
|
|
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-
|
|
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
|
-
* -
|
|
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;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
* -
|
|
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.
|
|
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
|
-
/**
|
|
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;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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,
|
|
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;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,GAAG,CAAC,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;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"}
|
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
|
+
exports.SDK_VERSION = '0.6.0';
|
|
6
6
|
//# sourceMappingURL=types.js.map
|
package/docs/00-overview.md
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
| کار | کجا |
|
|
22
22
|
|-----|-----|
|
|
23
|
-
| لابی ۳D
|
|
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-
|
|
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
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
|
132
|
-
|
|
133
|
-
| `
|
|
134
|
-
|
|
|
135
|
-
|
|
136
|
-
|
|
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)
|
package/docs/03-user-session.md
CHANGED
|
@@ -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)
|
package/docs/04-end-session.md
CHANGED
|
@@ -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)
|
package/docs/06-leaderboard.md
CHANGED
|
@@ -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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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-
|
|
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.
|
|
4
|
-
"description": "oyna360 Game SDK — postMessage bridge
|
|
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": [
|