Help us understand the problem. What is going on with this article?

Azure PlayFabのアクションとルールを使って自動的にアイテムを配布してみた

More than 1 year has passed since last update.

まえがき

ゲーム内でユーザーのランクが上がったりクエストを達成したタイミングで、報酬としてアイテムや魔法石を配布したいことがあると思います。

PlayFab の アクションとルール を使うとほぼノンコーディングで実現できるようなので試してみました。

成果物

以下のように、ゲームプレイ開始時やユーザーのランクが上がったタイミングで報酬を配ることができました。
image.png

手順

1. 新しいランキングを作成する

ユーザーのランクを統計情報として使用するために新しいランキングを作成します。
image.png

2. 新しいコンテナーを作成する

報酬はインベントリに直接付与せず、一旦はギフトとして配布して、ギフトを開くと複数のアイテムや通貨が獲得できることが一般的だと思います。
PlayFab ではコンテナーを使うことでそのような仕組みを実現できます。
image.png

3. アクションとルールを設定する

Client や Server から API を使って PlayFab にアクセスすると、その操作に応じたイベントが発生します。
今回は統計情報の更新のイベントをトリガーにするため、イベントタイプを com.playfab.player_statistic_changed とします。

条件の項目では StatisticName と StatisticPreviousValue を絞り込みます。
これによりランクが9から10に上がったイベントだけをトリガーにしてアクションを実行できるようになります。

最後にアクションの項目で先に作っておいたコンテナーを付与するように設定します。
image.png

4. ゲーム内から統計情報を更新する

ユーザーのランクが上がったタイミングで PlayFab の API を呼び、統計情報を更新します。
例えば Unity から PlayFab の API を直接呼ぶ場合は以下のようなコードになります。

    var statistics = new List<StatisticUpdate> { new StatisticUpdate { StatisticName = "Rank", Value = 1 } };
    var request = new UpdatePlayerStatisticsRequest { Statistics = statistics };

    PlayFabClientAPI.UpdatePlayerStatistics(
        request,
        response => Debug.Log("成功したときの処理"),
        error => Debug.LogError("失敗したときの処理"));

1~3までの設定とこのコードだけでユーザーのランクが上がったタイミングで報酬を配ることができました。
とてもお手軽ですね。

ちなみに PlayFab は統計情報を Unity などの Client から直接送信することをデフォルト設定では禁止しています。
趣味の個人制作などでチート対策を気にしない場合は、GameManager で設定を変更して許可することができます。
image.png

その他

アクションとルールのトリガーにできるイベントは様々なタイプがあります。
例えば com.playfab.player_created をトリガーにすると、アカウントが作成されたことをトリガーにして初期アイテムを配布したりすることが可能です。
PlayFab の殆どの挙動をトリガーできると思いますので、目的に応じたタイプを探してみてください。
また、目的に合うものがなければ独自のイベントを仕込んでそれをトリガーにすることも可能です。

またアクションの種類も様々な種類があり、アイテムを配布刷ること以外にはプッシュ通知を送信したり、自分で定義したFunction(CloudScript)を実行したりすることも可能です。

とても便利な アクションとルール ですが、無料の Essentials プランでは3個までしか作ることができません。
次に安い IndieStudio プラン(月額$99)なら100個まで作ることが可能です。

月額$99は個人開発者には安くない金額ですが、IndieStudio プランでも 1000MAU までは請求が発生しないとのことですので、PlayFab を試してみるときはとりあえず IndieStudio プランにしてしまうのも良いかもしれませんね。

image.png

参考にしたドキュメント

アクションとルール

_y_minami
C# .NET Unity Azureが好きでその辺りのお仕事をしてます。 趣味はゲーム制作とお菓子作りと紅茶。 日本紅茶協会認定ティーアドバイザー。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした