使用 Firebase 遠端設定,為 Unity 遊戲導入 A/B 版本測試

1. 簡介

在本程式碼研究室中,您將瞭解如何使用 A/B 測試,為範例遊戲「MechaHamster:Level Up with Firebase edition」建立遠端設定實驗。您已在「使用 Firebase 遠端設定功能為遊戲加入插碼」中修改這個遊戲。

透過遠端設定進行 A/B 測試,可讓您先針對特定目標對象測試應用程式 UI、功能或參與度廣告活動的變更,再向更廣泛的目標對象推出。您也可以根據實驗結果執行下列操作:

  • 判斷哪些參數值變體可改善收益和留存率等主要指標。
  • 瞭解哪些使用者子群組偏好哪些變體。
  • 收集及儲存實驗資料,進一步分析設定不同參數值的效果。

這就是 A/B 測試的本質:您可以使用為遠端設定建立的程式碼,根據遠端設定條件 (包括 Google Analytics 使用者屬性)、推出百分比、Analytics 轉換事件,以及這些條件的組合,啟動實驗來控制用戶端收到的值。

首先,您要根據使用者動作設定使用者屬性,實作條件來控管哪些使用者會納入實驗。接著,您將建立 A/B 測試實驗,使用 Google Analytics 使用者屬性判斷哪些用戶端會納入實驗。最後,您會使用這些資料進一步瞭解目標對象。

課程內容

  • 如何使用已插碼的遠端設定值設定 A/B 測試
  • 如何將 Google Analytics 使用者屬性做為 A/B 測試的加入條件

事前準備

事前準備

  • Unity 2019.1.0f1 以上版本,並支援 iOS 和/或 Android 建構作業

2. 啟用偵錯選單

專案中隱藏了「偵錯選單」,遊戲中也有存取這個選單的按鈕,但目前未啟用。您必須啟用按鈕,才能從 MainMenu 預先建構的物件存取按鈕。

  1. 在 Unity 編輯器中選取「Project」分頁標籤,然後在「Assets」下方,依序展開「Hamster」 >「Prefabs」 >「Menus」,並點選「MainMenu」

Unity 編輯器的「Project」分頁,顯示「Assets」。倉鼠、預先製作物、選單

  1. 在預先建構的階層中,找到名為「DebugMenuButton」的已停用子物件,然後點選該物件,在「檢查器」分頁中開啟。

Unity 編輯器顯示主選單,且 DebugMenu 已停用

  1. 在「檢查器」分頁中,勾選左上角文字欄位旁邊的方塊,啟用「DebugMenuButton」

DebugMenuButton 的「檢查工具」分頁,附有核取方塊

  1. 儲存預製物件。

在編輯器或裝置上執行遊戲時,應該就能存取選單。

3. 啟用「遠端設定」子選單

  1. 在 Unity 編輯器的「Project」分頁中,依序展開「Assets」 >「Hamster」 >「Prefabs」 >「Menus」,然後按兩下「DebugMenu」物件,在編輯器的「Hierarchy」分頁中開啟。

    DebugMenu 項目巢狀結構位於 Assets、\nHamster、Prefabs、Menus 底下
  2. 在「Hierarchy」分頁中,展開階層並點選「DebugMenu」>「Panel」下方的子物件,該物件標示為「Remote Config Actions」

遠端設定動作巢狀結構位於\nCanvas、DebugMenu 下方

  1. 在 Unity 的「Inspector」分頁中,勾選含有物件名稱的文字欄位左側方塊,啟用「Remote Config Actions」

Unity 編輯器,DebugMenu 底下已啟用「Actions」面板

這有兩個名為「Set Bored Of Subtitle」和「Set Enjoys Subtitle」的 GameObject 子項,兩者都設定為呼叫 DebugMenu.cs 中現有但未實作的方法。

4. 將字幕覆寫設定重設為應用程式內預設值

先前的程式碼研究室中,您以 JSON 格式覆寫了參數的預設值,並使用條件提供不同變體。在本程式碼研究室中,您將刪除建立的條件,重新導入應用程式內預設值,並只使用 A/B 測試結果覆寫該值。

如要重新啟用應用程式內預設值,請按照下列步驟操作:

  1. 開啟 Firebase 控制台中的「遠端設定」頁面,然後按一下 subtitle_override 參數旁邊的鉛筆圖示,開啟「編輯參數」側邊面板。
  2. 按一下條件旁的「X」圖示即可刪除條件。
  3. 針對其餘預設值,啟用「使用應用程式內預設值」切換鈕。

從遠端設定參數編輯器刪除條件

  1. 按一下「儲存」儲存變更,然後按一下「發布變更」發布變更。遠端設定頁面上的「發布變更」選項

5. 在偵錯函式中設定使用者屬性

現在,您要為 DebugMenu.cs 中一些預先設定但未實作的 Google Analytics 函式編寫函式主體 (位於「Assets」>「Hamster」>「Scripts」>「States」)。

這些函式會設定使用者屬性,用來描述使用者區隔,並記錄使用者對遊戲副標題的感受。

DebugMenu.cs 中找出 SetUserBoredOfSubtitleSetUserEnjoysSubtitle 的現有版本,然後按照下列方式覆寫這些版本,即可實作 SetUserBoredOfSubtitleSetUserEnjoysSubtitle

void SetUserBoredOfSubtitle()
{
  Firebase.Analytics.FirebaseAnalytics.SetUserProperty("subtitle_sentiment", "bored");
}
void SetUserEnjoysSubtitle()
{
  Firebase.Analytics.FirebaseAnalytics.SetUserProperty("subtitle_sentiment", "enjoys");
}

