アイテムシステムとプラットフォーム有料ストア
このシステムは、ゲームプラットフォーム向けに統一された有料アイテム管理ソリューションを提供し、スタンドアロンゲームのアイテム購入、配布、統計などの機能をサポートし、アイテム購入、照会、増減、プロセストリガー配布機能を実装します。
- コア機能:アイテム購入、所持照会、増減操作、変更監視、ゲームプロセストリガー配布
1. 開発者バックエンド管理機能
- 開発者はバックエンドを通じて手動でアイテムデータを作成でき、テーブル(アイテムユニット表)とアイテムアイコンのアップロードをサポートします。
- 有料のストアアイテムは現在、手動作成のみサポートしています。
- 最大 5000 件のアイテムデータエントリの作成をサポートします。
- 現在は買い切り制とアプリ内課金タイプのゲームのみサポートしています。
- アイテム作成後は承認が必要です。承認されると、デフォルトで有効状態になります。
アイテム管理機能:
アイテムID:一意の識別子、作成後は変更不可
アイテム名とアイコン:フロントエンド表示に使用
アイテムアイコン:アイコン画像の手動交換をサポート
アイテム作成ルール:ゲームアイテムとストア有料アイテムの選択をサポート
アイテム制限:プラットフォームを通じたプレイヤーへの配布制限の設定をサポート、毎日配布数量制限、総数量制限、または制限なし
アイテム在庫:数量入力または制限なしを選択可能
アイテム価値設定:
無料アイテム(Platform activities):プラットフォーム活動を通じた配布をサポート。
有料購入(Paid purchase):アイテムストアでの有料購入をサポート。
デフォルト米ドル建て
アイテムユニット価格は0.0001米ドルまでの精度をサポート
ストア有料アイテムの最小価値入力は1米ドル

2. アイテム SDK 統合
コアインターフェース説明
| インターフェース名 | メソッドシグネチャ | 機能説明 |
|---|---|---|
| 購入ウィンドウを開く | openBuyGameItemsDialog(level: number) | ゲーム内の機能 UI を通じてストアアイテム購入ダイアログを表示します。 |
| 所持アイテムを取得 | getUserGameItems(): GameItem[] | ゲーム入室時にプレイヤーの現在のアイテムリストを照会します(ID と数量を含む)。 |
| アイテムを追加 | addGameItem(itemId: string, amount: number) | ゲーム進行中にアイテムを配布します(購入、レベル報酬、ミッション完了などのシナリオをサポート)。 |
| アイテムを減少 | subtractGameItem(itemId: string, amount: number) | アイテムを消費します(ゲーム進行中の使用や消費のシナリオ、差引後の数量は非負)。 |
| 変更通知を購読 | subscribeGameItemChange(callback: (res: GameItemChange) => void) | ストア有料アイテムの支払い完了時のコールバックメソッド。 |
主要データ形式
- **GameItem(アイテム情報)**:
{ itemId: string, amount: number } - **GameItemChange(変更情報)**:
{ itemId: string, amount: number, changeType: 'add'|'subtract', total: number }
2.1 所持アイテムリストを取得
javascript
// プレイヤーの所持アイテムリストを取得(ゲーム初期化時に呼び出し)
const items = window.JOGOS_SDK.gameItem.getUserGameItems();
console.log('所持アイテム:', items);2.2 アイテム購入ウィンドウを開く
javascript
// アイテム購入ウィンドウを開く
window.JOGOS_SDK.gameItem.openBuyGameItemsDialog(10);2.3 アイテムを追加
javascript
// アイテムを追加(ID:3232addasdda3aa2、数量10)
window.JOGOS_SDK.gameItem.addGameItem('3232addasdda3aa2', 10);2.4 アイテムを減少
javascript
// アイテムを減少(ID:3232addasdda3aa2、数量5)
window.JOGOS_SDK.gameItem.subtractGameItem('3232addasdda3aa2', 5);2.5 アイテム変更通知を購読
javascript
// アイテム変更通知を購読
window.JOGOS_SDK.gameItem.subscribeGameItemChange((res) => {
console.log('アイテム変更:', res);
});2.6 有料アイテム購入フロー
javascript
// 1. 有料アイテム購入を開始(商品ID:item_gold_100、100ゴールドコインアイテムに対応)
async function buyGoldItem() {
try {
const orderNo = await window.JOGOS_SDK.payment.buyGoods('item_gold_100');
console.log('注文作成成功、注文番号:', orderNo);
} catch (err) {
console.error('注文作成失敗:', err);
alert('購入開始失敗、後ほど再試行してください');
}
}
// 2. 支払い成功通知を購読(ゲーム初期化時に呼び出し)
window.JOGOS_SDK.payment.subscribeOrderPaid(async (order) => {
console.log('支払い成功、注文詳細:', order);
if (order.status === 'success') {
// 3. 対応アイテムを配布(商品ID:item_gold_100 はアイテムID:3232addasdda3aa2 に対応)
window.JOGOS_SDK.gameItem.addGameItem('3232addasdda3aa2', 100);
// 4. プラットフォームに出荷通知(必須呼び出し、否则注文状態異常)
await window.JOGOS_SDK.payment.deliverGoods(order.orderNo);
alert('100ゴールドコイン購入成功、バックパックに配布されました!');
}
});
// 3. 異常シナリオ:注文詳細を照会(例:支払い後アイテム未受領)
async function checkOrder(orderNo) {
try {
const order = await window.JOGOS_SDK.payment.getOrderDetail(orderNo);
console.log('注文詳細照会:', order);
if (order.status === 'success') {
// アイテムを再配布
window.JOGOS_SDK.gameItem.addGameItem('3232addasdda3aa2', 100);
await window.JOGOS_SDK.payment.deliverGoods(orderNo);
}
} catch (err) {
console.error('注文照会失敗:', err);
}
}2.7 ゲームプロセスによるアイテム配布トリガー(例:レベルクリア報酬)
javascript
// レベル10クリアでアイテム配布をトリガー(重複受け取り防止の重複排除ロジック含む)
function onLevel10Clear() {
// スタンドアロンゲーム:ローカルストレージを使用して配布状態を記録
const hasIssued = localStorage.getItem('level10_award_issued');
if (hasIssued) {
alert('このレベル報酬は既に受け取っています、重複して受け取ることはできません');
return;
}
// アイテムを配布(ID:3232addasdda3aa2、数量10)
window.JOGOS_SDK.gameItem.addGameItem('3232addasdda3aa2', 10);
// 配布状態を記録
localStorage.setItem('level10_award_issued', 'true');
alert('レベル10クリア成功!10個のアイテム報酬を獲得しました');
}