Skip to content

アイテムシステムとプラットフォーム有料ストア

このシステムは、ゲームプラットフォーム向けに統一された有料アイテム管理ソリューションを提供し、スタンドアロンゲームのアイテム購入、配布、統計などの機能をサポートし、アイテム購入、照会、増減、プロセストリガー配布機能を実装します。

  • コア機能:アイテム購入、所持照会、増減操作、変更監視、ゲームプロセストリガー配布

1. 開発者バックエンド管理機能

  • 開発者はバックエンドを通じて手動でアイテムデータを作成でき、テーブル(アイテムユニット表)とアイテムアイコンのアップロードをサポートします。
  • 有料のストアアイテムは現在、手動作成のみサポートしています。
  • 最大 5000 件のアイテムデータエントリの作成をサポートします。
  • 現在は買い切り制とアプリ内課金タイプのゲームのみサポートしています。
  • アイテム作成後は承認が必要です。承認されると、デフォルトで有効状態になります。

アイテム管理機能:

‌アイテムID‌:一意の識別子、作成後は変更不可
‌アイテム名とアイコン‌:フロントエンド表示に使用
‌アイテムアイコン‌:アイコン画像の手動交換をサポート
‌アイテム作成ルール:ゲームアイテムとストア有料アイテムの選択をサポート
アイテム制限:プラットフォームを通じたプレイヤーへの配布制限の設定をサポート、毎日配布数量制限、総数量制限、または制限なし
‌アイテム在庫‌:数量入力または制限なしを選択可能
アイテム価値設定:
無料アイテム(Platform activities):プラットフォーム活動を通じた配布をサポート。
有料購入(Paid purchase):アイテムストアでの有料購入をサポート。
デフォルト米ドル建て
アイテムユニット価格は0.0001米ドルまでの精度をサポート
ストア有料アイテムの最小価値入力は1米ドル
提案
  • まずアイテムユニットを登録し、その後ストアでの有料購入用アイテムを手動で入力します。1つまたは複数のアイテムを選択してバンドル商品として販売することをサポートします。
  • アイテムが無料アイテムに設定されている場合、プラットフォームは運営計画に基づいてプレイヤーに配布することを選択する場合があります。プレイヤーがゲームに入ると、プレイヤーのゲームキャラクターに配信されます。

alt textalt text

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個のアイテム報酬を獲得しました');
}