@oyna360/game-sdk 0.6.0 → 0.6.3
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 +4 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -8
- package/dist/index.js.map +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 +22 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ SDK رسمی اتصال **بازی شما** به **پلتفرم oyna360**.
|
|
|
11
11
|
|
|
12
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
|
|
|
@@ -181,7 +181,7 @@ Production از `postMessage` به parent استفاده میکند؛ Direct
|
|
|
181
181
|
|
|
182
182
|
```ts
|
|
183
183
|
import { PlatformSDK } from '@oyna360/game-sdk';
|
|
184
|
-
import { PlatformLobby } from '@oyna360/lobby-
|
|
184
|
+
import { PlatformLobby } from '@oyna360/lobby-babylon';
|
|
185
185
|
|
|
186
186
|
const init = await PlatformSDK.init({ /* … */ });
|
|
187
187
|
const lobby = await PlatformLobby.create({
|
|
@@ -194,6 +194,8 @@ const lobby = await PlatformLobby.create({
|
|
|
194
194
|
|
|
195
195
|
`lobby.wsUrl` را هاردکد نکنید.
|
|
196
196
|
|
|
197
|
+
کل `init` را منتقل کنید تا مدل، لباس و اکسسوری کاربر حفظ شود. `PlatformLobby.create` لود GLB، Draco و آواتار دیگران را خودکار انجام میدهد. برای رندر در صحنهٔ اختصاصی و محدودیتهای شخصیسازی، [راهنمای آواتار](https://github.com/mamadjavadrasti/oyna360-lobby-babylon/blob/master/docs/08-avatars.md) را بخوانید.
|
|
198
|
+
|
|
197
199
|
---
|
|
198
200
|
|
|
199
201
|
## لایسنس
|
package/dist/index.d.ts
CHANGED
|
@@ -40,7 +40,7 @@ export declare function getWallet(): Promise<WalletBalanceResponse>;
|
|
|
40
40
|
* Convert platform gems into in-game coins.
|
|
41
41
|
* Platform deducts gems; the game must credit `coinsReceived` to its own economy.
|
|
42
42
|
*/
|
|
43
|
-
export declare function convertGems(gems: number): Promise<ConvertGemsResponse>;
|
|
43
|
+
export declare function convertGems(gems: number, requestId?: string): Promise<ConvertGemsResponse>;
|
|
44
44
|
export declare function endSession(): Promise<void>;
|
|
45
45
|
export declare const PlatformSDK: {
|
|
46
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;YAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;KACH;CACF;
|
|
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
|
}
|
|
@@ -564,15 +564,18 @@ async function getWallet() {
|
|
|
564
564
|
* Convert platform gems into in-game coins.
|
|
565
565
|
* Platform deducts gems; the game must credit `coinsReceived` to its own economy.
|
|
566
566
|
*/
|
|
567
|
-
async function convertGems(gems) {
|
|
567
|
+
async function convertGems(gems, requestId) {
|
|
568
568
|
const payload = await init();
|
|
569
569
|
if (!Number.isInteger(gems) || gems < 1) {
|
|
570
570
|
throw new Error('gems must be a positive integer');
|
|
571
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
|
+
}
|
|
572
575
|
return callPlatformFeature('platform:gems:exchange', { sessionToken: payload.session.token, gems }, 'platform:gems:exchange:result', () => apiRequest(`/games/${payload.game.slug}/wallet/exchange`, {
|
|
573
576
|
method: 'POST',
|
|
574
|
-
body: { gems },
|
|
575
|
-
}));
|
|
577
|
+
body: { gems, requestId },
|
|
578
|
+
}), requestId);
|
|
576
579
|
}
|
|
577
580
|
async function endSession() {
|
|
578
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/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',
|
|
@@ -72,6 +72,28 @@ Origin صفحه (مثلاً `http://localhost:5173`) فقط وقتی اجبار
|
|
|
72
72
|
|
|
73
73
|
---
|
|
74
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
|
+
|
|
75
97
|
## چه چیزی ساخته نمیشود
|
|
76
98
|
|
|
77
99
|
- Game در Catalog عمومی
|
package/package.json
CHANGED