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