如果應用程式已正確設定 Google Analytics,您可以呼叫其中一個函式,讓遠端設定的條件使用該屬性。如要從行動裝置呼叫 SetUserBoredOfSubtitle,請啟動遊戲並在主選單中按下「Debug Menu」按鈕,然後按下「Set Bored of Subtitle」

6. 建立自訂維度

接著,為 subtitle_override 設定各種字幕變體,看看哪種字幕效果最好。但在 A/B 測試中,您只會向對目前副標題感到「無聊」(記錄在 subtitle_sentiment 中) 的使用者放送這些變化版本。

您將使用自訂維度,在 Analytics 事件中建立及追蹤自訂參數。詳情請參閱「自訂維度和指標」一文。

如要建立新的自訂維度,請按照下列步驟操作:

  1. 開啟 Firebase 控制台,展開「Analytics」(數據分析) 選單,然後選取「Custom definitions」(自訂定義)
  2. 在「自訂定義」頁面中,按一下「建立自訂維度」
  3. 在「新增自訂維度」視窗中,將維度名稱設為「Subtitle Sentiment」,然後從「範圍」下拉式選單中選取「使用者」
  4. 在「使用者屬性」欄位中,選取 subtitle_sentiment.

7. 設定 A/B 測試實驗

接著,建立 A/B 測試實驗,為 subtitle_override 設定不同值,相互測試以盡量提高 2 到 3 天的使用者留存率。

  1. 首先,在 Firebase 控制台的遠端設定頁面,選取 subtitle_override 參數的「編輯」

遠端設定頁面上的 subtitle_override 參數,顯示「編輯」選項。

  1. 在隨即顯示的「編輯參數」對話方塊中,按一下「新增」

遠端設定「編輯參數」頁面上的「新增實驗」選項。

  1. 在隨即顯示的清單中,選取「實驗」

遠端設定參數頁面:新增實驗

  1. 輸入實驗名稱和說明。

「實驗名稱和說明」部分

  1. 接著選擇指定條件。首先,請從下拉式選單中選取應用程式。

A/B 測試設定的「指定目標」步驟,並已選取應用程式

  1. 接著按一下「And」新增條件,然後選取「User Property」並選擇 subtitle_sentiment。如果沒有顯示,請手動輸入。
  2. 由於您只想為目前字幕情緒包含「無聊」的使用者設定字幕,請選擇「包含」並輸入 bored
  3. 您可以選擇向符合上述條件的目標對象顯示測試的百分比。選取「100%」,避免隨機性,方便控管。

A/B 測試指定目標部分,並選取「subtitle_sentiment」

  1. 接著,選取測試要盡量提升的目標。選取「保留 (2-3 天)」

「A/B 測試目標」部分

  1. 接著設定實驗參數,並建立不同的字幕變化版本。這些變體是 A/B 測試會向含有「bored」subtitle_sentiment的使用者提供的不同值,而 A/B 測試會判斷哪個變體最能提高留存率。
  2. 請為變體 A 輸入下列參數值:
    {"text":"A: A game about a mechanical hamster","fontSize":8,"textColor":{"r":0.0,"g":255.0,"b":0.0,"a":255.0}}
    
  3. 請為 B 變數輸入下列參數值:
    {"text":"B: A game about a mechanical hamster","fontSize":14,"textColor":{"r":255.0,"g":0.0,"b":0.0,"a":255.0}}
    
  4. 請使用整數設定變體比例,如下所示:
    • 基準:1
    • 版本 A:100
    • 版本 B:100
    這樣一來,基準版本的總權重為 0.5%,變化版本 A 和 B 的總權重則分別為 49.8%。「變化版本權重設定」部分這些變化版本會指定,每 201 次中,A/B 測試會向對字幕感到無聊的使用者提供預設值,但 200/201 次會提供兩個新值之一,並覆寫片頭畫面。
  5. 按一下「開始實驗」儲存並提交,然後在確認彈出式視窗中按一下「開始」按一下「開始」即可啟動實驗

8. 執行「設定使用者屬性」方法並重新整理

您現在已設定各種使用者屬性,可用於引導遊戲的邏輯或呈現方式。

如果您先前未執行 SetUserProperty 方法或已將其設為 enjoys,開啟遊戲時仍應會看到預設字幕。

如果已設為 bored (重新擷取前),您應該會看到其中一個新值,比例約為 50/50。

裝置一旦加入 A/B 測試實驗,從該實驗收到的值就不會變更,且每次安裝都會保留。因此,如要接收其他實驗值,您必須重新安裝遊戲到同一部裝置/模擬器,或是安裝遊戲到新的裝置/模擬器,藉此建立新的安裝。

在針對使用者群組進行的實際 A/B 測試中,您應為基準線和其他變體設定類似的權重。但在這個情況下,您會指派非常傾斜的機率,以驗證實驗是否正常運作。如果 (在 1/201 案例中) 仍收到預設值,請嘗試將遊戲重新安裝到裝置/模擬器。

此外,將使用者屬性切換回 enjoys不會」將值切換回基準,但您可以切換至 enjoys 並重新安裝,藉此達成目的。

9. 恭喜!

您已使用遠端設定 A/B 測試,實驗不同的遠端設定值,並判斷各值對 Analytics 指標的影響。

涵蓋內容

  • 如何使用已插碼的遠端設定值設定 A/B 測試
  • 如何將 Google Analytics 使用者屬性做為 A/B 測試實驗的納入條件

後續步驟

實驗結束後,您可以從專案中的實驗清單選取實驗,決定如何處理。您要選擇其中一個做為「勝出」組合,還是要進行更多實驗?