9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-06-27

前書き

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でも必須なギフト機能をこんなにお手軽に使うことができました。
こんな機能が無料で使えるなんて素晴らしいですね。

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

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?