Game Overrides と Settings
Unity Remote Config は、Game Overrides (旧称 Campaigns) を使用することにより、特定のユーザーグループをターゲットにして、グループごとに異なる設定を提供します。Game Overrides は Settings に関連付けられており、それをゲームコード内の変数にマップすることで、Game Override のオーディエンス条件が満たされた場合に、その初期値がオーバーライドされるようにします。
ゲームを設計するときや新しくデプロイする前には、Remote Config 設定を早期に計画しておきましょう。Unity では、非アクティブな Remote Config 設定を最初のデプロイに含めておくことで、自分のゲームがオーディエンスにどのように利用され、各種デバイスでどのように動作しているかを把握した時点で適用できるようにすることを推奨します。
Unity エディターで、Window (ウィンドウ) > Remote Config の順に選択して Remote Config ウィンドウを開き、Settings の操作を開始します。
Remote Config を設定するには、Remote Config ウィンドウを使用します。Game Overrides は、Open Dashboard ボタンからアクセスできるウェブダッシュボードで設定できます。Game Overrides では、Settings を適用するのに使用する条件やプレイヤーセグメントを決めます。デフォルトでは、Settings Config という 1 つの設定から開始します。この設定には、優先度が高い アクティブな Game Override が適用されない限りすべてのユーザーに適用される、デフォルトの Settings が含まれています。
重要: 環境 ごとに固有の Game Overrides セットがあります。ゲームの Game Overrides を設定する前に、Remote Config ウィンドウで正しい Remote Config 環境を選択していることを確認してください。
Settings はキーと値のペアです。キー名をゲームコード内の変数にマップすることになるため、コードを変更することなく値を動的に変更できます。
新しい Settings の追加
デフォルトの Settings Config 設定には、特定の環境用に作成したすべての Settings が含まれます。新しい Settings を作成するには、Settings Config 設定を強調表示して、右側のパネルの下部にある Add Setting ボタンをクリックします。
ノート: ゲームコードで Settings を使用できる場所がエディターなので、エディター内で Settings を作成する必要があります。ただし、ゲームバイナリ内に Settings を作成した後は、Remote Config REST API や Remote Config ウェブダッシュボードを使用して更新することもできます。詳細については、インターフェース に関するページを参照してください。
各 Settings は、以下の Key、Type、Value から構成されます。
パラメーター | 説明 | 例 |
---|---|---|
Key | 以下の Game Overrides に従わなければならない Settings の名前。
|
|
Type | Settings 値の C# 変数データ型。サポート対象の型には、以下があります。
|
|
Value | 以下の Game Overrides に従わなければならない、この Settings の値。
|
|
新しい Game Overrides の追加
新しい Remote Config Game Override を作成するには、Open Dashboard ボタンを押します。そうすると、ウェブブラウザーが開き、Remote Config ページに移動するので、View Overrides (オーバーライドを表示) ボタン、Create Override (オーバーライドを作成) の順にクリックします。各 Game Override には 5 つのパラメーターがあり、詳細は以下で説明します。
- Name (名前)
- Targeting Strategy (ターゲティング戦略)
- Condition (条件)
- Rollout Percentage (ロールアウト率)
- Content Type (コンテンツタイプ)
- Start Date and Time (開始日時)
- End Date and Time (終了日時)
Name
Name は Game Override の名前です。例えば、Game Override の難易度曲線なら level_1_enemies
、季節イベントなら halloween_event
というような名前を付けることができます。
Targeting Strategy
Targeting Strategy では、Game Override のオーディエンスの種類を定義します。Stateful
にすれば、"All Spenders" (すべての課金プレイヤー) や "Existing Players" (既存プレイヤー) などのオーディエンスを選択でき、Stateless
にすれば、Condition
に基づいたターゲットオーディエンスを定義できます。
Condition
Condition は、コンテキスト依存データ属性の JEXL 式 (以下の JEXL のサポート セクションを参照) であり、Game Override を適用したいオーディエンスを定義するために使用します。複数の条件を使用してこのセグメントを定義できます。Remote Config では、現時点で以下の 3 つの属性カテゴリがサポートされています。
user カテゴリには、ユーザーを表す開発者定義のカスタム属性 (例えば、サブスクライバーのステータス、名前、年齢など) があり、それを RemoteConfigService.Instance.FetchConfigs<T, T2>(T userAttributes, T2 appAttributes) に渡す必要があります。
ノート:
SetCustomUserId
を使用すると、渡した ID が自動的にuser
属性にcustomUserId
としてアタッチされます。app カテゴリには、アプリケーションを表す開発者定義のカスタム属性 (例えば、接続ステータス、アプリケーションのバージョン、現在のレベルなど) があり、それを RemoteConfigService.Instance.FetchConfigs<T, T2>(T userAttributes, T2 appAttributes) に渡す必要があります。
unity カテゴリには、以下の表で詳しく説明する事前定義済みの属性があります。
属性 | 説明 | 例 |
---|---|---|
unity.appBuildVersion | アプリケーションが実行されているビルド番号 (これをエディターで設定するには、Edit (編集) > Project Settings (プロジェクト設定) > Player (プレイヤー) の順に移動します)。 | unity.appBuildVersion == '1' |
unity.appVersion | アプリケーションが実行されているバージョン (これをエディターで設定するには、Edit (編集) > Project Settings (プロジェクト設定) > Player (プレイヤー) の順に移動します)。 | unity.appVersion == '1.0' |
unity.cpu | CPU プロセッサーの名前。 | unity.cpu == 'Intel(R) Core(TM) i7-7920 HQ CPU @ 3.10GHz' |
unity.cpuFrequency | アプリケーションを実行しているデバイスのプロセッサー周波数 (MHz)。 | unity.cpuFrequency >= 3100 |
unity.country | 該当する国。この属性には、ISO 3166-1 alpha2 国コードが使用されます。 カスタム属性の定義に関する情報については、コードの統合 に関するドキュメントを参照してください。 | unity.country == 'US' |
unity.language | 該当する言語。この属性には、ISO 639-1 言語コードが使用されます。 カスタム属性の定義に関する情報については、コードの統合 に関するドキュメントを参照してください。 | unity.language == 'en' |
unity.osVersion | アプリケーションを実行しているデバイスの OS バージョン。 | unity.osVersion == 'Mac OS X 10.14.4' |
unity.platform | 該当するデバイスまたはプラットフォーム。以下の値が有効です。
| unity.platform == 'iOS' |
unity.timeSinceStart | アプリケーションのセッションが開始してから経過した時間 (ミリ秒)。 | unity.timeSinceStart >= 60000 |
unity.graphicsDeviceVendor | ユーザーのグラフィックスカードのベンダー。 | unity.graphicsDeviceVendor == 'ATI Technologies Inc.' |
unity.ram | デバイス上の RAM メモリの容量 (MB)。 | unity.ram >= 16384 |
unity.model | デバイスのモデル。 | unity.model == "LGE Nexus 5" または unity.model.contains("Nexus") |
ノート: 一覧表の unity
属性は変更される可能性があります。最新の全属性リストについては、REST API のドキュメント を参照してください。
例えば、スコアが 10 を上回るユーザーをターゲットとする Game Override を定義する場合は、ドット表記法を使用して app
コンテキストの score
プロパティを定義できます。
app.score >= 10
また、同じ Game Override 内で複数の属性を参照することもできます。
user.score >= 10 && app.level == 5
すべての条件に一致し、常に適用される Game Override を定義するには、単純に true
を入力します。
JEXL のサポート
Remote Config では、Java Expression Language (JEXL) 仕様 がサポートされていますが、以下のような例外が一部あります。
- Remote Config では式のみがサポートされます。
- Remote Config ではスクリプトはサポートされません。
- Remote Config では現時点で関数も条件式もサポートされません。
- Remote Config では
&&
および||
ステートメントを使用した複数の条件がサポートされますが、JEXL 文字列は 500 文字以下に制限されます。
ノート: 属性のネスト (例えば、app.level1.score
) は行えません。無効な JEXL 文字列を使用したり、Condition フィールドを空のままにしたりすると、エラーが発生します。
Rollout Percentage
Rollout Percentage では、この Game Override に従うユーザーベースの割合を決めます。値が 100 未満の場合は、Unity が Game Override をその割合のプレイヤーにユーザー ID ベースでランダムに割り当てます。プレイヤーごとに体験が異なる可能性はありますが、各プレイヤーの体験はプレイセッション全体にわたって一貫したものになります。このパラメーターは、分析データと組み合わせて結果を解析する場合に特に役立ちます。
Content Type
利用するサービスによっては、Remote Config によって使用される Config Overrides
、Economy サービスによって使用される Currency
や Inventor Item
など、特定の Game Override 用に選択できるさまざまなコンテンツタイプがあります。
Start Date and Time
Game Override がいつ有効になるかを決める開始日時を、任意で指定できます。タイムスタンプは ISO 8601 UTC 形式 (YYYY-MM-DDThh:mm:ssZ
) の文字列で表されます。値を指定しない場合、Game Override は アクティブ化 の時点ですぐに有効になります。
End Date and Time
Game Override がいつアクティブでなくなるかを決める終了日時を、任意で指定できます。タイムスタンプは ISO 8601 UTC 形式 (YYYY-MM-DDThh:mm:ssZ
) の文字列で表されます。値を指定しない場合、Game Override は 非アクティブ化 されるまで有効な状態を維持します。
Game Override への Settings の適用
Settings を Game Override に適用するには、目的の Game Override に移動して Content (コンテンツ) ブロックを 編集 し、使用できるすべての Settings のリストを表示します。
Game Overrides の有効化と無効化
Game Override のページ上部にあるボタンを使用すると、有効または無効にできます。
エディターウィンドウでの Settings の編集
エディターの Remote Config ウィンドウで Settings のキーと値を編集する場合は、必ず変更を保存して プッシュ してください。そうするまでは、設定がローカルにしか格納されません。Remote Config 環境を切り替える前に、必ず変更をプッシュして保存してください。
Settings を削除するには、削除する各要素の横にある ゴミ箱 ボタンをクリックします。なお、アクティブな Game Override が現在 Settings を使用している場合、その Settings は削除できません。
Game Overrides の優先順位付け
Game Override ごとに、重み付きの優先度値 Low
、Medium
または High
を割り当てることができます。優先度を数値で割り当てる場合は、Advanced Editor を介してその機能を使用し、1
(最高の優先度) から 1000
(最低の優先度) までの範囲内で割り当てることができます。それには、Game Override で Edit Schedule > Scheduling フィールドの順にクリックし、Use Advanced Editor を選択して整数値を入力します。
- 新しい Game Overrides と Settings Config 設定はデフォルトで
medium
に設定されます。 - 競合が生じた場合は、先に作成された Game Override が優先されます。
Game Overrides と Settings の更新
Game Override を編集して変更を保存するには、以下の手順に従ってください。
- Game Override を 無効 にします。
- エディターウィンドウまたはウェブ UI で目的のキー値フィールドを編集します。
- Push (プッシュ) ボタンをクリックして変更をリモートサービスに保存します。
- Pull (プル) ボタンをクリックして最新のリモート設定をサービスから取得します。
- 更新が適用されていることを確認します。
- Game Override を 有効 にします。
- もう一度プルし、Game Override が適切に更新されてアクティブになっていることを確認します。
ノート: リモートの変更をローカル設定にプルすると、サービスから取得した設定で上書きされてローカル設定が削除されます。
JSON 設定値
JSON 型の設定を使用している場合は、Remote Config ウィンドウに JSON Editor ダイアログが表示されます。これによって JSON 値のフォーマットと検証を行うことができます。このウィンドウを開くには、JSON 設定の Edit ボタンを押します。
有効ではあるもののフォーマットされていない JSON 値を入力すると、検証インジケーターが緑色になります。JSON オブジェクトを再フォーマットするには、Format ボタンを使用します。
JSON 値が無効な場合は、検証インジケーターが赤色になり、JSON オブジェクトを送信できません。
Select json object フィールドで JSON ファイルをロードできます (/Assets
フォルダーから使用できる場合)。ファイルを選択するには、フィールドの右にあるボタンをクリックします。
更新とクライアントセッション
設定への変更を反映させるために新しいバージョンのアプリケーションをデプロイする必要はありません。プレイヤーがアプリケーションの新しいセッションを開始するたびに、クライアントデバイスから Remote Config 設定の更新がリクエストされます。Remote Config では、ユーザーがアプリケーションを起動するか、アプリケーションがバックグラウンドに移行してから 30 分以上経過した後に再度開くと、新しいセッションになります。
クライアントがインターネットに接続されていないか、Remote Config サービスと通信できない場合、アプリケーションでは受信してキャッシュしておいた最新の設定が使用されます。
ノート: Remote Config サービスへの設定のリクエストは非同期プロセスであり、最初のシーンのロードが終わる前に完了しないことや、極端な場合、まったく完了しないこともあります。そのため、必ず妥当なデフォルト設定でゲームの変数を初期化してください。
コードの統合
Game Overrides と Settings を設定したら、ゲームコードに Remote Config を統合 します。