PlayFab では、UGC アイテムに対して評価とレビューができる仕組みが用意されています。
Amazon の「一般的な EC サイトにある口コミ」をイメージすると、わかりやすいかもしれません。
いいものであれば、どれだけいいものなのかを他の人に伝えられますよね。
逆にあまりよくないものであれば、改善点を伝えたりすることもできます。
評価やレビューの仕組みを導入することで、UGC を使用した機能が活発になることは間違いありません。
本記事では、UGC アイテムの評価とレビューをする方法について解説をしました。
コピペで動作確認できるコードもあるので、ぜひ一緒に手を動かしてみてください。
では、さっそく見ていきましょう。
UGCアイテムの評価とレビューをする方法
今回試したのは、以下の3つの機能です。
- アイテムのレビューを送信する
- アイテムのレビューを取得する
- 自分が投稿したレビューのみを取得する
ひとつずつ見ていきましょう。
アイテムのレビューを送信する
他の人の UGC アイテムに対して、自分のレビューを送信することができます。
アイテムのレビューをするには、ReviewItem を使用します。
private void ReviewItem()
{
PlayFabEconomyAPI.ReviewItem(new ReviewItemRequest
{
Id = "fcb0943a-7b22-47e6-b5bb-6d9808c4d2fb",
Review = new Review
{
ItemVersion = "1.0.2",
Title = "とてもいいです",
ReviewText = "使い勝手がとてもよく、最高でした!",
Rating = 4,
}
}, result =>
{
Debug.Log("アイテムのレビュー送信成功");
}, error =>
{
Debug.Log(error.GenerateErrorReport());
});
}
ID と Rating は必須で、あとのプロパティは任意です。
ちなみに制約として、ひとり1回しかレビューできないようになっています。
2回目以降は新規のレビューができるのではなく、レビュー済みの内容を更新する挙動になります。
現状、アイテムのレビュー内容を GameManager 上から確認することはできず、プログラムから取得して確認しなければなりません。
アイテムのレビューを取得する
アイテムのレビューを取得するには、GetItemReviews を使用します。
private void GetItemReviews()
{
PlayFabEconomyAPI.GetItemReviews(new GetItemReviewsRequest
{
Id = "fcb0943a-7b22-47e6-b5bb-6d9808c4d2fb"
}, result =>
{
Debug.Log("アイテムのレビュー取得成功");
int i = 1;
foreach (var review in result.Reviews)
{
var json = PluginManager
.GetPlugin<ISerializerPlugin>(PluginContract.PlayFab_Serializer)
.SerializeObject(review);
Debug.Log($"アイテム{i}個目");
Debug.Log(json);
i++;
}
}, error =>
{
Debug.Log(error.GenerateErrorReport());
});
}
アイテム ID を渡して実行するだけのシンプルな API ですね。
取得結果のプロパティの数が多いので、JSON 形式でログ出力してみました。
{
"HelpfulNegative": 0,
"HelpfulnessVotes": 0,
"HelpfulPositive": 0,
"IsInstalled": false,
"ItemId": "FCB0943A-7B22-47E6-B5BB-6D9808C4D2FB",
"ItemVersion": "1.0.2",
"Locale": "NEUTRAL",
"Rating": 5,
"ReviewerId": "title_player_account!D765EA5F69D2A5F9",
"ReviewId": "85734cf4-754c-858e-75a1-f45d4d9cba5d",
"ReviewText": "すばらしいです!",
"Submitted": "2021-12-22T12:55:25.403Z",
"Title": "Good!!"
}
{
"HelpfulNegative": 0,
"HelpfulnessVotes": 0,
"HelpfulPositive": 0,
"IsInstalled": false,
"ItemId": "FCB0943A-7B22-47E6-B5BB-6D9808C4D2FB",
"ItemVersion": "1.0.2",
"Locale": "NEUTRAL",
"Rating": 5,
"ReviewerId": "title_player_account!9CED3069C7EC37C0",
"ReviewId": "18a1e033-f4fa-3dfd-cad2-e42fcb2937ae",
"ReviewText": "使い勝手がとてもよく、最高でした!",
"Submitted": "2021-12-22T12:36:23.274Z",
"Title": "とてもいいです"
}
ReviewItem で送信した内容が反映されていることが確認できます。
アイテムに紐づくレビューなので、自分以外のレビューも取得されていることがわかります。
プロパティの名前だけ見てもよくわからないので、実際に想定される画面をもとにプロパティを付けて画像にまとめてみました。
かなりイメージがついたのではないでしょうか?
一般的なレビュー機能に必要な項目はひととおり揃っていますね。
ReviewItem を実行したときに、PlayFab のログが出力されませんでした。
PlayStream のイベントにも出ませんし、データエクスプローラーにも残りません。
パブリックプレビュー中だからかもしれませんが、実行したログは残って欲しいですね。
自分が投稿したレビューのみを取得する
先ほどはアイテムのレビューをすべて取得する方法でしたが、これだと大量のレビューが取得されてしまいます。
自分が投稿したレビューだけを取得するには、GetEntityItemReview を使用します。
private void GetEntityItemReview()
{
PlayFabEconomyAPI.GetEntityItemReview(new GetEntityItemReviewRequest
{
Id = "fcb0943a-7b22-47e6-b5bb-6d9808c4d2fb",
}, result =>
{
Debug.Log("自分のレビュー取得成功");
var json = PluginManager
.GetPlugin<ISerializerPlugin>(PluginContract.PlayFab_Serializer)
.SerializeObject(result.Review);
Debug.Log(json);
}, error =>
{
Debug.Log(error.GenerateErrorReport());
});
}
Id にアイテム ID を渡してあげることで、自分がレビューした内容のみ取得することができます。
ひとつのアイテムに対して1件しかレビューができないので、返り値としても1件のレビューとなります。
GetItemReviews では他の人のレビューも取得されていましたが、自分のレビューのみ取得されたのが確認できました。
{
"HelpfulNegative": 0,
"HelpfulnessVotes": 0,
"HelpfulPositive": 0,
"IsInstalled": false,
"ItemId": "fcb0943a-7b22-47e6-b5bb-6d9808c4d2fb",
"ItemVersion": "1.0.2",
"Locale": "NEUTRAL",
"Rating": 5,
"ReviewerId": "title_player_account!9CED3069C7EC37C0",
"ReviewId": "18a1e033-f4fa-3dfd-cad2-e42fcb2937ae",
"ReviewText": "使い勝手がとてもよく、最高でした!",
"Submitted": "2021-12-22T12:36:23.274Z",
"Title": "とてもいいです"
}
最後に
UGC アイテムの評価とレビューをする方法について解説をしました。
レビュー結果を表示する UI を整えてあげれば、口コミを含めた UGC 機能が実装できそうですね。
本記事を参考に、ぜひ試してみてください。
PlayFab のことをもっと皆さんに知ってもらいたくて、合計500ページ以上にもなる書籍を5冊に分けて執筆しました。
私の知識をすべて詰め込んでいるので、ゲーム開発をさらに加速させたい方はぜひご覧ください。