# 熱心なプレイヤーに対する広告頻度の削減

> Adjust ad frequency for specific player groups using Game Overrides and Remote Config.

## シナリオ##scenario

このドキュメントでは、以下を示すサンプルゲームの使用方法を説明します。

* キャラクターが削除された ("死亡した") タイミングで、プレイヤーに広告を表示する方法。
* 熱心なプレイヤーをターゲットにする方法。
* 熱心なプレイヤーに表示する広告の頻度を変更する方法 (熱心なプレイヤーとは過去 7 日間に毎日プレイしたプレイヤー)。

Unity プロジェクト "Platformer Microgame" を使用しますが、このユースケースは他のゲームにも適用できます。

## 要件##requirements

* Unity 2019.4 以降
* Unity Ads\*
* Authentication
* Remote Config
* Unity Analytics ベータ版へのサインアップ

**ノート**: この例では Unity Ads について説明しません。ただし、事前作成済みのクラス内で ShowAd 関数を呼び出すことができます。[Unity の広告](https://unityads.unity3d.com/) を参照してください。

## 手順##instructions

以下に手順の概要を示します。各手順の詳細は下で説明します。

1. **Authentication、Remote Config**、および **Analytics** をインストールします。
2. **Unity エディター** でゲームを Analytics にリンクします。
3. **Remote Config キー** を初期値で設定します。
4. ゲームで Remote Config から値を取得します。
5. 広告を表示するタイミングを決定します。
6. Override を設定して、オーディエンス用に Remote Config キーを調整します。

### Analytics、Authentication、Remote Config パッケージのインストール##install-analytics-authentication-and-remote-config-packages

Unity Dashboard にログインし、このユースケースに必要なパッケージ (Analytics、Authentication、Remote Config) を探します。


**Frame:**
![](/api/media?file=/game-overrides/media/images/download-package.png)

各パッケージをダウンロードしてインストールします。パッケージを直接プロジェクトの PACKAGES フォルダーに追加します。manifest.json ファイルを開き、以下を依存関係に追加します。

```plaintext
"com.unity.services.authentication": "1.0.0-pre.4",
"com.unity.services.analytics": "3.0.0-pre.2",
"com.unity.remote-config": "3.0.0-pre.3"
```

### ゲームのリンク##link-your-game

Unity エディターで **Edit** (編集) > **Project Settings** (プロジェクト設定) > **Services** (サービス) をクリックします。適切なプロジェクトを選択してリンクします。これによりプロジェクトがダッシュボードにリンクされます。

### Remote Config キーの設定##set-up-a-remote-config-key

Remote Config キーを設定するには、ダッシュボードから行う方法と、エディターから行う方法があります。

Unity Dashboard で、Remote Config の **Config** (設定) ページに移動します。このページにはサイドバーの **LiveOps** の下からアクセスします。

熱心なプレイヤー用に変更する設定キーを追加するには、以下の手順を実行します。

1. **Add Key** (キーの追加) をクリックします。
2. キー名 *adFrequency* を入力します。
3. *Int* 型を選択し、値 1 を入力します。
4. **Save** (保存) をクリックします。

これがすべてのプレイヤーの初期値になります。


**Frame:**
![](/api/media?file=/game-overrides/media/images/config-values.png)

代わりに、Unity エディターでこれらの設定値を更新することもできます。メニューバーで **Window** (ウィンドウ) > **Remote Config** の順にクリックします。これには、ダッシュボードに似た編集パネルがあります。

### ゲームの設定##setting-up-your-game

以下のコードを使用して、Remote Config から adFrequency データを取得します。このコードをシーン内の空のオブジェクトにアタッチします。

```cs
using Unity.RemoteConfig;
using Unity.Services.Authentication;
using Unity.Services.Core;
using UnityEngine;
public class UGS : MonoBehaviour
{
 
    public struct userAttributes { }
    public struct appAttributes { }
 
    public int adFrequency = 1; //Default is 1 ad on death
 
    async void Start()
    {
 
        await UnityServices.InitializeAsync();
        // remote config requires authentication for managing environment information
        if (!AuthenticationService.Instance.IsSignedIn)
        {
            await AuthenticationService.Instance.SignInAnonymouslyAsync();
        }
        ConfigManager.FetchCompleted += ConfigManager_FetchCompleted;
        ConfigManager.FetchConfigs(new userAttributes(), new appAttributes());
    }
   
    void ConfigManager_FetchCompleted(ConfigResponse configResponse)
    {
 
        switch (configResponse.requestOrigin)
        {
            case ConfigOrigin.Default:
                Debug.Log("Default values will be returned");
                break;
            case ConfigOrigin.Cached:
                Debug.Log("Cached values loaded");
                break;
            case ConfigOrigin.Remote:
                Debug.Log("Remote Values loaded");
                adFrequency = ConfigManager.appConfig.GetInt("adFrequency");
                break;
        }
    }
}
```

オブジェクトのロード時に、匿名ユーザーが初期化されます。これで Remote Config から **adFrequency** の設定値を取得できました。

例えば、*adFrequency* 値を 3 に変更すると、プレイヤーが 3 回死亡するごとに、またはそのレベルで 3 回失敗するごとに広告が表示されます。

死亡ロジックは、プレイヤーの死亡回数をカウントします。死亡カウントが頻度と同じ数になると広告が表示されます。同じ数ではない場合、広告は表示されません。

```cs
   countDeath++;
    if(ugs.adFrequency == countDeath)
    {
        countDeath = 0;
        PlayerPrefs.SetInt("countDeathForAds",countDeath);
        ads.ShowAd();
    }
```

### Override の設定##setting-up-an-override

初期設定は、上の手順の後に行います。

この例の目的は、熱心なプレイヤーをターゲットとする Override を作成し、adFrequency を小さくして、3 回死亡するごとに広告を表示することです。熱心でないプレイヤーには、引き続き死亡するたびに広告を表示します。

横のナビゲーションの **LiveOps** にある **Game Overrides** の **Overview** (概要) に移動します。

1. **Create Override** (Override の作成) をクリックします。

2. Override の **名前** を入力し、**Next** (次へ) をクリックします。

3. **Stateful Audiences** (ステートフルなオーディエンス) をクリックし、事前定義されたオーディエンス "Engaged Players" (熱心なプレイヤー) を選択して **Next** (次へ) をクリックします。

   1. **ノート**: ステートフルなオーディエンスを有効にするには、Unity Analytics がインストールされている必要があります。

4. **Choose Content Type** (コンテンツタイプの選択) をクリックし、**Config Overrides** (設定のオーバーライド) を選択して **Done** (完了) をクリックします。

5. **Key Name** (キー名) ドロップダウンから **adFrequency** を選択し、値 **3** を入力して **Next** (次へ) をクリックします。


   **Frame:**
   ![](/api/media?file=/game-overrides/media/images/ad-frequency.png)

6. Override を即座に、無期限に、優先度中で実行するようスケジュールし、**Finish** (終了) をクリックします。優先度を調整することで Override 間に発生する可能性がある競合を管理できます。

7. 変更を確認して **Enable** (有効) をクリックします。

これで Override がアクティブになり、熱心なプレイヤーは 3 回死亡するごとに広告を受け取るようになります。

質問がある場合は、[サポートチケット](https://support.unity.com/) を開いてください。
