Xbox サービス タイトル ストレージの概要
このトピックでは、Xbox サービス タイトル ストレージとその機能について説明し、それらを構成する方法を示します。 Xbox サービス タイトル ストレージ サービスは、プレーヤーごとまたはゲームごとの大量のデータ用にクラウド ストレージを提供します。 プレイヤーの統計情報や資産を保存するために使用できます。 すべての Xbox プラットフォームで実行されているゲームは、タイトル ストレージを使用できます。
Xbox サービス タイトル ストレージの機能
Xbox サービス タイトル ストレージには、次の高レベルの機能が含まれています。
プレーヤー、タイトル、さまざまなプラットフォーム間で共有できます
JSON、バイナリ、構成ファイルがサポートされます
ストレージの種類
ストレージの種類 | クォータ (対象パートナー) | クォータ (クリエーターズ プログラム) | 目的 | プラットフォーム | プレイヤー |
---|---|---|---|---|---|
信頼されたプラットフォーム | 256 MB/ユーザー | 64 MB/ユーザー | セーブ データやゲーム状態 (再生/一時停止/再開) などのプレイヤー単位のデータ。 セキュリティは高くなりますが、プラットフォームの制限があります。 | どのプラットフォームでも読み取りを行うことができますが、書き込みを行えるのは Xbox One ファミリ以降、Xbox 360、Windows Phone のみです。 | パブリックまたは所有者のみに構成できます。 |
ユニバーサル プラットフォーム | 64 MB/ユーザー | 64 MB/ユーザー | セーブ データやゲーム状態 (再生/一時停止/再開) などのプレイヤー単位のデータ。 | すべてのプラットフォームで読み取り/書き込みが可能です。 | パブリックまたは所有者のみに構成できます。 |
グローバル | 256 MB | 256 MB | ロスター、マップ、チャレンジ、アート リソースなど、だれでも読み取ることができるデータ。 | 書き込みは Xbox デベロッパー ポータルまたはパートナー センターからのみ可能であり、読み取りはすべてのプラットフォームで可能です。 | すべてプレイヤーのが読み取れます。 |
調整の制限
タイトルが 1 分間に実行できる読み取りまたは書き込みの回数に制限はありませんが、一般に、1 時間のセッションで 1 分あたり平均 1 回を超えることはできません。 たとえば、タイトルがセッションの冒頭に 60 回の読み取りまたは書き込みを行うと、その 1 時間の残りの期間はそれ以上の読み取りまたは書き込みを行えません。 Xbox サービスが要求の調整を必要とする場合、後で多くの呼び出しを行えるようにタイトルを強化する必要があります。
注意
タイトルに、追加の読み取りや書き込みなどの特殊なパーティション要件がある場合は、Microsoft の担当者にお問い合わせください。
データの種類
このセクションでは、サポートされている 3 つの種類について説明します。
バイナリ情報
バイナリ情報には、画像、音声、カスタム データなどが含まれます。 HTTP 経由でバイナリ データを転送する必要があるので、バイナリ データを HTTP で許可される文字にエンコードする必要があります。 たとえば、データを 16 進数の文字列に変換するか、または base64 エンコードを使用できます。 タイトル ストレージはエンコードされたデータを処理しないため、ゲームでは、タイトル ストレージの読み取り時と書き込み時のデータのエンコードとデコードに、同じ方式を使用する必要があります。
JSON 情報
JSON 情報には、構造化データ (キーと値のペア) が含まれます。 JavaScript など、JSON オブジェクトをサポートする言語で JSON オブジェクトを使用できます。 JSON ファイルからデータを取得するときに、ゲームは selectQuery
パラメーターを提供して、構造内の特定の項目を返すことができます。 たとえば、次の情報を含む JSON ファイルを使用します。
{
"difficulty" : 1,
"level" :
[
{ "number" : "1", "quest" : "swords" },
{ "number" : "2", "quest" : "iron" },
{ "number" : "3", "quest" : "gold" },
{ "number" : "4", "quest" : "queen" }
],
"weapon" :
{
"name" : "poison",
"timeleft" : "2mins"
}
}
注意
セキュリティ上の理由から、JSON データの最初の要素を配列にしないでください。 ルートの配列で送信される JSON データは、サービスによって拒否されます。
ゲームはJSON 構造の一部を selectQuery
(たとえば、weapon.name
) として選択でき、次の情報を受け取ります。
{
"name" : "poison"
}
構成情報
構成 BLOB は、グローバル タイトル ストレージに格納されるデータ構造です。 構成 BLOB の形式は JSON オブジェクトに似ています。 構成 BLOB には、候補リストからの設定を返す仮想ノードを含めることができます。 仮想ノードは、タイトルやロケールなどの特定の状況に応じた設定を提供する場合に役立ちます。 仮想ノードには、いくつかの使用可能な設定値と、それらの値から選択するための条件が含まれます。 次の例では、defaultCardDesign
設定を、仮想ノード内のいずれかの値にすることができます。
{
"defaultCardDesign":
{
"_virtualNode":
{
"_selectBy":"titleId",
"_sourceNodes":
[
{"_selector":"123456799", "_data":"RobotUnicornCard.png,binary"},
{"_selector":"default", "_data":"StandardCard.png,binary"}
]
}
},
}
ゲームがこのファイルを読み取ると、システムは \_sourceNodes
配列の値の 1 つを選択します。 この場合は、ゲームのタイトル ID に基づいて項目が選択されます。 たとえば、ゲーム 12456799
をプレイしているプレーヤーには、次のように表示されます。
{
"defaultCardDesign":"RobotUnicornCard.png,binary",
"_sourceNodes":["defaultCardDesign:titleID:1234567899"]
}
ゲームをプレイしていないプレイヤーには、次のように表示されます。
{
"defaultCardDesign":"StandardCard.png,binary",
"_sourceNodes":["defaultCardDesign:titleID:default"]
}
ゲームでは、要求内のパラメーターと一致するカスタム セレクターを定義できます。 たとえば、この構成 BLOB で次の JSON オブジェクトを考えます。
{
"defaultCardDesign":
{
"_virtualNode":
{
"_selectBy":"custom:gameMode",
"_sourceNodes":
[
{"_selector":"silly", "_data":"RobotUnicornCard.png,binary"},
{"_selector":"serious", "_data":"SeriousCard.png,binary"},
{"_selector":"default", "_data":"StandardCard.png,binary"}
]
}
},
"backgroundColor":"green",
"dealerHitsOnSoft17":true
}
ゲームは customSelector
パラメーターで文字列を渡して、返す項目を選択します。 たとえば、2 つ目のオプションを取得する場合、ゲームは gameMode.serious
を selectQuery
として要求します。
Xbox サービス タイトル ストレージの使用を開始するには
保存するデータの種類を決定します。 セーブ データ、ゲーム状態、デイリー チャレンジ、ゲーム マップ、アート リソースなどがあります。
データにアクセスする必要があるタイトルとプラットフォームを決定します。 タイトル ストレージでは、単一プラットフォーム上の単一タイトルから、および複数プラットフォーム上の複数タイトルからの、クラウド データ アクセスがサポートされています。