無所属

ホーム ドキュメントとヘルプ
Steamworks ドキュメンテーション
Steam インベントリサービス
Steam インベントリサービスは、ユーザーやアイテムを管理する特別なサーバーを用意せずに、ゲーム内で永続的なプレイヤーインベントリを有効化できる機能セットです。

Steamworks 開発者グループ内の、Steam インベントリ掲示板へフィードバックまたは質問をお寄せください。

説明

インベントリサービスは 2 つの方法で使用できます。サーバーレスで使う方法と、ゲームの状態を把握している信頼できるサーバーを追加する方法です。

ゲームサーバーなしの場合、ゲームクライアントは Steam サービスと直接コミュニケーションすることで、ユーザーインベントリのコンテンツの取得、アイテムの消費と交換、プレイタイムに応じた新規アイテムの受け取りができます。 ユーザーはアイテムストアで直接アイテムを購入でき、Steam コミュニティ内でもトレードや取引を行えます。

ただし、クライアントは信頼できないため(さらにクライアント内のキーは常に攻撃者によって奪われる可能性がある)ので、このスキームではユーザーに特定のアイテムを与えることはできません。 その代わり、ドロップできるアイテムを指定して、ドロップの頻度を設定できます。 適切なタイミングで、ゲームクライアントがISteamInventory::TriggerItemDropを呼び出します。 プレイヤーごとのプレイ時間とドロップ頻度は、Steam サーバーが管理します。 これらの API は信頼されていない内部「クライアント API キー」を使用して呼び出されます。

信頼できるサーバーがある場合には、そのサーバーに権限を持った Steam API キーを使用して、適切な状況で指定アイテムを与えることができます。 それでも、クライアントを信頼することはできないという点を心に留めておいてください。サーバーがゲームの状態を把握しているときのみに実行すべきでしょう。

最後に、 ゲーム内またはウェブベースのストアフロントを通じて、個別のアイテムやカート内のアイテムを、インベントリサービスと連動させて販売できます。

Steam Dev Days 2016 のプレゼンテーションを参照してください。実装の概要、開発者がインベントリサービスで解決できる特定の問題の詳細、既に確立されたシステム利用法を紹介しています。

https://www.youtube.com/watch?v=jDfhPTSOLis

実装の概要

  1. アイテムの定義を作成
    いくつかのアイテム定義 (ItemDefs)を作成してアップロードすることから始めます。
    定義はゲーム内で可能なアイテムセットについての記述です。 定義をゲームから使用する必要はありませんが、Steam が正しくインベントリを表示するために必要です。 ItemDefs の作成には、Steamworks 設定エリア内の「コミュニティ] タブから [インベントリサービス] を開きます。 こちらのリンクをご利用ください: https://partner.steamgames.com/apps/inventoryservice/
  2. インベントリサービスを有効にする
    アイテム定義を用意できたら、アイテム定義をアップロードしたページの [インベントリサービスを有効化]のボックスにチェックを入れてサービスを有効化してください。
  3. アセットサーバーキーの設定
    まずはじめに、アプリ用のパブリッシャー Web API キーを作成 (手順はこちら: パブリッシャー Web API キーの作成)し、Steam エコノミー設定のアセットサーバーキー欄に入力してください。
  4. ユーザーのインベントリをダウンロード
    ISteamInventory::GetAllItemsを呼び出してゲームクライアントにユーザーのインベントリをダウンロードさせます。
    トレードや購入でユーザーがより多くのアイテムを持っていることを想定して、頻繁に呼び出してください。
    ゲームによっては、ゲームまたはレベルの開始、終了時にチェックすることが良いこともあります。
  5. テストアイテムの付与
    ISteamInventory::GenerateItems を使って、開発目的で現在のプレイヤーに特定のアイテムを追加できます。
  6. ユーザーにプレイ時間ドロップを付与(オプション)
    適宜(一般にはマッチやフェーズ終了後)ISteamInventory::TriggerItemDrop を呼び出して、ユーザーが新しいドロップを獲得したかをチェックします。
  7. アイテムの販売 (任意)
    マイクロトランザクション (課金) サポートを追加するには itemdefs 内で価格を定義します。 価格を定義すると、アイテムがいくつかの方法で購入可能になります:

API

Steam インベントリ API のドキュメントは、こちらの API リファレンスを参照してください: ISteamInventory

Web APIs

Steam インベントリ Web API のドキュメントは、こちらの Web API リファレンスを参照してください: IInventoryService

Web 関数

これらは構造化された Web ページでユーザーを他のページへリダイレクトできます。
  • ItemCart - Steam を通して、カートに入った複数のアイテムを送信する際に使用します。
  • BuyItem - Steam を通してアイテムを 1 つ購入する際に使用します。