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

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

説明

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

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

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

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

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

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

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

実装の概要

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

API

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

Web API

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

Web関数

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