mcpField
R
remix-shop-items

remix-shop-items

github.com/farworld-labs開発61 回インストール
リポジトリ

remix-shop-items について

remix-shop-itemsは、Remixプラットフォームのゲーム開発者向けに、ショップアイテムの管理とRemixSDKとの連携を案内するワークフロースキルです。購入状態の扱いも説明します。

主な機能

  1. 01ゲームIDの確認と再利用
  2. 02変更前のアイテム一覧表示
  3. 03アイテムの作成・更新・削除
  4. 04RemixSDKのショップ連携
  5. 05購入コールバックとインベントリの処理

活用シーン

  1. 01ゲームへの消耗品購入の追加
  2. 02アイテム価格や名前の更新
  3. 03作成前のアイテム状態の確認

MCP 対応

可能な場合は公式CLIまたはMCPツールチェーンの利用を推奨します。MCP経由で対象アイテムの `iconUrl` を省略すると、`createShopItem` がアイコンを生成できます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/farworld-labs/remix-skills --skill remix-shop-items

インストール後、Claude Code で/remix-shop-itemsを入力して読み込まれたか確認します。

詳細

ショップアイテム管理ワークフロー

概要

このスキルでは、Remix プラットフォーム上のゲーム向けに、ショップアイテムを作成、管理、統合する方法を説明します。

前提条件

  • ゲームがすでに存在している必要があります。
  • gameId はまずタスクコンテキストから再利用し、次に .remix-cli.json、その次に、利用可能であれば従来の .remix-mcp.json から取得してください。
  • 可能な場合は、手書きの HTTP を使うのではなく、公式の CLI または MCP ツールチェーンを使用してください。

手順

1. 既存のゲーム ID を確認する

まず、タスクコンテキストまたは以前のツールの結果を確認してください。それ以外の場合は、現在のディレクトリにある .remix-cli.json または従来の .remix-mcp.json を読み取ります。いずれかのファイルが存在し、gameId が含まれている場合は、その値を使用してください。

どちらのファイルも存在しない場合、またはどちらにも gameId が含まれていない場合に限り、upload-game ワークフローに従って作成してください。

2. ショップアイテムを管理する
すべてのアイテムを一覧表示する

現在のアイテムを必ず最初に一覧表示し、適切な itemId を再利用してスラッグの重複を避け、アイテムがすでに PENDING、ACTIVE、または INACTIVE かどうかを確認してください。

アイテムを作成する
POST https://api.remix.gg/v1/games/{gameId}/items
Authorization: Bearer $REMIX_API_KEY
Content-Type: application/json

{
  "name": "Extra Life",
  "slug": "extra-life",
  "itemType": "CONSUMABLE",
  "bitsCost": 50,
  "description": "Spend one to restore a life after game over.",
  "iconUrl": "https://asset-url.png"
}
  • itemType は CONSUMABLE、ONE_TIME、TIER_UNLOCK のいずれかです
  • CONSUMABLE と ONE_TIME では bitsCost が必須です
  • TIER_UNLOCK では tier が必須です
  • 新しいアイテムの状態は PENDING です
  • MCP を使用する場合、CONSUMABLE または ONE_TIME で iconUrl を省略すると、createShopItem によってアイコンを自動生成できます
アイテムを更新する
POST https://api.remix.gg/v1/games/{gameId}/items/{itemId}
Authorization: Bearer $REMIX_API_KEY
Content-Type: application/json

{ "bitsCost": 75, "name": "Extra Life Pack" }

部分的な本文を受け付けます。変更したいフィールドのみを含めてください。

アイテムを削除する
DELETE https://api.remix.gg/v1/games/{gameId}/items/{itemId}
Authorization: Bearer $REMIX_API_KEY
3. ゲームコードにショップアイテムを統合する

RemixSDK のショップ統合をゲームに追加します。

const sdk = window.RemixSDK
await sdk.ready()

function getConsumableBalance(slug, spentKey) {
  const purchased = sdk.getItemPurchaseCount(slug)
  const spent = Number(sdk.gameState?.[spentKey] || 0)
  return Math.max(0, purchased - spent)
}

async function buyExtraLife() {
  const result = await sdk.purchase({ item: 'extra-life' })
  if (!result.success) showPurchaseError()
}

sdk.onPurchaseComplete(({ success, item }) => {
  if (!success || item !== 'extra-life') return

  const currentState = sdk.gameState || {}
  const spent = Number(currentState.extraLivesSpent || 0)
  sdk.singlePlayer.actions.saveGameState({
    gameState: {
      ...currentState,
      extraLivesSpent: Math.max(0, spent - 1),
    },
  })
})

避けるべきパターン

次のことはしないでください。

  • onPurchaseComplete を待たずにアイテムを付与する。 プレイヤーに何かを付与する前に、必ずコールバックを待ってください。購入は失敗またはキャンセルされる可能性があります。

  • 新しいコードで singlePlayer.actions.purchase(...) を使用する。 sdk.purchase({ item: 'slug' }) を呼び出してください。

  • 購入状況の追跡に localStorage を使用する。 購入状況はプラットフォームが管理します。hasItem()、getItemPurchaseCount()、inventory、shopItems を使用してください。

  • 価格やアイテムのメタデータをゲームの状態にハードコードする。 アイテムのメタデータはプラットフォームから読み取り、gameState には使用回数のカウンターのみを保存してください。

ヒント

  • 繰り返し購入できるアイテムには CONSUMABLE、恒久的なアンロックには ONE_TIME、進行状況に応じたアイテムには TIER_UNLOCK を使用してください。
  • sdk.purchase(...) を await する場合も、sdk.onPurchaseComplete(...) を実行してください。
  • ゲームで現在の価格やアイコンのメタデータが必要な場合は、sdk.getShopItem(slug) または sdk.shopItems を使用してください。

コメント