ユーザーが初めて生成したコンテンツを発行する
Important
エコノミー v2 が一般提供になりました。 サポートとフィードバックについては、PlayFab フォーラム をご利用ください。
このチュートリアルでは、API とゲーム マネージャー UX の両方を介してコンテンツを含む UGC を公開する手順について、クイック スタートよりも詳しく説明します。
要件
- PlayFab 開発者アカウント
- UGC 対応タイトル
API 経由
このセクションでは、Postman コレクションを活用して、PlayFab UGC API を操作しますが、任意の SDK を活用できます。
BLOB URL の作成
UGC システムは PlayFab エンティティ モデルで動作します。そのため、これらの API を呼び出すには、セッション チケットの代わりにエンティティ トークンを使用する必要があります。 タイトル エンティティ トークンを取得する方法については、Postman コレクションのクイックスタートを参照してください。
UGC システムは、Azure Blob Storage を利用して、タイトルの UGC に関連付けられているすべてのコンテンツ (ファイルとイメージ) を格納します。 コンテンツをアップロードするには、最初に
CreateUploadUrls
API を呼び出し、ファイル名とサイズ (バイト単位) を渡して新しい BLOB を作成する必要があります。 たとえばテキスト ファイルと PNG 画像をアップロードする場合には、次の内容を要求本文に渡します。{ "Files": [ { "FileName": "HelloWorld.txt", "FileSize": 12 }, { "FileName": "PlayFabLogo.png", "FileSize": 20725 } ] }
応答には、コンテンツの各部分の
Id
とUrl
が含まれます。{ "code": 200, "status": "OK", "data": { "UploadUrls": [ { "Id": "[Content ID]", "Url": "[Content Url + '?' + Token]", "FileName": "HelloWorld.txt" }, { "Id": "[Image ID]", "Url": "[Image Url + '?' + Token]", "FileName": "PlayFabLogo.png" } ] } }
注意
各作成トークン (応答の "Url" フィールドで返されます) は 6 時間有効です。その後にコンテンツを BLOB にアップロードすることはできません。 BLOB にコンテンツをアップロードしなかった場合、BLOB はサービスによってクリーンアップされ、もう一度
CreateUploadUrls
を呼び出して新しい BLOB を作成する必要があります。 この URL は、別の (パブリックにアクセス可能な) URL を受け取る下書きアイテムにアップロードされるまで、コンテンツへのアクセスも許可されません。注意
各 BLOB は、1 つのアイテムでのみ使用できます。 複数のアイテムでコンテンツの一部を繰り返す場合は、コンテンツを別の BLOB に再アップロードする必要があります。
コンテンツを BLOB へとアップロードする
これらの URL にコンテンツをアップロードするには、いくつかの方法があります
Postman 経由
CreateUploadUrls
を呼び出し、comp: blob
およびx-ms-blob-type: blockblob
をヘッダーとして追加することによって生成された URL を持つPUT
要求を作成します。次に、本文の種類として バイナリ を選択することによってファイルをアップロードすることができます。
AzCopy 経由
もう 1 つのオプションは、AzCopy ツールを使用する方法です。 ツールをダウンロードすれば、AzCopy の使用を開始することができます。
選択したターミナルで、次のパラメーターを使用して AzCopy を呼び出します。
[relative path to azcopy.exe] copy [relative path to local content] [Url + '?' + Token]
下書き UGC を作成する
ファイルと画像が正常にアップロードされたので、
CreateDraftItem
を呼び出してコンテンツと画像の URL を渡して、下書きカタログで最初のアイテムを作成することができます。{ "Item": { "Type": "ugc", "Title": { "NEUTRAL": "Hello World!" }, "Description": { "NEUTRAL": "My first UGC item (with content!)" }, "ContentType": "Game Item", "IsHidden": false, "Contents": [ { "Id": "[Content ID]", "Url": "[Content Url]" } ], "Images": [ { "Id": "[Image ID]", "Type": "Thumbnail", "Url": "[Image Url]" } ] }, "Publish": false, "AllowOverwrite": false }
注意
アイテムに画像をアップロードする場合、すべての画像を
Type
パラメーターで分類する必要があります。 これは、"サムネイル" または "スクリーンショット" のいずれかになります。 各アイテムは "Thumbnail" タイプの 1 つの画像にのみ制限され、既定では、検索 は既定で "Thumbnail" 画像 (存在する場合) を返します。応答では、渡されたメタデータがアイテム ID とともに返されます。
{ "code": 200, "status": "OK", "data": { "Item": { ... "Id": "e5427509-1b72-4ee1-9e6c-03fc055a94f3", ... } } }
注意
作成した下書きアイテムによって返されるコンテンツ/画像の URL と元の
CreateUploadUrls
呼び出しは異なります。 コンテンツのアップロード方法に関係なく、("?" より前の) ベース URL をコピーしてブラウザーでアクセスすることによりアップロードが成功したかどうかをテストすることができます。 これにより、画像は下書きアイテムにアップロードされた後にのみ返され、CreateUploadUrls
の URL を使用して返されることはありません。下書きの UGC アイテムが下書きカタログに存在しています。 UGC アイテムがまだ発行されていない限り、公開カタログを介して検索を行うことはできません。 この UGC アイテムは、次のいずれかの API を呼び出すことによって確認することができます。
-
GetDraftItem
、CreateDraftItem
応答から取得したアイテム ID を渡します。 -
GetDraftItems
、既知のアイテム ID の一覧を渡します -
GetEntityDraftItems
、エンティティ ID を渡したり、下書きアイテムの一覧を介して前の各応答からページに ContinuationToken を渡したりします。
-
注意
すぐに発行する場合には、Publish
フィールドを true に変更します。
- UGC アイテムを発行する準備ができたら
PublishDraftItem
を呼び出し、(CreateDraftItem
応答から取得した) アイテム ID を渡します。 - UGC アイテムに特に大きなファイルが複数含まれている場合、アイテムの発行に時間がかかる可能性があります。また、たくさんのプレイヤーが同時にコンテンツをアップロードする場合、この処理にはさらに時間がかかる可能性があります。
GetItemPublishStatus
を呼び出して、発行の状態を確認することができます。(CreateDraftItem
応答から取得した) アイテム ID を渡します。 以下のようないくつかの状態が考えられます。-
Succeeded
- UGC アイテムが正常に発行されました -
Pending
- UGC アイテムはまだ発行処理中です -
Failed
- UGC アイテムの発行は失敗し、問題となっているコンテンツが変更されない限りは発行されません -
Unknown
- これは既定の状態であり、UGC アイテムでPublishDraftItem
を呼び出す前に返されます -
Canceled
- 内部エラーが発生しました。もう一度アイテムの発行をお試しください (この状態が複数回表示される場合には、PlayFab エンジニアリング チームまでお問い合わせください)
-
- UGC アイテムが正常に発行されると、
SearchItems
を介して検索を行ったり、アイテム ID をお持ちの場合にはGetItem
を介して直接取得することができます。 - 発行前または発行後に UGC アイテムを変更するには、次の手順を実行します。
-
GetDraftItem
を呼び出し、(CreateDraftItem
応答から取得した) アイテム ID を渡します - UGC アイテムのデータ (
data
フィールド内のすべてのもの) をコピーします。 -
UpdateDraftItem
を呼び出し、変更された UGC アイテムのデータを渡します。 - ファイルまたは画像を更新する場合には、
CreateUploadUrls
をもう一度呼び出して別の BLOB を作成する必要があります。 -
PublishDraftItem
を呼び出して UGC アイテムを再発行する
-
ゲーム マネージャー経由
このセクションでは、ゲーム マネージャー エクスペリエンス内ですべての UGC アイテムを作成します。コーディングは必要ありません。
下書きカタログ項目を作成する
[エコノミー>カタログ] (v2) を選択し、UGC ページにアクセスします。
[新しい項目] を選択します。
UGC アイテムの適切なメタデータを入力します。
フィールド名 値 エンティティの種類 title_player_account エンティティ ID [あなたのプレイヤー ID] コンテンツの種類 ゲーム アイテム 開始日 [任意の過去の日付] タイトル { "NEUTRAL": "Hello World!" }
説明 { "NEUTRAL": "My first UGC item (with content!)" }
[ファイルと画像] セクションで [アップロード] ボタンを選択し、適切なコンテンツをアップロードします。
[保存して発行] を選択します。
これで UGC アイテムが下書きアイテムとして自動的に作成され、公開カタログに発行されます。このアイテムは、その他の発行済みの UGC アイテムとともにテーブル内にあります。
注意
現在、ゲーム マネージャー内で下書きアイテムまたは発行状態を確認することはできません。API を介してのみ実行可能となっています。
- 発行された UGC アイテムに変更を加える場合には、次の操作を行います。
- テーブルで発行されている UGC アイテムを選択する
- 適切な編集を行う
- [保存して発行] を選択する
トラブルシューティング
- 無効な要求 - コンテンツの種類 "Game Item" はサポートされていません。
- タイトルの構成でコンテンツの種類が ([エコノミーの設定] タブの
GetCatalogConfig
/UpdateCatalogConfig
または [ゲーム マネージャー] のいずれかを介して) 指定されている場合には、一覧にゲーム アイテムを追加するか、タイトルが既にサポートしているコンテンツの種類へと変更する必要があります
- タイトルの構成でコンテンツの種類が ([エコノミーの設定] タブの
- 無効な要求 - このタイトルは、このサービスを使用するように構成されていません。
- ご利用のタイトルの UGC は、現在無効化されています。これを有効化するには、タイトルの構成を更新する必要があります (
GetCatalogConfig
/UpdateCatalogConfig
や [エコノミーの設定] タブにある [ゲーム マネージャー] を経由するか、または [エコノミー > カタログ] (プレビュー) タブの順に移動し、[有効化する] を選択します)
- ご利用のタイトルの UGC は、現在無効化されています。これを有効化するには、タイトルの構成を更新する必要があります (
次の手順
これで、カタログに UGC アイテムが発行されました。 プレイヤー向けにコンテンツ検出エクスペリエンスを作成するために、SearchItems
を活用することができます。