2021年10月に UGC が Public Preview として公開され、2022年3月に GA(正式版として公開されること)となりました。
UGC とは User Generated Contents の略で、ユーザーが作成したコンテンツのことです。
SNS で考えると、Twitter であれば各ユーザーのツイート、Qiita であれば各ユーザーの記事が UGC にあたります。
ゲーム開発においては、例えば以下のようなものがあります。
- ゲーム内のマップ
- イラスト
- プレイヤーのスキン(見た目)
これらをユーザーからも提供してもらうことで、例えば以下の効果があります。
- コミュニティが活性化する
- より長くゲームを遊んでもらえる
- 拡散されることでより多くの人に遊んでもらえる
ゲームをより長く多くの人に遊んでもらうために、必要な機能ということですね。
PlayFab における UGC の作成から公開までの手順は次のとおりです。
- ドラフトアイテムを作成する
- ドラフトアイテムを公開する
ドラフトアイテムの一覧を取得したり、取得したドラフトアイテムの修正もできるようになっています。
API リファレンスもまだ整備されていないようで、現時点の情報はかなり少ないですが、独自に調べてまとめました。
「UGC を使ってみようかな」と考えている人には、間違いなく役に立つ情報だと思います。
それでは、さっそく見ていきましょう。
事前準備
クレジットカードの登録
まずはクレジットカードの登録が必要です。
とびっくりする人もいるかもしれませんが、無料枠があるので安心してください。
料金ページを日本語訳した画像を以下に載せました。
読むと、「最初の150kリクエストは無料」と書かれています。
つまり、15万リクエストは無料で使えるということです。
「月々」とは書かれていないので、使用数が蓄積されていくといつかは有料になりそうですね。
ドラフトアイテムの作成では画像やファイルを添付できるので、このファイルサイズに比例して料金もかかる仕組みになっています。
実運用では、ファイルや画像のサイズをできるだけ小さくする工夫が必要になるかと思います。
ローカルで試しに使ってみる分には、超えることはないですね。
タイトルの設定の変更
[タイトルの設定] -> [エコノミー] -> [カタログ(プレビュー)]より、コンテンツの種類とタグの登録をします。
ドラフトアイテムを作成するときに指定する ContentType と Tags は、事前に登録しておく必要があります。
[タイトルの設定] -> [エコノミー] -> [ポリシー(プレビュー)]より、CreateDraftItem の実行をクライアント側から許可してあげます。
初期値は許可しないようになっています。
これで事前準備は完了です。
UGCのドラフトを作成して公開する手順
ドラフトアイテムを作成する
ドラフトアイテムを作成するには、「CreateDraftItem」を使用します。
また、UGC まわりの API は「PlayFabEconomyAPI」を使用する点に注意してください。
void Start()
{
PlayFabClientAPI.LoginWithCustomID(new LoginWithCustomIDRequest
{
CustomId = "200",
CreateAccount = true,
}, result =>
{
Debug.Log("ログイン成功");
CreateDraftItem();
}, error =>
{
Debug.Log(error.GenerateErrorReport());
});
}
private void CreateDraftItem()
{
PlayFabEconomyAPI.CreateDraftItem(new CreateDraftItemRequest
{
Item = new PlayFab.EconomyModels.CatalogItem
{
Title = new Dictionary<string, string>
{
["NEUTRAL"] = "grape"
},
StartDate = new DateTime(2021, 12, 1),
Type = "ugc",
ContentType = "food",
Tags = new List<string> { "fruit" },
DisplayVersion = "1.0",
Description = new Dictionary<string, string>
{
["NEUTRAL"] = "粒の大きいフルーツ"
},
EndDate = new DateTime(2021, 12, 31),
},
}, result =>
{
Debug.Log("下書きアイテムの作成成功!");
Debug.Log($"{result.Item.Title["NEUTRAL"]}:{result.Item.Id}");
}, error =>
{
Debug.Log(error.GenerateErrorReport());
});
}
アイテムのプロパティは他にもたくさんありますが、今回は上記のみとしました。
「NEUTRAL」というのはデフォルトの意味で、他の言語が必要であれば言語ごとに定義することができます。
ドラフトアイテムの Type は ugc となっていなければ、エラーとなります。
また、ContentType と Tags もあらかじめタイトルの設定で登録しておかなければ、エラーとなります。
実行してみると、以下のログが出ました。
ドラフトアイテムを取得する
現時点では、ドラフトアイテムは GameManager からの確認ができず、プログラムから取得して確認するしかありません。
下書きアイテムの一覧を取得するには、GetEntityDraftItems を使用します。
private void GetEntityDraftItems()
{
PlayFabEconomyAPI.GetEntityDraftItems(new GetEntityDraftItemsRequest
{
Count = 10
}, result =>
{
Debug.Log("ドラフトアイテムの取得成功");
foreach (var item in result.Items)
{
Debug.Log($"ID:{item.Id}");
Debug.Log($"Title:{item.Title["NEUTRAL"]}");
}
}, error =>
{
Debug.Log(error.GenerateErrorReport());
});
}
最大10件までしか指定できない成約があります。
なのでドラフトアイテムを作成する時点で、10件を超える登録はできないよう制御をいれておくといいでしょう。
ドラフトアイテムを公開する
ドラフトアイテムを公開するには、PublishDraftItem を使用します。
private void PublishDraftItem()
{
PlayFabEconomyAPI.PublishDraftItem(new PublishDraftItemRequest
{
Id = "f464bc98-09ae-4bc8-a218-3a6100b6755e"
}, result =>
{
Debug.Log("下書きアイテムの公開成功");
}, error =>
{
Debug.Log(error.GenerateErrorReport());
});
}
ID は固定文字列を指定していますが、実際には GetEntityDraftItems で取得した ID をもとに渡してあげるといいでしょう。
実行すると以下のログが出力されます。
公開された UGC アイテムを確認する
[エコノミー] -> [カタログ(プレビュー)]より、UGC アイテムの一覧を確認できます。
先ほどプログラムから作成したアイテムも表示されていますね。
中身を見てみると、多くのプロパティが用意されています。
プログラムから指定したとおりに設定されていることがわかります。
下の方にいくと、ファイルや画像の指定ができます。
ブラウザ上からのアップロードは簡単ですが、プログラムからのアップロードは難易度が高いので、本記事では触れませんでした。
最後に
UGCのドラフトを作成して公開する手順について解説をしてきました。
本記事では触れなかったファイルのアップロードについては、実運用では必須になると思うので、いろいろと調べて別途まとめようと思います。
API リファレンスもまだ整備されていないようで、現時点の情報はかなり少なく、使うハードルは高いです。
だからこそ初めに調べて記事にすることで、他の人が楽になればいいなと考えています。
本記事が UGC を使うきっかけになれば幸いです。
PlayFab のことをもっと皆さんに知ってもらいたくて、合計500ページ以上にもなる書籍を5冊に分けて執筆しました。
私の知識をすべて詰め込んでいるので、ゲーム開発をさらに加速させたい方はぜひご覧ください。