5
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Azure PlayFab上にテストユーザーを大量生成してギフトをさくっと一括配布してみた

前書き

PlayFab には スケジュール済みタスク という無料で使える便利な機能があります。
今回はこれを使ってゲーム内の全ユーザーにギフトを一括配布してみようと思います。

せっかくなので実運用を見据えて

  • 数千人規模に一括で配布して大丈夫なのか
  • 配布にどれくらいの時間がかかるのか

という点も検証してみます。

時間がない人のための結論

  • 1000ユーザーに2分でギフトを配れました。
  • 3000ユーザーには6分で配れたので件数と処理時間は比例しそうです。
  • ノンコーディングで簡単に使えて便利。とても良いです。

※ギフト配布はノンコーディングでできますが、ゲーム内でインベントリにアクセスするコードは必要です。

目次

  • コンソールアプリから PlayFab にアクセスする準備をする
  • ユーザーを PlayFab 上に大量生成してみる
  • GameManager で全ユーザーにギフトを配布してみる
  • さらに多くのユーザーにギフトを配布してみる

コンソールアプリから PlayFab にアクセスする準備をする

PlayFab に入門されたばかりの方は、Unity から SDK を使って PlayFab にアクセスする方が多いと思います。

ですが今回は Unity を使う必要はないので VisualStudio でコンソールアプリを作り、そちらから PlayFab にアクセスしてみます。

早速コンソールアプリ(.NET Core)のプロジェクトを作ります。
image.png

プロジェクトができたら NuGet から PlayFabAllSDK をインストールします。
image.png

これで準備は完了です。

ユーザーを PlayFab 上に大量生成してみる

Program.cs を雑に書き換えて1000ユーザー作ってみます。

using PlayFab;
using PlayFab.ClientModels;
using System;
using System.Threading.Tasks;

public static class Program
{
    static async Task Main(string[] args)
    {
        // TitleIdは自分のIDに書き換えてください
        PlayFabSettings.staticSettings.TitleId = "xxx";

        var createUserNum = 1000;

        for (int i = 0; i < createUserNum; i++)
        {
            var request = new LoginWithCustomIDRequest { CustomId = $"CustomID-{i}", CreateAccount = true };
            await PlayFabClientAPI.LoginWithCustomIDAsync(request);

            Console.WriteLine(i);
        }

        Console.WriteLine($"{createUserNum} user created !!");
        Console.ReadLine();
    }
}

実行して暫く待つと 1000 user created !! と表示されて処理が完了します。

GameManager を開いて、ユーザーが作成できたか確認してみましょう。
image.png
無事に1000人のユーザーが作成されていますね。

GameManager で全ユーザーにギフトを配布してみる

まずは新しいスケジュール済みタスクを登録します。

ボタンのテキストはスケーリング済みタスクになっていますが、気にしないでおきましょう。
image.png

ギフトを配るタスクの設定を行います。
配るアイテムなどを正しく設定したら保存して実行してみましょう。
image.png

このような画面に遷移します。
ステータスを見るとギフトを配布中であることがわかります。
image.png
ちなみに黒塗り部分はタスクを実行したユーザーの名前が表示されています。
こうした作業の記録が自動的に残るのも地味に嬉しいですね。

さて、2分ほど待つとステータスが成功に変わりました。
image.png

適当なユーザーのインベントリを開くと、ちゃんとギフトが届いていることがわかります。
image.png

とってもお手軽ですね!

ちなみに1度登録したタスクを再実行するときは、対象のタスクにチェックを入れて タスク実行 をワンぽちするだけです。
image.png
とってもお手軽ですね!(2回目)

さらに多くのユーザーにギフトを配布してみる

ユーザー数を約3000人に増やしてギフトを再度配布してみました。
image.png
実行時間は6分でした。

ユーザー数が3倍になったことで、時間も3倍かかっているようですね。
これ以降も件数と処理時間が比例するなら、ユーザー数が1万になると実行時間は20分程度になります。

これはもう少し早くなってほしいところですね。
でも有料プランならタスクの並列実行などもできるようなので、大きなタイトルを運用する場合は何かしらの対応手段はありそうです。

まとめ

カジュアルゲームでもソーシャルゲームでもMMOでも必須なギフト機能をこんなにお手軽に使うことができました。
こんな機能が無料で使えるなんて素晴らしいですね。

自分が制作中のゲームにも早速組み込んでみようと思います。

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
Sign upLogin
5
Help us understand the problem. What are the problem?