LoginSignup
6
2

More than 3 years have passed since last update.

Azure PlayFabでPlayStreamを使ってユーザーのBANを実装する

Last updated at Posted at 2019-09-09

まえがき

Azure PlayFab を使用すると、ユーザーの操作やステータスの変化が PlayStream イベントとして PlayFab に記録されます。

今回はこの PlayStream をフックしてユーザーの BAN を実装してみます。

シナリオ

ゲーム内通貨の無限増殖バグなどが利用されたことを想定して、所持通貨が 10,000,000 を超えたユーザーをリアルタイムに BAN してみます。
image.png
※こんなものを実装するイメージです。

手順

1. 新しいルールを作成する

GameManager へログインし、 自動化 > ルール > 新しいルール を押します。
image.png

2. 名前、イベントタイプ、条件、アクションを設定する

それぞれの項目を設定します。

名前:
任意のわかりやすい名前を設定します。

イベントタイプ:
com.playfab.player_virtual_currency_balance_changed を選択します。

条件:
VirtualCurrencyName を選択して、チェックしたい通貨の名称を指定します。今回は GO (ゴールドの略)という通貨をチェック対象にします。
さらに AND 条件で VirtualCurrencyBalance を選択して、 BAN 対象の閾値を指定します。今回は 10,000,000 を閾値にします。

アクション:
種類プレイヤーをプレイ禁止にする を指定します。
禁止の理由にはわかりやすい任意のメッセージを入力します。

PlayFab 側の設定はこれで完了です。
簡単ですね。

image.png

3. Unity 側で BAN されている場合のエラーメッセージを表示する

ユーザーが BAN されている状態で PlayFab の API を呼び出した場合、AccountBanned というエラーコードが返ってきます。

これを利用して例えば雑に IF 文を挟んでエラーメッセージを表示することができます。

        var request = new LoginWithCustomIDRequest { CustomId = ApplicationContext.PlayFab.PlayFabDebugUserId, CreateAccount = true };
        PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure);

        void OnLoginSuccess(LoginResult result)
        {
            // ログイン成功したときの処理
        }

        void OnLoginFailure(PlayFabError error)
        {
            // ログイン失敗したときの処理

            if (error.Error == PlayFabErrorCode.AccountBanned)
            {
                // BAN されているときの処理
            }
        }

4. 動作確認

ユーザーに 10,000,000 ゴールドを付与したところ、その瞬間に自動的に BAN されたことが PlayStream モニターで確認できました。
image.png

Unity 側でも意図したメッセージが表示されました。
image.png

あとがき

PlayFab の PlayStream は強力なので使いこなして行きたいですね。
実績解除やログイン報酬を配ったりもできますし、アウトゲームのロジックはこれにどんどん寄せて行きたいなと思います。

6
2
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
6
2